Java之final关键字&包装类

Final关键字:

  1. final 可以修饰变量、方法、类
  2. 作用:
    1. final 修饰的基本数据类型不能被二次赋值
    2. final 修饰的引用类型不能被二次指向
    3. final 修饰的方法不可被子类重写
    4. final 修饰的类不可被继承
    5. final 防止指令重排序,保障一定程度上的线程之间可见性
  3. 修饰引用类型变量:
    1. 不可改变引用类型的地址
    2. 可以改变引用类型变量中的值
    3. final int[] arr = new int[]{1,2,3,4,5};
      arr[2] = 999;    //此操作可执行
  4. 常量运算:
    1. 如果进行运算的是两个常量,此时计算数值的大小运算,然后再判断是否满足类型范围,满足之后进行赋值
  5. ALU算数逻辑单元:
    1. ACC累加器:
      1. ACC累加器的大小:与计算机位数相关
      2. 数据默认计算 32 位数据,而 final 固定了计算位数,不用向上转型为 int
    2. 作用:进行算数运算、逻辑运算、移位运算
    3. 基本数据类型的运算:
      1. 默认转换为 int 类型数据进行计算
      2. 因为在 ALU 算数逻辑单元中最少占 32 位
    4. 被 final 修饰之后,会根据数据的类型进行计算,不会默认向上转型为 int 类型,此时可以被同类型变量接收

包装类:

  1. 定义:满足万物皆对象(针对基本数据类型)
  2. 目的:节省内存空间
  3. 基本数据类型不是包装类的简写形式
  4. 基本类型的包装类:
    1. int  ==>  Integer
    2. char  ==>  Character
  5. 自动拆装箱(仅限于包装类):
    1. 自动装箱:基本数据类型直接转换为引用数据类型
    2. int a = 10;
      //会编译成 Integer b = Integer.valueOf(10);
      Integer b = a;    //自动装箱操作
    3. 自动拆箱:引用数据类型转换为基本数据类型
      1. 包装类和基本数据类型会自动拆箱
        Integer a = 10;
        //会编译成:int b = a.intValue();
        int b = a;    //自动拆箱操作
  6. 128陷阱:
    1. Integer 类型创建对象时会创建要给大小为 256 的数组,值为 -128 -- 127
    2. 创建 Integer 对象时,传入的值在 -128 -- 127 之间会返回 Integer 数组中数值相对应的地址
    3. 如果传入的值超出范围,就会在堆内存中开辟一块新的 Integer 对象存储这个值
  7. ==:
    1. 基本数据类型判断的是值是否相等,对应用类型来说判断的是地址是否相等
    2. Integer 类型数据 == int类型
      1. 这时会涉及到自动拆箱操作,判断值是否相等
    3. Integer a = 10;
      int b = 10;    
      System.out.println(a == b); // true
      //因为 a 会进行拆箱操作,再进行值得对比
  8. equals()方法:
    1. 在 Object 类中 equals() 方法进行了重写(如下图)
    2. 调用 equals() 方法,需要传入一个 Integer 类型的数据,如果传入的是整形 int 类型数据,会进行装箱操作进行传值
    3. 进入到 equels() 方法中又将会把两个 Integer 类型的数据进行拆箱,进行 int 类型值的比较,返回它们的比较结果(true 和 false)
      1. Integer 类型中 equels() 比较不涉及到地址,只涉及到它们拆箱后的值

封装:

  1. 作用:隐藏事物的实现细节,对外提供公开的访问方式
  2. 好处:
    1. 隐藏事物的实现细节
    2. 提高代码的复用性
    3. 提高安全性
  3. 原则:
    1. 隐藏事物的属性
    2. 隐藏事物的实现细节
    3. 对外提供公开的访问方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值