A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

假设我已经有了主函数。有类:Newying,成员变量是int a=2;      在主函数实例化2对象 ,各位请看图
这里都是问题:大家请看

1.P1也是指向这个地址?还是P1在堆内存中还开辟一个新的存储空间?
  或者是它们2个对象同一个类公用的同一段内存是么?
2.或者是运行到输出语句时,是把内存的值调出来然后输出的
  如果是这样。那我++p.a是调出来再输出的?这样就和内存的他们没有关系了
  因为是调出来再使用和控制的?是么?




捕获.PNG (109.06 KB, 下载次数: 18)

内存图

内存图

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

11 个回复

倒序浏览
竟然没人看?擦
回复 使用道具 举报
问题看不懂,图看不懂,代码又不写上来。。嘎嘎。
回复 使用道具 举报
还没有学到,看不懂啊:'(
回复 使用道具 举报
家进 发表于 2015-1-23 12:08
问题看不懂,图看不懂,代码又不写上来。。嘎嘎。

不是啊。我的问题是这样的 new 同一个类,但是对象不同。 他们new出的堆空间里面是贮存在同一个位置么。还是分开的?假如第一个对象是 类名  p=new 类名() p就可以调用类名里面的东西了对吧。假如这个类有成员变量 int num=10;    那在主函数里面输入System.out.println(p.num++);是多少,在内存中的变化。
回复 使用道具 举报
我这样和你说吧,只要是new出来的,不管是数组还是字符串或是对象,都是在堆内存里开辟一个新的存储空间。这个类的普通成员变量是归对象所有的,假如类中都有成员变量 int num=10;  两个对象都有不同的int num =10; 改变对象A不影响对象B 的值。  如果用static修饰的成员就不一样了,用static修饰的成员仅是类所有,多个对象共享的,这共享的东西很好理解,当一个对象改变共享的成员变量,另一个对象拿来用时当然已经变了样的。
回复 使用道具 举报 1 0
家进 发表于 2015-1-26 10:48
我这样和你说吧,只要是new出来的,不管是数组还是字符串或是对象,都是在堆内存里开辟一个新的存储空间。 ...

大哥,成员变量怎么可能可以定义2个相同的成员?会报错的
回复 使用道具 举报
这个还是看视频比较好
回复 使用道具 举报
视频里有详细的讲到!
回复 使用道具 举报
xc29417412 发表于 2015-1-26 19:36
大哥,成员变量怎么可能可以定义2个相同的成员?会报错的

不好意思, 《 假如类中都有成员变量 int num=10;》 这句话多打了一个“都”字。
回复 使用道具 举报
技术分怎么获得?
回复 使用道具 举报
gezhizheng 发表于 2015-1-28 15:48
技术分怎么获得?

不用技术分,你去回帖,发帖5次有黑马比,拿去换就行。一个发帖2个黑马币
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马