8. String

汉字进行 UTF-8 编码,每个汉字占3个字节。进行 GDK 编码,每个汉字占2个字节。ISO-8859-1 则占一个字节。

为什么要有包装类

因为 Java 的某些特性和 API,例如泛型和集合,不支持基本数据类型,所以必须把基本数据类型转换为包装类的对象。

基本数据类型对应的包装类

byte -> Byte
short -> Short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Character
boolean -> Boolean

基本数据类型和包装类之间的转换

装箱

装箱就是把基本数据类型转换为包装类对象

Integer i = new Integer(10)   //手动装箱
Integer i = 10;                  //自动装箱

拆箱

拆箱就是把包装类的对象转换为基本数据类型

Integer i = new Integer(10);
int a = i.intValue();        //手动拆箱
int a = i;                     //自动拆箱

字符串转换为基本数据类型

String str = "123";
int i = Integer.parseInt(str);
int i = Integer.ValueOf(str);

基本数据类型转换为字符串

int a = 10;
String str = a + "";
String str = String.valueOf(a);

java.lang.String

特点:

  1. 字符串对象的不可变性
  2. String 类型是 final 修饰的,不能被继承

内部的存储结构

  1. JDK 1.9 之前: char []
  2. JDK 1.9 之后: byte[]

常用方法

1. length: 求字符串的长度
2. trim: 去掉前后空格
3. equals: 比较两个字符串内容是否相同
4. equalsIgnoreCase:比较两个字符串内容是否相同,忽略大小写
5. toUpperCase: 转大写
6. toLowerCase: 转小写
7. concat:字符串拼接
8. contains:是否包含
9. toCharArray:转换为字符数组
10. charAt:返回某个索引位置的字符
11. itern:把结果放到常量池中
12. startWith:判断字符串是否以 xxx 开头
13. endsWith:判断字符串是否以 xxx 结尾
14. indexOf:查找某个字符或者字符串在当前字符串中的索引位置,是从左往右进行查找
15. lastIndexOf:查找某个字符或者字符串在当前字符串中的索引位置,是从右往左进行查找
16. subString:从当前字符串截取一个子串
17. matches:判断当前字符串是否匹配xx规则
18. replace:替换字符串,不支持正则
19. replaceFirst:替换首次出现的字符串,支持正则
20. replaceAll:替换所有出现的字符串,支持正则
21. split:拆分
22. isEmpty:判断当前字符串是否为空
23. getBytes:将当前字符串按照某种字符编码进行编码,从而转为字节序列
24. String(bytes[]…):把字符序列按照某种字符编码进行解码,从而转换为字符
25. String(char[]…):把字符串数组重新构建为一个字符串

与字节数据的转换

转为字节数组(编码):方法为 getBytes(),返回值为 byes[]
转为字符串(解码):方法为 String(byes[])

与字符数据的转换

转成字符数组:toCharArray()
转为字符串:new String(char[])

 上一篇
9. StringBuffer 9. StringBuffer
StringBufferString 类型是不可变的字符序列,所以又配备了另一个类 StringBufer,它是可变的字符序列。StringBufer 有称为字符串缓冲区。内部用 char 数组存储。 StringBuffer 采用 ch
2019-10-24
下一篇 
7. 异常 7. 异常
异常java.lang.Throwable 是 Java 语言中所有错误或异常的超类。 1. ErrorError 是 Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题。例如 VirtualMachineError
2019-10-20
  目录