this关键字

上一篇 / 下一篇  2013-12-21 22:16:12 / 个人分类:java

本章目标51Testing软件测试网9~3H`)C&V)lQzv#C-c[C

 掌握this关键字的作用51Testing软件测试网X7X3m@ bK

 使用this调用其他构造方法51Testing软件测试网B&uI"GzuZ

 使用this表示当前对象51Testing软件测试网$X8O+VA m"@2kQ3[

 

(?3i Z jlmbk| E-@2]0

 

"PdE\D*j0

this构造函数

8JX!K9L&g lmc0

this()调用构造方法注意:

4It2_ M6AM/tl0

this()调用构造方法的语句只能放在构造方法的首行

c+C!J&W)SS4{0

 在使用this调用本类中其它构造的时候,至少有一个构造不用this调用的51Testing软件测试网NA0@`~7e$d!S|

 

T?d!i\[1yN"u0

    class Person{

1_ Q/~1\;r.?0P _0

        private String name ;     //姓名

.gG&R3W/fo*Hj,R0

        private int age ;    //年龄

u ^IP(h;ZNa I-e%e0

        public Person(){     //无参构造

}~8Yhq0

           this("luoriver",30) ;  //调用有两个参数的构造方法

F5n:w7Az;A0

           System.out.println("新对象实例化") ;

]3zo;^)m9PuJ0

        }

f7Ow7S4g5c0M0

       

X;~?&O Z3}/F0

        public Person(String name){

(Oy6U UL hA ]J0

            this() ;    //调用本类中的无参构造方法

pQ4jb0F]"G;Y G9\!@0

            this.name = name ;51Testing软件测试网;J8I{ N!m:M#~j

        }51Testing软件测试网6M{:Xv~U5Nl#o,IO

       51Testing软件测试网3Q h8GX:agX&Qy

        public Person(String name,int age){51Testing软件测试网zu#TmVZ~

            this.age = age ;    //为类中的age属性赋值

$yy D"Q"y0

        }51Testing软件测试网TQ_1H5O0a

       51Testing软件测试网S7rmLR.X-w*q ?|

        public String getInfo(){51Testing软件测试网)v@Kc v_

            return "姓名:" + name + ",年龄:" + age ;51Testing软件测试网(o _4B1vZ:vaZ-R

        }

/J OmN*k0

    }

6lM{GP2]a4s0

   

S4y i|P0

    public class ThisDemo05{

p[#VzT0

        public static void main(String args[]){

W0O&i}"Yzb1]%E j%j+y0

           Person per1 = new Person("张三",33) ;    //调用构造实例化对象

!icR__mq0o3L3G d0

           System.out.println(per1.getInfo()) ;    //取得信息

i%?4@(T Ab+I0

        }

3t|)w+D*T#Ht0

    }51Testing软件测试网 v&{3K:d.X

输出结果:

%Yz8VgYD5NNn8C0

ThisDemo05.java:14:错误:递归构造器调用51Testing软件测试网*s2B5~#~~i-H(H

        public Person(String name,int age){

{]"|mrv0

               ^

V ad-H:h;R\_)uTR2k0

1个错误51Testing软件测试网 T/t f&}8u1}

 51Testing软件测试网/\5`m$r#RZ] {0V

例子:51Testing软件测试网V1wS^ZQSIH

class Person{51Testing软件测试网6B#Gn3Jy+yel f[

        private String name ;     //姓名

,~,GN@|C'B0

        private int age ;    //年龄

V)l8E!b JWw}n:P0

        public Person(){     //无参构造51Testing软件测试网b7rE-_-p2S)HQT

           System.out.println("新对象实例化") ;51Testing软件测试网;Xh{hf+r8]r(J2P

        }

e]Su0b }w{&QvL0

       51Testing软件测试网2rp4gCS j.H(r zDG

        public Person(String name){

$@dSE4i3m0

            System.out.println("新对象实例化") ;51Testing软件测试网4bJ!l{~,[I

            this.name = name ;

XN0q1_ A|p,w1s0

        }51Testing软件测试网*h%C5V vZT3s

       

&i"c2fp0c0

        public Person(String name,int age){51Testing软件测试网TW!p?dQ%CQ

            this.name = name ; //为类中的name属性赋值51Testing软件测试网+p m8B-v;R!K^gm

            this.age = age ;    //为类中的age属性赋值51Testing软件测试网:l],|^n

        }51Testing软件测试网&? Z#e)N.e#zFb3PG+pP

       

:f1Z r&D-h C!S`0

        public String getInfo(){51Testing软件测试网w:N0}/S,qc

            return "姓名:" + name + ",年龄:" + age ;;

Bf;X.K(~ uVa0

        }51Testing软件测试网@H!UyAYi

    }

f1r$gq.lr _#K0

   

~%F0c@9bS9x%r0

    public class ThisDemo03{

T0I$L8W#P6S.G aq!ea0

        public static void main(String args[]){

X,m ^_}!C9v!_"@0

           Person per1 = new Person() ;    //调用构造实例化对象

{2|O!Y_*LS)o0

           System.out.println(per1.getInfo()) ;    //取得信息

Hu(fE.c3~Y0

        }51Testing软件测试网NYfuOr%IM

    }

#s ys/oF#i,f q0

 51Testing软件测试网i`a R Nu

class Person{51Testing软件测试网_;KR*H3\%W5[5sgC

        private String name ;     //姓名

:p W8vX(?#e f*n0

        private int age ;    //年龄51Testing软件测试网lecU~!aw

        public Person(){     //无参构造

h3|'`9w5E+Z5\0

           System.out.println("新对象实例化") ;51Testing软件测试网 ~$I+j9s!B#W BR

        }51Testing软件测试网7S,qmkz]8rk

       51Testing软件测试网U1Wm6G!J r:]c

        public Person(String name){

x(|ti\j,T0

            this() ;    //调用本类中的无参构造方法51Testing软件测试网{J E}ZT;Q)Q

            this.name = name ;51Testing软件测试网%h#Hy$|oon

        }51Testing软件测试网4O mmSPO_Y8RT

       51Testing软件测试网)Z#j0?+}:},m4m"o ^:G,l

        public Person(String name,int age){51Testing软件测试网ria0?2^fD OS.B5d

            this(name) ;    //调用有一个参数的构造方法

i*D1ks,xy/g0

            this.age = age ;    //为类中的age属性赋值

/F5{9ywnl.eT F0

        }51Testing软件测试网G5lwTXF5p

       

4ps Sz&lCO0

        public String getInfo(){

'ORw W(U3N/Yj4z)N F0

            return "姓名:" + name + ",年龄:" + age ;51Testing软件测试网Ww,N{~{-{4UJ

        }51Testing软件测试网8} M9Q/`tlR-@2V

    }

4A2uT&H-J7XW1b0

   51Testing软件测试网#Am%H5l)bu

    public class ThisDemo04{

k+?V'ozBul4~0

        public static void main(String args[]){51Testing软件测试网xF7o|Mb1~

           Person per1 = new Person("张三",33) ;    //调用构造实例化对象51Testing软件测试网KO?j5S;IA

           System.out.println(per1.getInfo()) ;    //取得信息51Testing软件测试网CY8}l LS]}G

        }

xCp2?/wG1X jS/|i0

    }51Testing软件测试网5rU {@9A*k'{[

输出结果:

&s0\8MT4tpe9E G0

新对象实例化51Testing软件测试网&_&G3tJE*l^^

姓名:张三,年龄:3351Testing软件测试网 V+USw2v$LVH

 51Testing软件测试网hx E WBX"OC+U

使用this表示当前对象

!H.f#C2P*DA} gZ7R^0

class Person{51Testing软件测试网'h,DM$Y X_C

        public String getInfo(){51Testing软件测试网 V+pY.r;u"TD

           System.out.println("Person-->" + this) ;

8pW)k,aEP.x&j*Sf0

            return null ;  //为了保证语法正确,返回null

z{;v[f0

        }

D7jF8?b0

    }51Testing软件测试网 \o N5Rz que

   

rY&KU h(_8u|*y0

    public class ThisDemo06{51Testing软件测试网&mt/lu/k4um Rj5j&J

        public static void main(String args[]){51Testing软件测试网4JC5}R+}]1XR

           Person per1 = new Person() ;    //调用构造实例化对象

5tN6w'Jk? Va u0

           Person per2 = new Person() ;    //调用构造实例化对象

JA,k8msj$y6xe0

           System.out.println(per1) ;    //取得信息

,fZz3w|9w!p6w e0

        }51Testing软件测试网N%_8P[ pc;m+E

    }51Testing软件测试网["HcObc+j4Hx"~

输出结果:51Testing软件测试网 ](_3k\!z

Person@6c10a23451Testing软件测试网j7HM6K4A W;e

 51Testing软件测试网&Q7\ Y#H,u1ih

  class Person{

4DO/n J5_Z0

        public String getInfo(){

b`E3X)U/p/r4N0

           System.out.println("Person-->" + this) ;51Testing软件测试网6SRkp C'S6a!?l

            return null ;  //为了保证语法正确,返回null

C7w-~*?ll+H(D5]0

        }51Testing软件测试网Xk@gc c

    }51Testing软件测试网7oul z7^/M%Hp j

   51Testing软件测试网$d,UdN2[mBBR

    public class ThisDemo06{51Testing软件测试网Db @R9[hG y9m {

        public static void main(String args[]){

q9{m;q7oM_M @0

           Person per1 = new Person() ;    //调用构造实例化对象51Testing软件测试网+cV qb0Tw!T+t$Fy.@T

           Person per2 = new Person() ;    //调用构造实例化对象51Testing软件测试网1OfS']vx"CV

           System.out.println("MAIN方法-->" + per1) ;    //直接打印对象51Testing软件测试网y~|;qE:va-^

           per1.getInfo() ;    //当前调用getInfo()方法的对象是per1

r$n4^aj/V,jY5Q0

           System.out.println("MAIN方法-->" + per2) ;    //直接打印对象51Testing软件测试网'\UA8lHoTMM

           per2.getInfo() ;    //当前调用getInfo()方法的对象是per251Testing软件测试网1mdIgK,sE [^4N

          

fW8b Q_#_h2H,W0

        }51Testing软件测试网\6ei$l6|Uw

    }51Testing软件测试网Ku `#P2b@({

输出结果:

r,pFP.`0

MAIN方法-->Person@38093b5951Testing软件测试网z;C&g3P/sgG

Person-->Person@38093b59

_ K[1ty k0

MAIN方法-->Person@66176ccc51Testing软件测试网 b.u#hApb.` \

Person-->Person@66176ccc

E'x'SG F5O0

 51Testing软件测试网"B*|*_)k\*Qu

 

1Twq%T.l0

this比较对象51Testing软件测试网+`8|+N _WL@%p

  class Person{

%Kzs+ll/B1a/e(uX0

        private String name ;   //姓名

xM$Ch9~E,^Y/[Z!l0

        private int age ;       //年龄51Testing软件测试网V4? I C/`:NP|

        public Person(String name,int age){

SK u.O ly2AK0

            this.setName(name) ;

dM"t ]}c,}E0

            this.setAge(age) ;

.dYeQzp]d0

        }51Testing软件测试网S8Afn6d8|LuN!J

       

A:c)QMmI4`0

        public void setName(String name){    //设置姓名

g~7xDT4u0

            this.name = name ;

w6S&@o W|6j0

        }

X+M7Bf,XPV!g0

       

:IexoY(r)l1]0

        public String getName(){

R7_"d$C UU kv0

            return this.name ;

k!@,Ea^{N#U:h.z4u5y0

        }

v-Q"e?&V K'\!~l0

       

Y%RT3Z9mN5w0

        public void setAge(int age){    //设置年龄51Testing软件测试网O7GDt6j,_

            this.age = age ;

(d!k+^h HM'}hE0

        }

'iZHv@C6q%YLWn0

       51Testing软件测试网5B dqL;pDe0uh

        public int getAge(){

;pHN1]H3}(ix0

            return this.age ;51Testing软件测试网;{A^.Bv e)j$Z

        }51Testing软件测试网l9b/|x-]5t

    }

P0r5Ip @+x0CD0

   

&R}!a`&kB2b;WBa0

    public class ThisDemo07{

;n/i.LB ~/fc"E SX0

        public static void main(String args[]){51Testing软件测试网2v*Zj4X/gYc

           Person per1 = new Person("张三",30) ;    //声明两个对象,内容完全相等

(P v4D^;h||*w0

           Person per2 = new Person("张三",30) ;    //调用构造实例化对象51Testing软件测试网$T*Q2F;[5W(w+r

          

/{3rN"H[0

           //直接在主方法中依次取得各属性进行比较51Testing软件测试网jE)^yX Z)r%V'Ap

           if(per1.getName().equals(per2.getName())&& per1.getAge()==per2.getAge()){51Testing软件测试网QU I[ ez~Y L

               System.out.println("两个对象相等") ;    

O/B#LFO0

           }else{

C8UN xs Tf0

               System.out.println("两个对象不相等") ;

F&S,k*Y;R0

           }

4Ae.~O-W.g:e0F0

        }51Testing软件测试网v7H%@ G8Z!be

    }51Testing软件测试网MW4U+FSC t)G

输出结果:51Testing软件测试网eF/GkXZ7T

两个对象相等

C-o@ \UL/p0

 51Testing软件测试网.s`:QZ lo

class Person{51Testing软件测试网l:s7jI-{~\%?

        private String name ;   //姓名

[ p _0@t `h\&j0

        private int age ;       //年龄51Testing软件测试网4^w4_QV#rfq4j

        public Person(String name,int age){

*o_-YI(v3|0

            this.setName(name) ;51Testing软件测试网 Y!O,`K1rW:V%f

            this.setAge(age) ;51Testing软件测试网4h,` Vw lB

        }

5tl R5G\;a)w y Y ^k1A0

       

V+i0F5v;l1D#\0

        public boolean compare(Person per){51Testing软件测试网e,{AL(B%K*b2`

            //调用此方法时里面存在两个对象:当前对象、传入对象

4gv9B ~ln!~&i3O|0

            Person p1 = this ;  //当前的对象,就表示per1

,yx:]Q T0

            Person p2 = per ;   //传递进来的对象,就表示per2

zMRj^E T$f"M+\0

            if(p1 == p2){    //判断是不是同一个对象,用地址比较

4|:F9HV(^0

                return true ;51Testing软件测试网j&` C*Lo

            }

K?QZ_.q0

            //之后分别判断每一个属性是否相等51Testing软件测试网9v [I+G8L+f

            if(p1.name.equals(p2.name)&&p1.age == p2.age){

;VlxGD0

               return true ;    //两个对象相等51Testing软件测试网@Fu'j OV

            }else{

d#e$DC*f mP2N0

                return false ; //两个对象不相等51Testing软件测试网7Fo h Q:f5c4ce

            }

vrv$XIV0

        }

p"y)f*n;KU3\F0

       

IzQ1vT0

        public void setName(String name){    //设置姓名51Testing软件测试网q [(C1e:_8Ei

            this.name = name ;

oW/i0d+y/z T0

        }51Testing软件测试网,Q'X"R3Rn1Y;o

       

9r"STzfG3@3OD[1|.a0

        public String getName(){

5~\DTQUo,@ \+q0

            return this.name ;51Testing软件测试网eZw,@E:NN

        }51Testing软件测试网-X6]Br'b"M

       51Testing软件测试网 lb"E0^y

        public void setAge(int age){    //设置年龄

BZx:F2m0

            this.age = age ;

M$pK8BoKO^0

        }51Testing软件测试网t#L3Q2c2} `

       51Testing软件测试网 Q%g9Qb"J8Bz

        public int getAge(){51Testing软件测试网!JU J'qm'K(] ? p

            return this.age ;

?j q!K:W0

        }51Testing软件测试网@+toc|

    }

2PYL%RF/V&P0

   

5w UJI#\y!@ W0

    public class ThisDemo08{51Testing软件测试网hA;BEp-nN'L

        public static void main(String args[]){

h)e.b okI B0

           Person per1 = new Person("张三",30) ;    //声明两个对象,内容完全相等

U] W @!s"zastj"~0

           Person per2 = new Person("张三",30) ;    //调用构造实例化对象51Testing软件测试网*?9t*XFl\M$ln$g

          51Testing软件测试网Y)Z{KjEgS

           //直接在主方法中依次取得各属性进行比较

2m+mJ|#z9I%o$f0

           if(per1.compare(per2)){

Ht`s;q6X)Zu0

               System.out.println("两个对象相等") ;    

6Fp X#ZMW[0

           }else{

(D UA_4u Y:^/y;s-A0

               System.out.println("两个对象不相等") ;51Testing软件测试网y"C_[5[~ k%K

           }

3E^ z Q]%Gm0

        }

c4U*}$Q6I6I3e;eu0

    }

:C W$Kf-V0

 

!M}9C%I'Xld2u.Z0

TAG:

 

评分:0

我来说两句

luoriver

luoriver

北漂一族,80后,计算机专业,从事SIP相关软件测试3年,热爱生活,崇尚运动。 爱看WWE、公开课。爱钻“牛角尖”,这就是我:luorivr!!!!!

日历

« 2024-04-26  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 345819
  • 日志数: 96
  • 图片数: 1
  • 建立时间: 2012-12-27
  • 更新时间: 2014-05-03

RSS订阅

Open Toolbar