黑马程序员技术交流社区

标题: 编译期确定值 [打印本页]

作者: 罗利华    时间: 2013-1-7 13:34
标题: 编译期确定值
编译期就确定了值,是确定了谁的值,是引用变量还是成员变量,还是两者都包括?
是不是说在程序中定义变量时初始化为常量就确定了值,
还是说要使用final来修饰,如果再使用static修饰又是怎样的结果呢,
求教,,,



作者: 熊永标    时间: 2013-1-7 18:12
首先,你说“是不是说在程序中定义变量时初始化为常量就确定了值”只能说定义为常量,而不能说初始化为常量,没有这一说法,我猜你应该是说,定义常量时,当初始化对像时,常量就确定了值是吗。
其次,常量是用final来修饰,当变量修饰为final时,变量就变成了常量,而如果再使用static时,就变成了静态常量,可以用类名直接访问的。
再次,final和static的区别是final修饰的变量,其值不能被修改,其值必在在声明时或在构造函数中确定其值,必须使用对象名才能调用。而static修饰的变量,只能说明它是一个静态变量,可以用类名直接调用而已,它的值是可以随时改变的,其他的和变量没什么区别。当两个组合在一起时,就变成了静态常量。即不能修改其值,可以直接用类名访问,也可以用对象名访问,推荐用类名访问。
作者: 罗利华    时间: 2013-1-7 22:13
熊永标 发表于 2013-1-7 18:12
首先,你说“是不是说在程序中定义变量时初始化为常量就确定了值”只能说定义为常量,而不能说初始化为常量 ...

还是有点没明白,那编译时都确定什么样的变量呀,是被final修饰吗,
作者: 何竹冬    时间: 2013-1-7 22:18
本帖最后由 何竹冬 于 2013-1-7 22:20 编辑

编译期已被确定的值
比如常量public static final int a=1;a的值已被确定为常量不能被重新赋值。
字符串常量"abc"编译时期已被确定放入字符串常量池。
加static表示对象共享,不加static对象特有吧,跟其他变量一样。
作者: 罗利华    时间: 2013-1-7 22:21
何竹冬 发表于 2013-1-7 22:18
编译期已被确定的值
比如常量public static final int a=1;a的值已被确定为常量不能被重新赋值。
字符串常 ...

嗯,多谢了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2