java中一般方法里的this是代表调用本方法的对象,但是构造方法里的this代表的是什么呢。
java中一般方法里的this是代表调用本方法的对象,但是构造方法里的this代表的是什么呢。...
java中一般方法里的this是代表调用本方法的对象,但是构造方法里的this代表的是什么呢。
展开
5个回答
展开全部
this代表你正在构造的对象。
public class Test {
public Test() {
System.out.println(this.toString());
}
public static void main(String[] args) {
Test obj = new Test();
System.out.println(obj.toString());
}
}
输出的两个字符串相同(后面的数字是对象地址),说明this和obj是同一个对象。
这里this就是正在构建的CommunicationDemo的对象,作为参数传给Thread的构造函数。
内幕是:java对象的建立其实是在构造函数开始执行之前,就是说构造函数执行的时候,被构造的对象其实已经存在了,所以构造函数中可以用this引用当前被构造的对象进行处理(比如 this.name=“Jack”)。
追问
哦,收获不小,其实构造方法不是在创建对象,而是在不停的复制对象到不同的地址中去。另外调用构造方法的其实还是这个this。你看我理解的对不。
追答
也不能说是复制,产生新对象并且放在内存里是虚拟机的工作,构造方法的功能其实是初始化这个新对象。
“调用构造方法的其实还是这个this”我觉得这个说法好。
展开全部
你弄错了this代表的是本类的实例对象,不是什么调用本类的方法的对象.当你用new创建一个对象的时候,对象就已经在内存了.(具体的你的血jvm和反射).构造方法只是为了给对象里的属性赋值.在类里任何地方出现的this都是指的本类的实例对象,构造方法里的也一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个如果想深究,可以了解一下C语言,看一下【 java编程思想】。 平时的使用可不用太计较。
下面是【 java编程思想】里关于一个类的初始化顺序的解释。
在这里有必要总结一下对象的创建过程。请考虑一个名为Dog 的类:
(1) 类型为Dog 的一个对象首次创建时,或者Dog 类的static 方法/static 字段首次访问时,Java 解释器
必须找到Dog.class(在事先设好的类路径里搜索)。
(2) 找到Dog.class 后(它会创建一个Class 对象,这将在后面学到),它的所有static 初始化模块都会运
行。因此,static 初始化仅发生一次——在Class 对象首次载入的时候。
(3) 创建一个new Dog()时,Dog 对象的构建进程首先会在内存堆(Heap)里为一个Dog 对象分配足够多的存
储空间。
(4) 这种存储空间会清为零,将Dog 中的所有基本类型设为它们的默认值(零用于数字,以及boolean 和
char 的等价设定)。
(5) 进行字段定义时发生的所有初始化都会执行。
(6) 执行构建器。
看一看出, 到(6)的时候, 这个对象其实已经在内存中存在了。所以this已经有引用了。
对象的创建,就是在内存中申请一段地址空间。和C,C++是相同的。而java中这部分工作,是
JVM完成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
构造方法中的this应该代表的是本类,比如这个类有一个属性age,构造方法中可以用this.age=age
来为age赋值。个人理解,说的不好
来为age赋值。个人理解,说的不好
更多追问追答
追问
如果这个age不是静态的呢。
追答
什么意思?说具体点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人理解是代表你声明的该类的对象
追问
关键是构造方法夹在是是没有对象存在的。
追答
没明白你 表达的意思,构造方法不是声明一个类的对象时调用的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询