Java

本文详细介绍了Java的基础知识,包括数据类型的自动装箱、缓存池、String的特点,运算中的参数传递和隐式类型转换,继承机制,Object类的方法,关键字final和static的使用,以及反射、异常处理、泛型的概念。重点讲解了String Pool,强调了String的不可变性和使用场景,同时对比了String、StringBuffer和StringBuilder。此外,还讨论了Java中的抽象类和接口的区别,以及super关键字的作用。
摘要由CSDN通过智能技术生成

Java基础

数据类型

自动装箱

Integer x = 2;     // 装箱 调用了 Integer.valueOf(2)
int y = x;         // 拆箱 调用了 X.intValue()

缓存池

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

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

自动装箱过程中会自动调用 valueOf()

Java8 中基本类型对应的缓冲池如下

  • boolean values true and false
  • all byte values
  • short values between -128 and 127
  • int values between -128 and 127
  • char in the range \u0000 to \u007F

String

String 被声明为 final ,因此它不可被继承。且不可变

//Java8 中 String 声明
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
   
    private final char value[];
}

//Java9 中改用 byte 数组存储,同时使用 coder 表明使用哪种编码
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
   
    /** The value is used for character storage. */
    private final byte[] value;

    /** The identifier of the encoding used to encode the bytes in {@code value}. */
    private final byte coder;
}

不可变好处:

  1. 线程安全
  2. 安全性好
  3. 可以缓存 hash 值
  4. String pool 的需要
String, StringBuffer, StringBuilder 比较
  1. String, StringBuffer 线程安全 --》 StringBuffer 加了同步锁
  2. StringBuffer, StringBuilder 为可变字符串
  3. StringBuilder 性能稍微比 StringBuffer 好
String Pool

字符串常量池(String Pool)保存着所有字符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值