String类
字符串字面值"abc"可以看成是一个字符串对象
字符串是是常量,一旦被赋值,就不能在改变
String类的构造器
- public String():空构造
- public String(byte[] bytes):把字节数组转成字符串
- public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
- public String(char[] value):把字符数组转成字符串
- public String(char[] value,int index,int count):把字符数组的一部分转成字符串
- public String(String original):把字符串常量值转成字符串
String类的常见面试题
- 1.判断定义为String类型的s1和s2是否相等
- String s1 = “abc”;
- String s2 = “abc”;
- System.out.println(s1 == s2); //true 新建s1变量时,字符串"abc"不存在,于是在常量池中添加abc字符串,再建s2变量时直接调出常量池中的abc字符串,所有s1==s2
- System.out.println(s1.equals(s2)); //true equals()方法比较的是s1和s2的内容都是abc字符串,所以成立
- 2.下面这句话在内存中创建了几个对象?
- String s1 = new String(“abc”); // 创建了两个对象,常量池中abc以及堆区新建的abc
- 3.判断定义为String类型的s1和s2是否相等
- String s1 = new String(“abc”);
- String s2 = “abc”;
- System.out.println(s1 == s2); //false s1在堆区、常量池都有abc,s2只有常量池有内容
- System.out.println(s1.equals(s2)); //true 内容都是abc字符串
- 4.判断定义为String类型的s1和s2是否相等
- String s1 = “a” + “b” + “c”;
- String s2 = “abc”;
- System.out.println(s1 == s2); //true 常量池中字符拼接,s1和s2结果一样
- System.out.println(s1.equals(s2)); //true 内容都是abc字符串
- 5.判断定义为String类型的s1和s2是否相等
- String s1 = “ab”;
- String s2 = “abc”;
- String s3 = s1 + “c”;
- System.out.println(s3 == s2); //false 在执行第三行语句时默认s1为变量,再拼接字符串返回值会出错
- System.out.println(s3.equals(s2)); //true 内容都是abc字符串
String类的判断功能
- equals(Object obj):比较字符串的内容是否相同,区分大小写
- equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
- contains(String str):判断大字符串中是否包含小字符串
- startsWith(String str):判断字符串是否以某个指定的字符串开头
- endsWith(String str):判断字符串是否以某个指定的字符串结尾
- isEmpty():判断字符串是否为空。
以上方法的返回值类型均为Boolean类型
String类的获取功能
- length():获取字符串的长度。
- indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
- indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
- indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
- indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
- lastIndexOf(String str,int fromIndex):最后索引
以上方法返回值类型为int型 - substring(int start):从指定位置开始截取字符串,默认到末尾。
- substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
以上方法返回值类型为String型 - charAt(int index):获取指定索引位置的字符
返回值类型为char - spilt分割字符串
String类的转换功能
- byte[] getBytes():把字符串转换为字节数组。
- char[] toCharArray():把字符串转换为字符数组。
- static String valueOf(char[] chs):把字符数组转成字符串。
- static String valueOf(int i):把int类型的数据转成字符串。
- 注意:String类的valueOf方法可以把任意类型的数据转成字符串。
- String toLowerCase():把字符串转成小写。
- String toUpperCase():把字符串转成大写。
- String concat(String str):把字符串拼接。
String类的其他功能
- A:String的替换功能及案例演示
- String replace(char old,char new)
- String replace(String old,String new)
- B:String的去除字符串两空格及案例演示
- String trim()
StringBuffer
StringBuffer是一个线程安全的可变字符序列
与String最大的区别就是:String是一个不可变的字符序列,StringBuffer是一个可变的字符序列
StringBuffer的构造器
* public StringBuffer():无参构造方法
* public StringBuffer(int capacity):指定容量的字符串缓冲区对象
* public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
StringBuffer的添加功能
* public StringBuffer append(String str):
* 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
* public StringBuffer insert(int offset,String str):
* 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
StringBuffer的删除功能
* public StringBuffer deleteCharAt(int index):
* 删除指定位置的字符,并返回本身
* public StringBuffer delete(int start,int end):
* 删除从指定位置开始指定位置结束的内容,并返回本身
StringBuffer的替换和反转功能
- A:StringBuffer的替换功能
- public StringBuffer replace(int start,int end,String str):
- 从start开始到end用str替换
- public StringBuffer replace(int start,int end,String str):
- B:StringBuffer的反转功能
- public StringBuffer reverse():
- 字符串反转
- public StringBuffer reverse():
StringBuffer的截取功能
- public String substring(int start):
* 从指定位置截取到末尾- public String substring(int start,int end):
- 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
- 注意:返回值类型不再是StringBuffer本身,是String型
- public String substring(int start,int end):
StringBuffer和String的相互转换
- A:String – StringBuffer
- a:通过构造器
- b:通过append()方法
- B:StringBuffer – String
- a:通过构造器
- b:通过toString()方法
- c:通过subString(0,length);
StringBuilder
- StringBuffer和StringBuilder的区别:
StringBuffer是jdk1.0版本的,是线程安全的,效率低;
StringBuilder是jdk1.5版本的,是线程不安全的,效率高。
通常使用 StringBuilder - String和StringBuffer,StringBuilder的区别:
String是一个不可变的字符序列;
StringBuffer,StringBuilder是可变的字符序列。