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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗利华 中级黑马   /  2013-1-7 13:34  /  1682 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编译期就确定了值,是确定了谁的值,是引用变量还是成员变量,还是两者都包括?
是不是说在程序中定义变量时初始化为常量就确定了值,
还是说要使用final来修饰,如果再使用static修饰又是怎样的结果呢,
求教,,,


评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

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

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
熊永标 发表于 2013-1-7 18:12
首先,你说“是不是说在程序中定义变量时初始化为常量就确定了值”只能说定义为常量,而不能说初始化为常量 ...

还是有点没明白,那编译时都确定什么样的变量呀,是被final修饰吗,
回复 使用道具 举报
本帖最后由 何竹冬 于 2013-1-7 22:20 编辑

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

嗯,多谢了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马