Java final常量赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java final常量赋值相关的知识,希望对你有一定的参考价值。
final 不是 一但给值就不能在改变了, 可这行代码怎么能执行,希望专家能给出结论,
最好说一下原理、
先谢谢了
public class admin
String name;
public admin(String name)
this.name=name;
class test
public static void main(String []args)
final admin ad=new admin("Hello");
ad.name="偶偶";
ad.name="亚亚";
System.out.print(ad.name);
对象的引用,你不能改变引用的值,就是说,你不能
ad=new admin("Hello too");这样写,
你只是改变应用中的东西有没有关系。
就好比你父亲生了一个你,你的省份证号码就不能改变了,这个身份证号码就好像是一个引用,能唯一确认是你,但是你的名字可以改,衣服可以换啊追问
那个我明白了。我发现有个地方我没有明白。就是
去掉this
为什么执行为null?
public class admin
String name;
public admin(String name)
name=name;
class test
public static void main(String []args)
//final
admin ad=new admin("Hello");
ad.name="偶偶";
ad.name="亚亚";
ad=new admin("fdsa");
System.out.print(ad.name);
this引用的全局变量,直接写就是引用局部变量了哦,你的方法名后面所传的参数和全局变量同名了,按照就进原则,public admin(String name)
name=name;
这句话毫无意义,要么你用this来强调你前面用的是全局的变量,就是上面定义的那个,要么,你就别重名了啊,把方法名内的改个名字也行
你可以把admin的name属性改为final的。
再说 你用final修饰类只是类不能被继承,但是其属性还是String类型的,是允许被修改的。 参考技术B final修改的常量值不能改变,但是现在final修饰的是对象。所以情况不一样了
以上是关于Java final常量赋值的主要内容,如果未能解决你的问题,请参考以下文章