跳至主要內容

Java基础

pptg大约 1 分钟

1. 八大基本数据类型

  • boolean/1
  • byte/8
  • char/16
  • short/16
  • int/32
  • float/32
  • long/64
  • double/64

基本类型都有对应的包装类型,在使用的时候,Java会自动的装箱和拆箱

Integer x = 1;  // 装箱
int y = x;      // 拆箱

1.1 缓冲池

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

  • boolean:true、false
  • byte:all
  • short:[-128 ... 127]
  • int:[-128 ... 127]
  • char:[\u0000 ... \u007F]

对于缓冲池内的对象创建有以下规则:

  • new Integer(100)多次调用会创建一个新对象
  • Integer.valueOf(100)多次调用会使用缓冲池的对象,如果两个对象都用了缓冲池的内容,此时==会判断为true
// 缓冲池内
Integer m = 100;
Integer n = 100;
System.out.println(m == n); // true

// 缓冲池外
Integer m = 323;
Integer n = 323;
System.out.println(m == n); // false

1.2 String

1.2.1 Final声明

String声明为final类型,所以无法被继承,而内部的值char也声明为final,所以无法改变,这样做有以下优点:

  • String可以缓存在堆中
  • Hash值可以缓存
  • 线程安全
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    private final char value[];
    ...
}

1.2.2 String、StringBuffer、StringBuilder

可变性线程安全
String不可变安全
StringBuffer可变不安全
StringBuilder可变安全,使用synchronized同步

1.2.3 缓冲池

类似Int中缓冲池的概念,String也有类似的概念,其中=intern()创建的对象都会在字符串常量池中引用,new则不会

String s1 = new String("aaa");
String s2 = new String("aaa");
System.out.println(s1 == s2);           // false

String s3 = s1.intern();
System.out.println(s1.intern() == s3);  // true

String s4 = "bbb";
String s5 = "bbb";
System.out.println(s4 == s5);           // true