定义为final的变量


      我们在写程序的时候通常能看到将一个类型定义为final类型,前几日刚好遇到一些困惑,查看资料后在此做一下摘录:

       理解final最主要的是这句话:定义为final的变量,指的是该变量的   “引用”  不能被再次赋值

      比如:

         

final int a=1;
    这边定义的int类型a,他其实直接是放在栈里面的,固然不能重新对其赋值。


final String str="abc";
   这边定义了一个String类型str ,这个str指向的是常量池中"abc"的位置,即"abc"的引用,所以我们对其重新赋值的时候,引用会改变,这与final的定义相违背。


final int[] arr=new int[5];
   这里我们定义了一个数组,那arr的引用其实是数组大开始地址,当我们再进行arr=new int[3];时,这是不被允许的,因为其引用会改变。当我们对其进行赋值,

   如:arr[0]=0;arr[1]=1; 这些操作的时候,其引用并没有改变,所以这是被允许的。


   同样的,我们也可以类推到自定义的类  如:Stu类中有name字段

final Stu stu=new Stu("fzy");
    这时,我们对这个stu的name重新赋值也是没有问题的, stu.setName("zy");




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值