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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© $love 中级黑马   /  2013-6-5 15:27  /  1577 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 $love 于 2013-6-5 16:23 编辑

public static final int MAX=52;         //这个是全局静态常量

public final int MAX=52;                 //有人和我说这样定义不能算是一个常量!常量应该是编译的时候就确定
//了!不能够改,而不加static就要在运行的时候才确定!这样不能算是一个常量。  这样是什么个情况!请高手详细解答一下????

4 个回复

倒序浏览
都是常量啊,只不过加载的时间和顺序不同而已啊,加static是在类加载时候就加载了,而没有加static的在类创建对象的时候才加载的,但是你要知道,static是先于对象的加载而加载的,加载类的时候不一定创建了对象,也就是对象还不一定被创建,所以两者也就有了访问的区别了。
回复 使用道具 举报
都是常量,加static的可以类名直接调用,没有static的是对象调用。
回复 使用道具 举报
其实你只要明白static与final都有什么作用就可以解释。
static修饰变量是为了共享数据。对象中的特有数据要定义成非静态存在于堆内存中。
被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马