一、目录
- String类介绍
- String类对象创建
- String类对象特性
- String类常见方法
二、String类介绍
- String对象用于保存字符串,也就是一组字符序列。
- 字符串常量对象是用双引号括起来的字符序列。例如:“hello”。
- 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。
- String类较为常用的构造方法
- String s1 = new String();
- String s2 = new String(String original);
- String s3 = new String(char[] a);
- String s4 = new String(char[] a, int startIndex, int count);
- String是final类,不能被其他类继承。
- String有属性 private final char value[]; 用于存放字符串内容。并且要注意,value是一个final类型,不可以修改。(指的是value的地址不可更改,里面的数据可以更改)
final char[] value = {'a', 'b', 'c'};
char[] v2 = {'t', 'o', 'm'};
value[0] = 'H'; //修改值是可以的
value = v2; //修改地址就会报错
三、String类对象创建
- 方式一:直接赋值String s = “hello”;
- 方式二:调用构造器String s = new String(“hello”);
两种创建String对象的区别:
- 方式一:先从常量池查看是否有"hello"数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址。
- 方式二:先在堆中创建空间,里面维护了value属性,指向常量池的hello空间。如果常量池没有hello,则重新创建,如果有,直接通过value指向。最终指向的是堆中的空间地址。
四、String类对象特性
- String是一个final类,代表不可变的字符序列。
- 字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的。
五、String类常见方法
String类是保存字符串常量的。每次更新都需要开辟空间,效率较低,因此java设计者还提供了StringBuilder和StringBuffer来增强String的功能,并提高效率。
- equals:区分大小写,判断内容是否相等。
- equalslgnoreCase:忽略大小写的判断内容是否相等。
- length:获取字符的个数,也就是字符串的长度。
- indexOf:获取字符在字符串中第一次出现的索引,如果找不到,返回-1。
- lastIndexOf:获取字符在字符串中最后一次出现的索引,找不到返回-1。
- substring:截取指定范围的子串。
- trim:去前后空格。
- charAt:获取某索引处的字符,注意不能使用Str[index]这种方式。
- toUpperCase:转换成大写。
- toLowerCase:转换成小写。
- concat:连接字符串。
- replace:替换字符串中的字符。
- split:分割字符串,对于某些分割字符,我们需要转义。
- compareTo:比较两个字符串的大小。
- toCharArray:转换成字符数组。
- format:格式化字符串。%s字符串 %c字符 %d整型 %0.2f浮点型