关于java中对象的几个问题
inti=1;对象t1=new对象();1.执行t1.i后,单独拿出t1出来,他是否已经含有i的值,i、t1、t1.i是分别指向三块内存区吗。为什么system.out....
int i = 1;
对象 t1 = new 对象();
1.执行t1.i后,单独拿出t1出来,他是否已经含有 i 的值,i、t1、t1.i是分别指向三块内存区吗。为什么system.out.println(t1)输出结果是对象@15db9742
2.如果执行t1.i=2;改变了i、t1、t1.i这三者谁的值 (不算static情况)
3.对象在代码中究竟起什么作用? 展开
对象 t1 = new 对象();
1.执行t1.i后,单独拿出t1出来,他是否已经含有 i 的值,i、t1、t1.i是分别指向三块内存区吗。为什么system.out.println(t1)输出结果是对象@15db9742
2.如果执行t1.i=2;改变了i、t1、t1.i这三者谁的值 (不算static情况)
3.对象在代码中究竟起什么作用? 展开
2个回答
2017-02-06
展开全部
执行t1.i后,单独拿出t1出来,他是否已经含有 i 的值,i、t1、t1.i是分别指向三块内存区吗。
i是在哪里定义的,它是t1的实例变量还是静态变量,是public,还是private,还是main方法里的变量。
如果在main方法里,与t1,无关,t1存的是一块地址,指向一个内存空间,存放实例变量,同时,所有类的对象有共有一个类空间,有实例变量。
为什么system.out.println(t1)输出结果是对象@15db9742
这是继承自object类的方法,toString,在未定义这个方法时,打印有一个默认值就是你写的这个。
如果执行t1.i=2;改变了i、t1、t1.i这三者谁的值 (不算static情况)
其实你可以试试,但应该是t1.i.
对象在代码中究竟起什么作用
一个类是蓝图,根据这个类可生成许多自定义对象。一个对象根据类,可自定义许多变量,即i,除static外,每个对象拥有自己独有值的i
你可以多读些例子,或者直接比着书敲代码,慢慢就会明白的
追问
int i = 1;是类成员,在主方法外
i 我知道在一个内存区(A区),t1在另一个的内存区(B区)。如果t1.i执行后,t1.i是在新创建一块内存区(C区),还是在t1原来的内存区里(A区)。
追答
t1指向的内存(假设为X),t1存的只是个内存的地址(假设为B),X中有(A),即i,i1,i2……当你new 对象时,就会分配一个属于t1的X,X包括对象中实例变量的空间,因为你写类时已经注明int i,即规定i占多少空间; t1.i=只是赋值,并没有新建空间。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询