Java基础知识 --- final 关键词

  final: 一段不可更改的存储单元,考虑以下场景:

1、一个永不改变的编译时常量。

2、一个在运行时被初始化的值,之后将不会改变。 

 一个既是static又是final是指该域只占据一段不能改变的存储单元。

引申:static和final 的区别。可以从功能出发点考虑: static 修饰的是一个域,表示只占据一个存储空间。其里面的值是可以随便修改的;而final强调的是存储单元的值恒定不变。一个修饰的是存储单元, 一个修饰的是存储的值

final 的应用:

(1) final 数据: 

   

package com.company;
class Value {
    int i;
    public Value(int i) {
        this.i = i;
    }

    public static class FinalValue {
        private String id;
        private final int valOne = 9;
        private final int j; // 空白final
        private static final int VAL_TWO = 19;
        public static final int VAL_THREE = 29;
        private Value v1 = new Value(11);
        private final Value v2 = new Value(22);
        private static final Value VAL_3 = new Value(33);
        private final int a[] = {1, 2, 3, 4, 5};
        public FinalValue(String id) {
            // 空白final初始化
            j=1;
            this.id = id;
        }

        public static void main(String[] args) {
            FinalValue fv1 = new FinalValue("fv1");
            fv1.v2.i++;
            fv1.v1 = new Value(9);
            for(int i =0; i<fv1.a.length;i++){
                fv1.a[i]++;
            }
              //fv1.valOne ++ ;
              //fv1.v2 = new Value(9);
              //fv1.VAL_3 = new Value(9);
              //fv1.a = new int[3];
            System.out.println(fv1);
            System.out.println("create final value");
            FinalValue fv2 = new FinalValue("fv2");
            System.out.println(fv1);
            System.out.println(fv2);
        }
    }
}

      当final 修饰基本数据类型,引用和数组的时候,定义的时候必须先初始化,初始化后不可以重新初始化.

      valone 和 VAL_TWO 都是带有编译时数值为final基本数据类型,可作为编译时常量. 修饰引用和数组的时候(数组名本质的该数组的引用名) .表示该引用名只可以指向初始化的域,不可以更改.所以不可以重新初始化.但里面的参数是可以随便赋值.

      j 是空白final ,指声明为final类型但没有赋值, 空白final在使用前必须要初始化.

(2) final 参数

   在方法中无法更改引用所指向的对象.  意味着只可以读取,不可以更改.

(3) final方法:

    主要应用于该方法如果被final修改,表示该方法不可以被覆盖 . private修饰的方法隐式的表明该方法是final类型.

    在继承中,即便是父子类方法名相同,但如果是final类型修饰的话,相当于生成一个方法,例如B 继承A, B 是不可以调用A 中final类型的方法.

(4)final 类.表示封装该类,不能被继承.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值