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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在java中,用new创建一个对象,则在堆中保存的数据只有对象的非静态变量吗?因为对象的方法和静态变量都保存在方法区的类信息中,构造函数应该属于方法,也在方法区中。

我这样理解对吗?求指正

5 个回复

倒序浏览
可以这么理解呀,因为静态变量在类加载的时候就存在了
回复 使用道具 举报
静态变量应该属于类的,在类加载时就加载进了方法区中,它是共享数据,不属于某一个对象实例,所以你说的对象的静态变量本身就是错误的
回复 使用道具 举报
戏言丶 发表于 2014-9-13 19:46
静态变量应该属于类的,在类加载时就加载进了方法区中,它是共享数据,不属于某一个对象实例,所以你说的对 ...

一个对象有共有属性,也有私有属性,那我说一个对象的共有属性(对象的静态变量)应该没有错啊,语法表示:对象名.静态变量,这个不是叫对象的静态变量吗
回复 使用道具 举报
格子、 发表于 2014-9-13 18:07
可以这么理解呀,因为静态变量在类加载的时候就存在了

恩,我就想问问堆中除了存储非静态变量,还存储了什么杂七杂八的东西,比如什么指向静态变量的地址,或者指向对象方法的地址,再或者存储了什么我不懂的东西,有没有这种情况
回复 使用道具 举报
程序运行之前都有一个载入过程,代码中定义的各个常量字符串,各个常量,各个静态变量和静态方法都会在堆中开辟空间,对象在创建的时候,其中的非静态方法都保存在对象中供调用,而静态方法则指向之前载入的那片内存
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马