包装类
基本数据类型 |
所占字节 |
包装类 |
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的高