java基础总结(java面试一)

八大数据类型:

  • 字节型
    • byte(Byte)/8
  • 浮点型
    • float(Float)/32
    • double(Double)/64
  • 布尔型
    • boolean(Boolean)/~
  • 字符型
    • char(Character)/16
  • 整型
    • short(Short)/16
    • int/(Integer)32
    • long(Long)/64
  • boolean 只有两个值:true,false。可以使用1bit来存储。但是具体大小没有明确规定。
  • JVM会在编译时期把boolean类型转换为int,true=1,false=0,java支持boolean数组但是是通过byte数组来实现的。

包装类型:

    • Integer x=2;自动装箱:Integer.valueOf(2)
    • int y=x;自动拆箱:X.intValue()

缓存池:

new Integer(123) 与 Integer.valueOf(123) 的区别在于:

  • new Integer(123) 每次都会新建一个对象;
  • Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

IntegerCache缓存池默认是-128-127

也可以在JVM中修改上限 XX:AutoBoxCacheMax=<size>来指定上限大小。

String:

  • java8中String是由final修饰,char数组
  • java9中用byte数组并使用coder标识使用了哪种编码
  • value数组被声明成final,这意味着value初始化以后就不能被修改了,因此保证了不可变性。

String用final修饰的好处:

  • 可以缓存哈希值
    • 因为String的hash经常被使用,比如HashMap中的key,不可变特性保证了只计算一次和hash值不变。
  • StringPool的需要
    • 如果一个String对象被创建过了,那么就会从StringPool中取得引用,只有String是不可变的,才可能使用StringPool。
  • 安全性
    • String 经常作为参数,String的不可变性保证了参数的不可变性。
  • 线程安全
    • 不可变性,天生具备线程安全。

String,StringBuffer,StringBuilder区别

  • 可变性
    • String不可变
    • StringBuffer和StringBuilder可变
  • 线程安全
    • String线程安全
    • StringBuffer线程安全(内部使用了Synchronized同步)
    • StringBuilder线程不安全

StringPool

  • 字符串常量池(StringPool), 保存着所有字符串字面量,这些字面量在编译时期就确定,不仅如此还能使用String的intern()方法在运行过程中向StringPool中插入新的字符串。
  • 当一个字符串调用intern()方法时,如果StringPool中已经存在一个字符串通过equals比较相等。那么就会返回StringPool中的引用,否则创建一个新的,返回新的引用。
  • 简而言之String中的intern方法就是StringPool中如果有这个字符串就返回这个字符串的引用,如果没有,就新建一个然后返回新的引用。
  • java7之前中StringPool被放到常量池中也就是永久代,java7之后放到堆中,因为永久代空间有限,大量字符串被创建容易出现OOM。

new String(“ABC”)

  • 使用这种方式一共会创建两个对象(前提是Stringpool中没有ABC的对象)
  • “AB
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值