String 类:
final class String
-
实例化方式:
直接赋值:
String str="hello";
通过构造方法:String str=new String("hello world");
-
字符串的相等比较:
“==”操作符用于比较两个变量的值是否相等,对于基本数据类型而言,比较的是数值的大小,对于引用类型而言,比较的实际是保存的地址是否相等而不会比较内容。 所以在字符串内容比较时,需要使用String类提供的equals()方法,区分大小写。如:str1.equals(str2); equalsIgnoreCase():不区分大小写
-
String类的匿名对象(没起名字的对象)
所有字符串常量都是 String类的匿名对象;
在比较字符串是否相等于特定字符串时,将字符串常量写在equals前,通过字符串常量来比较;如:"hello world"equals(str); -
两种实例化区别?
直接赋值与构造赋值
直接赋值:
在JVM内部会维护一个字符串常量池(对象数组)。若采用直接赋值的方式进行String类的实例化操作,那么该对象会自动保存到对象池之中。若下一次继续使用直接赋值的方式实例化String对象,先在对象池中寻找是否有指定内容对象,若有,则直接引用;否则创建新空间,将新对象入池以供下次使用。
构造方法:
当使用构造方法实例化字符串时,实际上会开辟两次空间(字符串常量;new);实例化后的对象并不会保存到对象池之中。可以使用intern()方法入池。
-
字符串常量不可变更:
表示堆中常量的值无法修改(更改的是引用),但是栈中的指向是可以改变;
字符串不要改变太多次,慎用“+” -
字符与字符串的相互转换:
字符数组转化为字符串(char[] -> String):
public String(char[] value):将字符数组全部转为字符串;
public String(char[] value,int offset,int len):将字符数组的部分内容转换为字符串;
将字符串转换为单个字符(String->char):
public char charAt(int index):取得字符串指定索引的字符,从0开始;
将字符串转换为字符数组(String -> char[]):
public char[] toCharArray():将字符串转换为字符数组;
- 字节转换为字符串(byte ->String):
字节数组转换为字符串(byte[] -> String)
字节用在二进制流与网络传输
public String(byte[] value):将字节数组全部转换为字符串;
public String(byte[] value,int offset,int len):将字节数组的部分内容转为字符串;
字符串转为字节数组(String -> byte[])
public byte[] getBytes():将字符串转为字节数组;
public byte[] getBytes(String charSet):将字符串按照指定编码格式转为字节数组;
Linux默认编码为UTF-8,Windows默认编码为GBK
-
字符串比较方法:
比较相等:
equals
equalsIngoreCase
比较大小:
public int compareTo(String anotherString):比较两个字符串的大小关系;
负数:小于 0:相等 整数:大于
compareTo()方法:按照ASCII码比较,只要发现不相等的内容算出差值直接返回,不会继续向下查找; -
字符串查找:
contains():判断一个子字符串是否存在;
indexOf():查找指定字符串的位置;
startsWith():判断是否以指定字符串开头;
endsWith():判断是否以指定字符串结尾; -
字符串替换:
public String replaceAll(String regex,String replacement):将字符串中所指定内容替换为新内容;
public String replaceFirst(String regex,String replacement):替换首个内容 -
字符串拆分:
public String[] split(String regex):按照指定格式将字符串全部拆分;
public String[] split(String regex,int limit):将字符串部分拆分,数组长度为限定limit长度; -
字符串截取:【左闭右开原则】
public String substring(int beginIndex):从指定索引开始截取到字符串结尾;
public String substring(int beginIndex,int endIndex):从指定索引开始到指定结束位置; -
其他方法:
trim():去掉字符串的左右两边空格,中间保留;
toUpperCase():将字符串转大写处理;
toLowerCase():将字符串转小写处理;
length():返回字符串长度;
isEmpty():判断是否为空字符串,不包含null;