黑马程序员技术交流社区

标题: final的常量不是恒定不变的! [打印本页]

作者: Acejin    时间: 2015-8-7 11:13
标题: final的常量不是恒定不变的!
import static java.lang.System.*;

import java.util.*;

public class FinalStaticData {
        private static Random rand = new Random(); // 实例化一个Random类对象
        // 随机产生0~10之间的随机数赋予定义为final的a1
        private final int a1 = rand.nextInt(10);
        // 随机产生0~10之间的随机数赋予定义为static final的a2
        private static final int a2 = rand.nextInt(10);
       
        public static void main(String[] args) {
                FinalStaticData fdata = new FinalStaticData(); // 实例化一个对象
                // 调用定义为final的a1
                out.println("重新实例化对象调用a1的值:" + fdata.a1);
                // 调用定义为static final的a2
                out.println("重新实例化对象调用a1的值:" + fdata.a2);
                // 实例化另外一个对象
                FinalStaticData fdata2 = new FinalStaticData();
                out.println("重新实例化对象调用a1的值:" + fdata2.a1);
                out.println("重新实例化对象调用a2的值:" + fdata2.a2);
        }
}
如果将随机数赋予定义为final的常量,可以做到每次运行程序是改变a1的值!
作者: 章浩    时间: 2015-8-7 12:10
在局部变量前加修饰符final,此时局部变量就会存在堆中,当引用类结束时,资源释放。只有加上static修饰时,才是真正的全局变量,无法被改变。
作者: 风华正茂    时间: 2015-8-7 12:15
学习了,楼主辛苦了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2