Java复习第一天笔记记录-数据类型/final关键字

文章只是用作记录
数据类型:
强调:自动装拆箱是在jdk1.5之后
整型==》
int---------------->4个字节------>包装类:Integer
short------------>2个字节------>包装类:Short
long------------->8个字节------>包装类:Long
byte------------->1个字节------>包装类:Byte
浮点型=》
float------------->4个字节------>包装类:Float
double---------->8个字节------>包装类:Double
char型=》
char------------->1个字节------>包装类:Character
Boolean型=》
boolean-------->1/8或1或4 个字节(自己找的资料,书中并没有对这个进行解释)------>包装类:Boolean
1/8个字节:
boolean型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中按位算,仅需1位(bit)即可存储,1bit=1/8个字节;
1个字节:
虽然编译后1个0只需占用1个bit位,但计算机处理数据 的最小单位是1个字节,1个字节为8个bit位,实际存储:用1个字节的最低位存储,其他7位用0填补
4个字节:
在《Java虚拟机规范》中,Java语言表达式所操作的boolean值,在编译后都是用Java虚拟机中的int类型来替代,也就是说JVM规范指出boolean当做int处理,也就是4个字节。
为什么虚拟机采用int来替代boolean型数据,不用byte或者short?
这样不是更节省空间,使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),32 位 CPU 使用 4 个字节是最为节省的,哪怕你是 1 个 bit 他也是占用 4 个字节。因为 CPU 寻址系统只能 32 位 32 位地寻址,具有高效存取的特点。
————————————————
关于Boolean类型占用字节的解释–原文链接:https://blog.csdn.net/YuanMxy/article/details/74170745
final关键字
一。修饰类
表示这个类不能被继承,用final修饰的类中成员变量可以根据需求设置final,但是类中所有的成员方法都别隐式的指定为final方法。
被设计为final类的有string和System等
二。修饰方法
被final修饰的方法不能被重写,可以重载,一个类的 private方法会隐式的被指定为final方法。
使用final修饰方法的原因:
1.将方法锁定:以防任何类继承修改它的含义
2.效率:在早期Java版本中,将final方法转为内嵌调用。但是由于方法太过庞大,看不到内嵌调用带来的任何性能提升。在后期的Java版本中,不需要使用final方法进行这些优化了。
三。修饰成员变量
必须要赋予初始值,而且只能初始化一次。
被final修饰的成员变量赋值方法有两种:
1.直接赋值
2.全部在构造方法中赋值
如果修饰的成员变量是一个引用类型,则这个引用的地址的值不能修改,但是这个引用中的属性变量的内容可以改变。

此处代码块,借鉴来的


public class TestFinal {
    public static void main(String[] args) {
        final StringBuilder sb = new StringBuilder("123");
        // 同一对象的hashCode值相同
        System.out.println("sb中的内容是:" + sb);
        System.out.println(sb + "的哈希编码是:" + sb.hashCode());
        sb.append("我变了");
        System.out.println("sb中的内容是:" + sb);
        System.out.println(sb + "的哈希编码是:" + sb.hashCode());
        System.out.println("-----------------哈希值-------------------");
        TestFinal test = new TestFinal();
        System.out.println(test.hashCode());
        System.out.println(Integer.toHexString(test.hashCode()));
        System.out.println(test.getClass().getName() + "@"
                + Integer.toHexString(test.hashCode()));
        System.out.println(test.toString());
    }
}

结果:

sb中的内容是:123
123的哈希编码是:14576877
sb中的内容是:123我变了
123我变了的哈希编码是:14576877
-----------------哈希值-------------------
12677476
c17164
pnunu.oa.test.TestFinal@c17164
pnunu.oa.test.TestFinal@c17164
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值