java中this的用法示例(关键字this)
this是指向本身的隐含的指针,简单的说,哪个对象调用this所在的方法,那么this就是哪个对象。
示例代码:TestThis_1.java
/*问题:什么是this
*输出结果:
*A@4e44ac6a
*/
publicclassTestThis_1{
publicstaticvoidmain(String[]args){
Aaa=newA();
System.out.println(aa.f());//aa.f(),返回aa这个对象的引用(指针)
}
}
classA{
publicAf(){
returnthis; //返回调用f()方法的对象的A类对象的引用
}
}
this的常见用法
1.区分同名变量
示例代码:TestThis_2.java
/*this的常见用法1:区分同名变量
*输出结果:
*this.i=1
*i=33
*/
publicclassTestThis_2{
publicstaticvoidmain(String[]args){
Aaa=newA(33);
}
}
classA{
publicinti=1; //这个i是成员变量
/*注意:一般不这么写,构造函数主要是为了初始化,这么写主要是为了便于理解*/
publicA(inti){ //这个i是局部变量
System.out.printf("this.i=%d\n",this.i); //this.i指的是对象本身的成员变量i
System.out.printf("i=%d\n",i); //这里的i是局部变量i
}
}
2.构造方法间的相互调用
示例代码:TestThis_3.java
} classA{ publicA(inti,intj){ publicA(inti,intj,intk){ 注意事项 被static修饰的方法没有this指针。因为被static修饰的方法是公共的,不能说属于哪个具体的对象的。 示例代码:TestThis_4.java } classA{
/*this的常见用法2:构造方法中互相调用*/
publicclassTestThis_3{
publicstaticvoidmain(String[]args){
}
inti,j,k;
publicA(inti){
this.i=i;
}
/*i=3; error 如果不注释掉就会报错:用this(...)调用构造方法的时候,只能把它放在第一句
*TestThis_3.java:20:error:calltothismustbefirststatementinconstructor
* this(i);
* ^
* 1error
*/
this(i);
this.j=j;
}
this(i,j);
this.k=k;
}
}
/*static方法内部没有this指针*/
publicclassTestThis_4{
publicstaticvoidmain(String[]args){
}
staticAf(){
returnthis;
/*出错信息:TestThis_4.java:10:error:non-staticvariablethiscannotbereferencedfromastaticcontext
* returnthis;
* ^
* 1error
*/
}
}相关文章