黑马程序员技术交流社区
标题:
类的属性放哪了
[打印本页]
作者:
许冉
时间:
2011-10-5 22:11
标题:
类的属性放哪了
看完视频是这样的
创建了一个类的实例对象,就会在堆内存中创建一个对象,一般属性存在堆中,静态成员存在方法区
可是看了论坛中的一些回复,怎么觉的有些属性是分配到了栈中,是我理解错了吗
final成员放哪了?
静态方法只能访问静态成员,那么final方法访问有什么限制吗?
作者:
匿名
时间:
2011-10-5 22:46
final只是一个修饰符。对象的地址存放在栈内存中。下面是小弟的一点小结,献丑了。
局部变量:1:定义在方法的参数,方法内的变量,语句中的变量。
2:局部变量都存储在栈内存中。
3:只要所在的函数被执行,该函数的变量才存在于栈内存中,当该变量所属区域执行结束,该变量消失。
4:局部变量的范围是有限的,即在该区域所在的大括号中。
5: 局部变量如果没有被复制的话,Java是不会承认其默认值的!
成员变量 : 1:定义在类中的变量。
2:成员变量都存储与堆内存的对象中。
3:成员变量需要被对象调用,当对象被垃圾站回收时,对象中的变量才会消失。
4:成员变量在整个类中有效。如果别的类的方法要访问它,必须创建该类的对象,然后才可以通过点运算符来引用。
5:成员变量没被赋值时,Java是会承认其默认值的!
作者:
匿名
时间:
2011-10-5 22:52
栈内存
Java栈内存由局部变量区、操作数栈、帧数据区组成,以帧的形式存放本地方法的调用状态(包括方法调用的参数、局部变量、中间结果……)。
堆内存
堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
本地方法栈内存
final修饰符
在Java声明类、属性和方法时,可以使用关键字final来修饰,final所标记的成分具有终态的特征,表示最终的意思。
final的具体规则
·final标记的类不能被继承
·final标记的方法不能被子类重写
·final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次
·final标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用
·final标记的局部变量可以只声明不赋值,然后再进行一次性的赋值
·final一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以避免被误用
如果将引用类型(即,任何类的类型)的变量标记为final,那么,该变量不能指向任何其它对象,但可以改变对象的内容,因为只有引用本身是final的。
作者:
匿名
时间:
2011-10-5 22:53
final成员放到heap中了,对象的地址存放在栈内存中。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2