1. Java的8种基本数据类型的包装类
我们有时需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。
基本数据类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
包装类的继承关系
自动装箱和拆箱
JDK 1.5后,Java增加了自动装箱和自动拆箱的机制,方便基本类型和包装类型的相互转换操作。
在JDK 1.5以前,Integer i = 5是错误的,必须通过Integer i = new Integer(5)这样的语句来实现基本数据类型转换成包装类。在JDK 1.5之后,直接赋值是合法的,由编译器来完成转换。var list = new ArrayList<Integer>(); list.add(3);将自动的变换为list.add(Integer.valueOf(3));
相反的,当将一个Integer对象赋给一个int值时,将会自动的拆箱。编译器会将int n = list.get(i);转换为int n = list.get(i).intValue();
总结:
自动装箱的过程就是通过调用包装类的valueOf()方法实现的,而自动拆箱的过程是通过调用包装类的xxxValue()方法实现的。
String类的使用
String对象是不可变对象,就是对象内部的成员变量的值无法再改变。
/* The value is used for character storage.*/
private final byte[] value;
value值是final类型的,也就是常量,只能被赋值一次。
String常用方法:
StringBuffer和StringBuilder
abstract class AbstractStringBuilder implements Appendable, CharSequence {
/**
* The value is used for character storage.
*/
byte[] value;
}
StringBuffer和StringBuilder都继承自AbstractStringBuilder。可以看到,内部的字符数组没有用final修饰,随时可以修改。因此,StringBuffer和StringBuilder称之为“可变字符序列”。
- StringBuffer:线程安全,做线程同步检查,效率较低。
- StringBuilder:线程不安全,不做线程同步检查,效率较高,建议采用该类。
常用方法列表:
- public StringBuilder append(…)为StringBuilder对象添加字符序列
- public StringBuilder delete(int start,int end) 删除从start开始到end-1为止的一段字符序列
- public StringBuilder deleteCharAt(int index)删除此序列指定位置上的 char
- public StringBuilder insert(…)为StringBuilder对象指定位置插入字符序列
- public StringBuilder reverse()将字符序列逆转
- public String toString()返回此序列中数据的字符串表示形式