1 Java中this关键字使用小结:
当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。
this只能在类中的非静态方法中使用,
静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,而不和类关联,
同一个类的不同对象有不同的this。
2、使用this来区分当前对象
Java中为解决变量的命名冲突和不确定性问题,引入关键字this代表其所在方法的当前对象的引用:
*1)* 构造方法中指该构造器所创建的新对象;
*2)* 方法中指调用该方法的对象;
*3)* 在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法this只能用在构造器或者方法中,用于获得调用当前的构造器方法的对象引用。可以和任何的对象引用一样来处理这个this对象。
3 说明:this和局部变量
-
当实例变量和局部变量重名,JAVA平台会按照先局部变量、后实例变量的顺序寻找。即,方法中使用到的变量的寻找规律是先找局部变量,再找实例变量。如果没用找到,将会有一个编译错误而无法通过编译。
-
如果使用this.a,则不会在方法(局部变量)中寻找变量a,而是直接去实例变量中去寻找,如果寻找不到,则会有一个编译错误。
-
在一个方法内,如果没有出现局部变量和实例变量重名的情况下,是否使用this关键字是没有区别的。
-
在同一个类中,Java普通方法的互相调用可以省略this+点号,而直接使用方法名+参数。因为Java编译器会帮我们加上。
-
this关键字最大的作用是,让类的一个方法,访问该类的另一个方法或者属性。
-
java允许同一个对象的方法直接调用该对象的属性或者方法,所以this可以省略
注意:java中为什么在static中不能使用this关键字?
Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成。而this指代的是当前的对象在方法中定义使用的this关键字,它的值是当前对象的引用。也就是说你只能用它来调用属于当前对象的方法或者使用this处理方法中成员变量和局部变量重名的情况,而且,更为重要的是this和super都无法出现在static 修饰的方法中,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象。如果使用的是类来调用而不是对象,则 this就无法指向合适的对象.所以static 修饰的方法中不能使用this