java中this关键字的使用
2016-10-11 22:45
218 查看
java中提供了一个关键字this,该关键字总是指向调用该方法的对象。
this出现的位置不同:
一,this作为对象的默认引用的时候有两种情况
1.在方法中调用该方法的对象
在say方法中调用buy方法需要一个对象(也就是上面的jack),但是当程序在调用say方法时,一定存在一个对象,所以不需要再进行创建一个新的对象,这样可以直接使用调用say方法的对象,比如Jane ,Jhon等对象,可以使代码变得简洁。下面将say方法修改:
大部分的时候,一个方法在访问该类中定义的其他方法时候,加不加this都是一样的,但是在由static修饰的方法中不能使用this引用,因为在static修饰的方法中this无法指向合适的对象,由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不适用static修饰的普通成员,也就是所说的静态成员不能直接访问非静态成员。
例如:
对于static修饰的方法和变量属于类本身,而没有使用static修饰的方法和变量属于实例的方法和变量,而不是属于类的方法或变量,因此必须使用对象来调用该方法上面的main方法中直接调用amethod时,系统相当于直接使用this作为该方法的调用者,而main方法属于static修饰的方法,static修饰的方法属于类,而不属于对象。
注意:Java编程时不要使用对象去调用static修饰的成员变量,方法,应该使用类去调用static修饰的成员变量,方法。
2.构造器中引用构造器正在初始化的对象
大部分时候访问构造器中的成员变量和方法时候可以省略this,但是如果构造器中有一个和成员变量同名的局部变量的时候,要是引用成员变量,就必须使用this前缀;
本文档用于个人学习交流里面有错误欢迎指正
this出现的位置不同:
一,this作为对象的默认引用的时候有两种情况
1.在方法中调用该方法的对象
public class person{ //person 中的say方法 public void buy(){ System.out.println("I want to buy an apple"); } //定义一个say方法 在此方法中调用buy方法 public void say (){ person jack = new person();/*此处可以修改优化*/ jack.buy(); /*此处可以修改优化*/ System.out.println("正在使用buy方法"); } }
在say方法中调用buy方法需要一个对象(也就是上面的jack),但是当程序在调用say方法时,一定存在一个对象,所以不需要再进行创建一个新的对象,这样可以直接使用调用say方法的对象,比如Jane ,Jhon等对象,可以使代码变得简洁。下面将say方法修改:
public void say(){ //使用this关键字引用调用say方法的对象 this.buy();//this指的是调用say方法的对象 //java允许对象的一个成员调用另外一个成员,可以省略this关键字,改 为下面形式 //buy(); System.out.println("正在执行say方法"); }
大部分的时候,一个方法在访问该类中定义的其他方法时候,加不加this都是一样的,但是在由static修饰的方法中不能使用this引用,因为在static修饰的方法中this无法指向合适的对象,由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不适用static修饰的普通成员,也就是所说的静态成员不能直接访问非静态成员。
例如:
public class StaticAccessNonStatic{ public void amethod(){ System.out.println("一个方法"); } public static void main(String args[]){ amethod();//此处调用info()方法会发生编译错误 } }
对于static修饰的方法和变量属于类本身,而没有使用static修饰的方法和变量属于实例的方法和变量,而不是属于类的方法或变量,因此必须使用对象来调用该方法上面的main方法中直接调用amethod时,系统相当于直接使用this作为该方法的调用者,而main方法属于static修饰的方法,static修饰的方法属于类,而不属于对象。
注意:Java编程时不要使用对象去调用static修饰的成员变量,方法,应该使用类去调用static修饰的成员变量,方法。
2.构造器中引用构造器正在初始化的对象
public class Test{ public int f1; public Test(){ int f1 = 0; //使用this代表构造器正在初始化的对象 //下面的代码将会把构造器正在初始化的对象f1成员变量设位6 this.f1 = 6; } public static void main(){ System.out.println(new Test().f1); //因为通过this将Test中的成员变量f1设为6 所以会输出6 } }
大部分时候访问构造器中的成员变量和方法时候可以省略this,但是如果构造器中有一个和成员变量同名的局部变量的时候,要是引用成员变量,就必须使用this前缀;
本文档用于个人学习交流里面有错误欢迎指正
相关文章推荐
- java中this关键字使用
- 18天Java学习---9.面向对象编程04-this关键字的使用
- java使用this关键字调用本类重载构造器
- Java中this关键字和super关键字的使用
- JAVA学习笔记(四)——this关键字的使用
- java中this关键字的使用
- java中this关键字的使用(code)
- Java中this关键字在构造方法中的使用
- Java的this关键字使用(无笔记、待复习)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(12)--使用this关键字
- Java中this关键字的使用
- Lesson_for_java_day08--面向对象、重载和构造函数、this关键字的使用以及八大类在全局变量初始化中的值
- 6、从零开始学习JAVA--this关键字使用方法
- java中this关键字的使用
- Java的this关键字的使用与方法的重载相关知识
- Java学习笔记---9.面向对象编程04-this关键字的使用
- Java中this关键字的使用
- Java中this关键字的使用
- 【JAVA基础】this关键字的使用
- JAVA中this关键字的使用