美文网首页
final修饰的变量

final修饰的变量

作者: 不知名的蛋挞 | 来源:发表于2019-10-14 09:25 被阅读0次

    final的作用

    • 被final修饰的类不可以被继承
    • 被final修饰的方法不可以被重写
    • 被final修饰的变量不可变

    实战演示

    public class FinalDemo {
        private static final Map<String, Object> NAME = new HashMap<>(16);
        private static final List<String> LIST = new ArrayList<>(10);
        private static final String[] TYPE = new String[15];
        private static final StringBuilder SB = new StringBuilder("22");
        private static final StringBuffer SBU = new StringBuffer("22");
        private static final String S = "44";
        private static final int num = 44;
        private static final String S1 = new String();
    
        public void setName() {
            NAME.put("1", "maomao");
            LIST.add("11");
            TYPE[0] = "1";
            SB.append("12");
            SBU.append("32");
            System.out.println(NAME);
            System.out.println(LIST);
            System.out.println(Arrays.asList(TYPE));
            System.out.println(SB.toString());
            System.out.println(SBU.toString());
        }
    
        public static void main(String[] args) {
            FinalDemo finalDemo = new FinalDemo();
            finalDemo.setName();
        }
    }
    

    运行结果:

    {1=maomao}
    [11]
    [1, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
    2212
    2232
    

    由此可见:

    • 用了map、list、数组、StringBuilder 、StringBuffer .它们的内容是可以修改的。
    • String和基本数据类型修饰的变量。同样final表示地址不能修改,但是地址的存储跟常量的值有关,给他重新赋值会指向另外一个对象,地址就改变了。

    所以被final修饰的变量,不可变的是变量的引用,而不是变量的内容。

    相关文章

      网友评论

          本文标题:final修饰的变量

          本文链接:https://www.haomeiwen.com/subject/nrpqmctx.html