String的概述
- String 代表字符串,字符串是常量,值不可改变,可以共享
- 字符串一旦初始化就不可改变。
//字符串的本身初始化后不可改变,而不是指向字符串中的变量不可改变
String str = "hello";
str += " world"; //str = str + " world";
System.out.println(str);
String的构造方法###
String str = "abc";
String str = new String();
// 创建一个空字符序列String str = new String(byte[] bytes);
// 根据一个字节数组创建一个字符串对象String str = new String(byte[] bytes,int offset,int length);
// 将指定字节数组从索引开始到指定长度结束的这一部分创建成一个字符串对象String str = new String(char[] value);
// 根据一个字符数组创建一个字符串对象String str = new String(char[] value,int offset,int length);
// 将指定字符数组从索引开始到指定长度结束的这一部分创建成一个字符串对象String str = new String(String origina());
// 根据一个字符串创建一个字符串对象
String的判断功能###
boolean equals(Object obj)
:比较字符串的内容是否相等boolean equalsIgnoreCase(String str)
:比较字符串的内容是否相等,但是忽略大小写boolean contains(String str)
:判断当前字符串是否包含指定字符串boolean startsWith(String str)
:判断当前字符串是否以指定字符串开始boolean endsWith(String str)
:判断当前字符串是否以指定字符串结束boolean isEmpty()
判断当前字符串是否为空
String的获取功能###
int length()
:获取字符串中字符的个数(字符串的长度)char charAt(int length)
:根据指定索引返回对象的字符,索引最小为0,最大是字符串长度-1int indexOf(int ch)
:获取指定字符第一次出现的索引位置,如果不存在返回-1
int indexOf(String str)
:获取指定字符串第一次出现的索引位置,如果不存在返回-1int indexOf(int ch,int fromIndex)
:获取指定字符从指定索引(包含指定索引)后第一次出现的索引位置,如果不存在返回-1
int indexOf(String str,int fromIndex)
:获取指定字符串从指定索引(包含指定索引)后第一次出现的索引位置,如果不存在返回-1String substring(int start)
:将指定索引前的所有字符串全部舍去,返回按照指定索引(包含指定索引)截取后的字符串String substring(int start,int end)
:返回以指定索引开始,到索引之间的字符串(包含start,不包含end)
String的转换功能###
byte[] getBytes()
:将字符串转换成字节数组char[] toCharArray()
:将字符串转换成字符数组static String copyValueOf(char[] chs)
:将字符数组转换成字符串static String valueOf(char[] chs)
:将字符数组转换成字符串static String valueOf(int i)
:将任意基本数据类型转换成字符串String toLowerCase()
:将字符串的大写字母转换成小写字母String toUpperCase()
:将字符串的小写字母转换成大写字母String concat(String str)
:连接字符串
String的其他功能###
#####替换功能#####
String replace(char old,char new)
:将字符串中的指定字符替换成新的字符String replace(String old,String new)
:将字符串中的指定字符串替换成新的字符串
#####切割#####
String[] split(String regex)
:根据指定的字符串进行分割,将原先的字符串分割成一个字符串数组
//当字符串是以分隔符开头的话,会分出来一个空字符
//当字符串是以分隔符结尾的时候,不会多出一个空字符,结果正常
String str = "1,2,3,4,5,6";
String[] arr = str.split(",");
for ( int i = 0; i < arr.length; i++){
System.out.println("编号:" + arr[i] );
}
#####去除字符串两侧空格#####
String trim()
:去除字符串两侧空格
#####按照字典顺序比较两个字符串#####
int compareTo(String str)
:让字符串按照ASCII表的顺序比较,使用当前字符串的ASCII表的对应数值减去指定字符串对应的数值int compareToIgnoreCase(String str)
:让字符串按照ASCII表的顺序比较,使用当前字符串的ASCII表的对应数值减去指定字符串对应的数值,忽略大小写
String的面试题###
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1==s2); //false 因为比较的是堆中对象的地址值
System.out.println(s1.equals(s2)); //true 因为字符串重写了equals方法,比较的是内容是否相等
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3==s4); //false 一个记录的是堆中的地址值,一个记录的是方法区常量池中的地址值
System.out.println(s3.equals(s4)); //true 因为字符串重写了equals方法,比较的是内容是否相等
String s5 = "hello";
String s6 = "hello";
System.out.println(s5==s6); //true 两个记录的都是方法区常量池中的地址值
System.out.println(s5.equals(s6)); //true 因为字符串重写了equals方法,比较的是内容是否相等