String是一个对象,不是基本数据类型;
String的特点:字符串对象一旦初始化,便不能被修改;改变的只是引用型变量的指向;
例如:String str="abc"; String str = "ert"; "abc";依然存在,只是str的指向变了
String str ="abc"; String str = new String("abc"); 的区别:
第一个语句在字符串常量池中创建了一个对象,第二个语句new了一个对象,还在堆中创建了一个字符串对象
String类的构造函数
String byte = new String(byte [] arr);
按平台的默认字符集解码指定的byte子数组
String char = new String(char [] arr);
分配一个新的String,使其表示其字符数组参数中的字符序列
String类中的方法:
1.获取
1.1获取字符串长度 int length();
1.2根据位置获取字符 char charAt(int index);
1.3根据字符获取在字符串中第一次出现的位置
indexOf()一类的重载方法
根据字符串获取在字符串中最后一次出现的位置
lastIndexOf一类的重载方法
注意:如果返回值是-1,则说明该字符或者字符串不存在
1.4获取字符串中一部分字符串,也称子串
String substring(int beginIndex,int endIndex);
String substring(int beginIndex);
注意:截取长度等于endIndex – beginIndex(也就是包含beginIndex,不包括endIndex)
2.转换
2.1将字符串分解成多段(字符串数组)
String [] split(String regex); 根据正则表达式的匹配来分解
2.2将字符串变成字符数组
char [] toCharArray();
2.3将字符串变成字节数组
byte [] getBytes();
2.4改变字符串的大小写
String toUppercase(); 大写
String toLowerCase(); 小写
2.5替换字符串内容
String replace(char old,char new);
String replace(String old,String new);
2.6去除字符串俩端的空白
String trim();
2.7连接字符串
String concat(String regex); 将指定字符串连接到此字符串的末尾
3.判断
3.1比较俩个字符串的内容是否相同
boolean equals();
3.2忽略大小写对字符串内容进行比较
boolean equalsIgnoreCase(String str);
3.3字符串是否包含指定字符串
boolean contains(String str);
3.4字符串是否以指定字符串开头或者结尾
boolean startsWith();
boolean endsWith();
4.比较
int compareTo(String anotherString) 按字典顺序比较俩个字符串
参数字符串等于此字符串,返回值为0
参数字符串大于此字符串,返回值为负数
参数字符串小于此字符串,返回值为正数
5.intern():对字符串池进行操作
一个初始为空的字符串池,它由类 String 私有地维护。
当调用 intern 方法时,如果池已经包含一个等于此 String对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。
它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。