包裝類
基本數據類型 |
所佔字節 |
包裝類 |
byte |
1個字節 |
Byte |
short |
2個字節 |
Short |
int |
4個字節 |
Integer |
long |
8個字節 |
Long |
float |
4個字節 |
Float |
double |
8個字節 |
Double |
char |
2個字節 |
Character |
boolean |
不確定 |
Boolean |
數據的裝箱和拆箱
- 裝箱:將基本數據類型包裝成引用類型
- 拆箱:將引用類型裝換成基本數據類型
package waking.test.jh;
public class Demo07 {
public static void main(String[] args) {
int num = 1;
Integer n = 1;
System.out.println(Integer.valueOf(num));
System.out.println(n.intValue());
}
}
字符串
字符串常量:
字符串數據是常量,存儲在常量池中,常量池中不允許存儲相同的數據,字符串可以直接將數據賦值給對象引用
常量池的位置:jdk1.7之前,常量池的位置(jvm hotspot永久代)在中,jdk1.7(包括1.7)之後,常量池放在堆中。(方法區是Java SE規範中的一個概念)
字符串類型是不可變的,指的是原來指向的數據沒有變化,而是新開闢一個空間
字符串傳值方式和基本類型一致
- 內存分配:字符串實際數據存在串池中
- 字符串的方法有很多,可以觀看API
StringBuffer
- StringBuffer類是String的增強類,比如:插入、追加、替換功能更加強大,比字符串更加節省內存
package waking.test.jh;
public class Demo08 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("waking");
sb.append(false);
sb.append('c');
sb.append(110);
System.out.println(sb);
sb.delete(0, 1);
System.out.println(sb);
}
}
StringBuilder
- StringBuilder類也是字符串緩衝區,類中的方法與StringBuffer類中的方法使用方法一樣
- 區別在於StringBuilder類中的方法都是線程不安全的,而StringBuffer類中的方法都是線程安全
- StringBuilder效率比StringBuffer的高