java 中用初始化final变量的问题

用函数初始化final变量与直接赋值有什么区别吗?
例如 final String a=get();这里调用一个函数,返回“b”
final String a="b";

当然有区别在函数初始化时用final声明了变量之后,变量值一旦被设定,就不能被改变.你后面再次对它赋值都不会被编译器接受.所以final通常用来声明常量
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-26
这涉及到引用类型的问题,String是引用类型;在类new时,程序就为成员变量分配了内存;'a'、'b'可以想象为类中两个实体(即内存空间),而(String a = "ab"; final String bb = "b"; String b = "a" + bb; )中;我打个比方,'a'的内存地址是1,'b'的内存地址是2;所以(String a = "ab")中变量a的地址为12(就是'a''b'的内存地址的结合);而(String b = "a" + bb;) 中变量b的地址也为12;所以(a==b)为true;( String a = "ab"; final String bb = getBB(); String b = "a" + bb; )中,方法getBB()的内存是3;所以变量bb指向的是内存地址为3的内存空间,此时变量a指向的还是内存地址为12的实体,而b指向的却是13;所以(a==b)为false这程序考查的是引用类型变量的理解
第2个回答  2013-10-26
final String a=get(); 返回值可以改变final String a="b"; 值永不变

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网