在一个类a中,表达式a.this代表什么意思? 该关键字仅用于函数之内,用来取到当前的object reference 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你转贴个例子让我们先看一段代码吧: class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String p_name,String p_gender,String p_nationality,String p_address,int p_age) { name=p_name; gender=p_gender; nationality=p_nationality; address=p_address; age=p_age; } } 你会发现,在PersonInformation()函数中这个对象的方法提示可以直接访问对象的成员变量的,而且在同一个范围中,定义两个相同的名字的局部变量是不允许的,如果确实想使类的成员变量和方法的参数或方法自己定义的局部变量同名的话就需要想一种方法使成员变量与更它同名的方法参数或局部变量区分开来,这就要使用到this变量。下面我想改写一下上面的代码,使PersonInformation类的构造函数的每个参数都有与对象成员变量相同的名字,而成员变量的初值由参数给出。 class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String name,String gender,String nationality,String address,int age) { this.name=name; this.gender=gender; this.nationality=nationality; this.address=address; this.age=age; } } 由上一例中,我们可以看出,该构造函数中必须使用this,this在方法体重用来指向引用当前正在执行方法的那个对象实例,this变量的类型总是为包含前执行方法的类,上例中,我们要区别参数name和成员变量name,写成name=name显然是不允许的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,这样在方法体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。 有时候会遇到这种情况,我们全面的访问当前对象,而不是访问某一个个别的实例对象,我们也可以使用this,并利用Java中的toString()方法(它能够返回一个描述这个对象的字符串)如果把任何一个对象传递到System.out.println方法中,这个方法调用这个对象的toString方法,并打印出结果字符串,所以,我们可以用如下方法System.out.println(this),来打印出任何对方法固有参数的当前状态。 this还有一个用法,就是构造函数的第一个语句,它的形式是this(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。请看下面的例子: class UserInfo { public UserInfo(String name) { this(name,aNewSerialNumber); } public Userinfo(String name,int number) { userName=name; userNumber=number; } } 如果你调用UserInfor newinfotable = new UserInfo("Wayne Zheng")后,就会自动调用UserInfo(String name,int number)构造函数。 在a类重用到这种方法很少,a.this只有在a中的一个内部类中要得到a的当前对象的引用才有这种用法 Weblog(爱生活,爱自己) 说的对的。 就是在inner class(内部类)里引用父类 class A{ class InnerClass{ //this is a InnerClass //A.this an A. }} 具体的,,,,用哪一个方法可以统计出一个数组中数的个数 鼠标单击事件 很急的问题 JAVA或C的最基本的概念,困惑中……,请指教? [求助]BufferedImage类型怎么得到图像的大小(kb) Java实现登录窗口后的密码怎样处理呢?请举例说明!(新手) 如何将Serializable中的内容转换编码后再输出Serializable? 请教,tomcat突然出现的错误 请问能不能把JAVA的.class文件转换成.exe文件见呀? Java中List元素全部被最后一个覆盖的问题 为什么java不识别中文目录? 在java中实现“递归”没有现成的类或是接口?
你会发现,在PersonInformation()函数中这个对象的方法提示可以直接访问对象的成员变量的,而且在同一个范围中,定义两个相同的名字的局部变量是不允许的,如果确实想使类的成员变量和方法的参数或方法自己定义的局部变量同名的话就需要想一种方法使成员变量与更它同名的方法参数或局部变量区分开来,这就要使用到this变量。下面我想改写一下上面的代码,使PersonInformation类的构造函数的每个参数都有与对象成员变量相同的名字,而成员变量的初值由参数给出。 class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String name,String gender,String nationality,String address,int age) { this.name=name; this.gender=gender; this.nationality=nationality; this.address=address; this.age=age; } } 由上一例中,我们可以看出,该构造函数中必须使用this,this在方法体重用来指向引用当前正在执行方法的那个对象实例,this变量的类型总是为包含前执行方法的类,上例中,我们要区别参数name和成员变量name,写成name=name显然是不允许的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,这样在方法体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。 有时候会遇到这种情况,我们全面的访问当前对象,而不是访问某一个个别的实例对象,我们也可以使用this,并利用Java中的toString()方法(它能够返回一个描述这个对象的字符串)如果把任何一个对象传递到System.out.println方法中,这个方法调用这个对象的toString方法,并打印出结果字符串,所以,我们可以用如下方法System.out.println(this),来打印出任何对方法固有参数的当前状态。 this还有一个用法,就是构造函数的第一个语句,它的形式是this(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。请看下面的例子: class UserInfo { public UserInfo(String name) { this(name,aNewSerialNumber); } public Userinfo(String name,int number) { userName=name; userNumber=number; } } 如果你调用UserInfor newinfotable = new UserInfo("Wayne Zheng")后,就会自动调用UserInfo(String name,int number)构造函数。
说的对的。
class InnerClass{
//this is a InnerClass
//A.this an A.
}
}