黑马程序员技术交流社区
标题:
关于this疑惑
[打印本页]
作者:
周海诚
时间:
2012-4-19 23:25
标题:
关于this疑惑
但凡本类功能内部使用了了本类对象,都用this表示。
本类功能内部使用了了本类对象?谁帮忙代码说明下 谢谢
作者:
蒋亮
时间:
2012-4-19 23:43
class PointTest{
private int x;
private int y;
public PointTest(int x,int y){
this.x=x;
this.y=y;
}
public void setX(int x){
this.x=x;
}
public int getX(){
return this.x;
}
public void setY(int y){
this.y=y;
}
public int getY(){
return this.y;
}
}
复制代码
作者:
黑马罗坚
时间:
2012-4-19 23:54
class Test
{
private int i;
public static void main(String args[])
{
Test ts=new Test(1);
System.out.println(ts.i);
}
public Test(){
}
public Test(int i){
this();
this.setI(i);
}
public int getI() {
return this.i;
}
public void setI(int i) {
this.i = i;
}
}
复制代码
作者:
乔建国
时间:
2012-4-19 23:55
当类中某个非静态方法的参数名和类的某个成员变量同名时,为了避免参数作用范围覆盖了成员变量的作用范围,必须明确的使用this关键字来指定。在本类中可以理解为这种格式 :this.成员变量
作者:
乞文超
时间:
2012-4-20 00:03
class Test
{
private int i;
public static void main(String args[])
{
Test ts=new Test(1);
System.out.println(ts.i);
}
public Test(){
}
public Test(int i){
this();
this.setI(i);
}
public int getI() {
return this.i;
}
public void setI(int i) {
this.i = i;
}
}
作者:
zhaishuang
时间:
2012-4-20 02:43
本类方法中调用本类成员变量或者其他方法时在名字前都是用this引用的,只不过没必要写。
作者:
朱晓辉
时间:
2012-4-20 08:24
本类功能内部使用了了本类对象的成员时,特别是当本类功能的成员与本类对象的成员名字相同时使用this。
01.class Test
{
private int x;
private int y;
public PointTest(int x,int y) //此时输入参数的名称与本类对象的成员相同,需要用this指定本类对象的成员。
{
this.x=x;
this.y=y;
}
}
作者:
Friends★
时间:
2012-4-20 08:45
this 的详细用法,希望可以帮到你!!
//this 关键字
//作用:用于区分局部变量和成员变量
/*this 为什么可以解决这个问题?
* this 到底代表的是什么? this就代表本类中的对象,那到底代表哪一个呢?
* this 代表它所在函数所属对象的引用,简单的说,哪个对象在调用this所在的函数,this就代表哪个对象。
*
*
* */
/*this语句的另外一种用法。
* 用于构造函数之间的相互调用,但是有一个条件,必须放在构造函数的第一行 this(name);形式就像
* 上面这样,this和括号之间没有点。
* 举个例子说明。
* Person(String name){
* this.name=name;
* }
* Person(String name,int age){
* this.name=name;
* this.age=age;
* }
* 这个时候发现,两个构造函数中都有this.name=name,已经重复了,如果按照一般函数的做法就是:
* Person(String name){
* this.name=name;
* }
* Person(String name,int age){
* Person(name);//直接调用上面函数的封装体,但是构造函数不行。
* this.age=age;
* }
* 但是这样不行,应该这样做。
* * Person(String name){
* this.name=name;
* }
* Person(String name,int age){
* this(name);
* this.age=age;
* }
* */
public class Demo {
public static void main(String[] args) {
Person p1= new Person(20);
Person p2= new Person(25);
boolean b=p1.compare(p2);
System.out.println(b);
//Person p =new Person("zhangsan"); //新产生一个对象的时候,构造函数可以直接调用
//p.speak();
}
}
class Person{
private String name;
private int age;
Person(String name){
this.name=name;//用于区分局部变量和成员变量。如果这种情况就会有错:
//Person(String name){name=name//这样就没有办法区分了}
//this代表的是对象的name,也就是堆内存中的name
}
Person (int age){
this.age=age;
}
Person(String name,int age){
this.name=name;
this.age=age;
}
public boolean compare(Person p)
{
return this.age==p.age;//这是的this就相当于p1,因为主函数中p1调用了compare方法, 而这是的p就相当于
//p2,因为主函数中把p2传给了p,所有就相当于p1和p2在比较!
}
void speak(){
System.out.println("name="+name+"age="+age);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2