首先,我的技术不是很好,以下内容只是我的理解,我不能保证百分百正确。。。。最近有些刚刚学java的人问我一些Java基础的问题,有些人问的问题是一样的,那就想着就不如写在博客上,直接看就可以,就不用回答辣么多遍了。
(第一次写博客啊~)
这里说的是this
this是什么呢,标准说法是指类本身,然而,新手连对象、方法、类是啥都理解的糊里糊涂。
这里就不说这些的具体区别了
首先,来一段代码
public class aa(){
int cc;
public void bb(){
this.cc++;
}
}
在这代码里面的this就是aa,很清楚明了,所以this.cc就是指定义的cc;然后this.bb()就是指bb()这个方法。然而,新手又跑出个疑问,this.cc和cc竟然一样,那干嘛用this。
通过百度,我下面找到了这段话:
说明在什么情况下需要用到this:
第一、通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
来自http://mougaidong-163-com.iteye.com/blog/994934这里(引用我有指明来源,没有偷偷盗用哦)
好吧,全新的新手看不明白这段话,我就解释一遍。
第一, 通过this调用另一个构造方法,什么是构造方法呢,我们在定义一个写好的类的时候
如:
public class aa(){
int cc;
public void bb(){
this.cc++;
}
}
使用这个写好这个类,我们是这样的:aa a = new aa();
其实以上代码是有个隐藏的方法
public class aa(){
public aa(){
}
int cc;
public void bb(){
this.cc++;
}
}
就是这个方法名字和类的名字一样,其实每个写好的类都有这个方法,默认存在的,这个方法就是构造方法。构造方法可以有多个的,可是入参数量或者类型一定要不同。
如:
public class aa(){
public aa(){
}
public aa(int i){
System.out.println(i);
}
int cc;
public void bb(){
this.cc++;
}
}
上面定义了两个构造方法,一个是aa(),一个是aa(int i)
那么我们new 这个方法的时候可以这样:aaa = new aa();或者aa a = new aa(123);
现在明白构造方法时什么了吧。还是不明白再找我吧。。。
那么,第一、通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。这句话就好理解了,就是在写构造方法时可以这样
public aa(){
this (123);
}
public aa(int i){
System.out.println(i);
}
里面的this(123)其实就是aa(123),this(参数列表) 仅在在构造函数里用,就是this()或this(123)只能在构造函数用,在其他方法函数不能用,其他方法函数能用this或this.bb()或this.cc
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this。
函数参数就是使用该函数的时候输入的参数
如:
public class aa(){
int cc;
public void bb(int cc){
int dd;
dd =cc;
this.cc=cc;
}
}
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
这句的意思就是如果要用到现在所处的方法的所属类,直接用this,相当于直接说明了this的意思,就是指当前类。
理解以上三点,对于this就有些明白了吧,具体的还是需要各种打代码熟悉才会更加了解。
理论再强还不如去实践。