JAVA this关键字总结的几点疑问

Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。问题一:对象是指用... Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。

问题一:
对象是指用new关键字搞出来的东西吧,那样的话this如果指向他,那为什么this可以引用这个对象所属类的成员变量?

问题二:
通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。

可否给我一个例子,我初学JAVA,实在是想不出这段话代表的代码是怎样的。
展开
 我来答
痞子_姆_
2013-03-28 · TA获得超过401个赞
知道答主
回答量:191
采纳率:66%
帮助的人:138万
展开全部
问题一,this如你所说就是当前这个类的对象的引用,既然你在这个类定义了变量和方法(包括构造方法),那么都可以以this.X的方式来调用。this是指向这个类对象,但是后面的"."表示属于这个对象的方法和变量。比如 str.toString() 表示str这个对象的toString()方法。可能楼主对"."不太理解吧。

问题二,java是支持多态的语言,支持函数的重载。什么是重载?也就是一个类里可以定义多个名称相同的函数,包括构造函数,也就是类方法。那么怎么判断是哪个方法呢,重载的函数必须有不同的返回类型或者参数。
就拿构造方法来说,如下代码:
public class test{
test(){}
test(string a){}
test(int a){}
}
如上test类就是一个实现了重载的类,分别有三个构造方法
下面解答你说的this(参数)仅仅用在类的构造方法中:
public class test{
String b=null;
int c=null;
test(){}//默认的构造方法,不管它
test(string a){//这个构造方法里把成员String变量b赋值a
b=a;
}

test(int a){//这个是重点
this("我调用了上面的方法,将b赋值为a");
c=a;
}
}
楼主看明白没,在第三个构造函数
test(int a){//这个是重点
this("我调用了另一个构造方法,将b赋值为a");
c=a;
}
里,我加入了this("我调用了上面的方法,将b赋值为a");,啥意思呢,就是调用了上面那个参数为String型的构造方法。这种用法只能写在构造方法里,能不能加在一般的方法里我没试过,但这样肯定没错的。
执行
test t=new test(2);
System.out.prinln(b);
System.out.prinln(c);

显示结果为
我调用了另一个构造方法,将b赋值为a

2

看明白了吧
xiao6774081
2013-03-25 · TA获得超过524个赞
知道小有建树答主
回答量:563
采纳率:0%
帮助的人:126万
展开全部
问题一:this表示的就是本身的的一个对象,所以“对象”+“.”+“成员变量”来访问一个对象成员很正常啊。比如 Student s = new Student (); 在Student 类的成员函数里this表示的就是s。this.age与s.age类似,主要区别就是如果age是private的话,类外s.age访问不了。
问题二:动手写代码试一试就知道了。this(参数列表)这样子用好像还真没怎么看到过,一般都是类似Student (参数列表)。
没什么好纠结的。
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式