String类:特殊的引用类型
字符串是常量;它们的值在创建之后不能更改。(常量是在方法区中:字符串常量池 :前提:将字符串常量直接赋值的形式 )
构造方法:
String() :空参构造
String(byte[] bytes):将字节数组-->String 数据
String(byte[] bytes, int offset, int length):将字节数组的一部分转换字符串
String(char[] value) :将字符数组转换成字符串
String(char[] value, int offset, int length):将字符数组的一部分转换字符串
public String(String original) :创建一个字符串对象:传递字符串常量
注意:
字符串变量相加,是先开辟空间(不是先相加),在看常量池中是否有这个字符串常量..
字符串常量相加,是先拼接(先相加),在开辟空间
String类常见的功能:
public boolean equals(Object anObject) :比较字符串的内容是否相同
public boolean equalsIgnoreCase(String anotherString):比较内容是否相同,忽略大小写
public boolean contains(String s):判断大字符串中是否包含一个子字符串
public boolean startsWith(String prefix):判断字符串是以...开头
public boolean endsWith(String suffix):判断字符串是以...结尾
public boolean isEmpty() :判断字符串是否为空
String的获取功能:
int length():获取字符长度
public char charAt(int index):获取指定索引中的字符。
public int indexOf(int ch)返回指定字符在此字符串中第一次出现的索引。
public int indexOf(String str)返回指定字符串在大字符串中第一次出现的索引。
public int lastIndexOf(int ch)返回指定符在该字符串中出现的最后一次的索引。
public String substring(int beginIndex)返回从指定位置开始截取,默认截取到末尾,后的字符。
public String substring(int beginIndex,int endIndex)返回从指定位置开始截取,截取到指定位置结束。(包前不包后)
String类型的转换功能:
byte[ ] getBytes() 将字符转换成字节数组。
public char [ ] toCharArray() 将字符串转换成字节数组。
valueOf(XXX 变量名); 可以将任意类型转换成String类型。
public String toLowerCase() 将字符串转换成小写。
public String toUpperCase() 将字符串转换成大写
String类型的连接功能:
public String concat(String str) 将指定字符串连接到此字符串的结尾。
String的其他功能,
替换功能:
String replace (char oldChar,char newChar)将指定字符替换以前的字符。
String replace(String oldStrind,String newString)将指定字符串替换以前的字符串。
去除两端空格:
public String trim()去除字符串两端的空格。
按字典顺序比较:
public intcompareTo(String anotherString) 字符串的比较方法。
eg:String st1 = “hello”;
String st2 = “word”;
System.out.println(s1.compareTo(s2)); //比较
这个方法会将字符串自动转换成字符数组,先获取两个字符串的长度,把短的字符串长度值赋给int lim, 当st1的第一个字符‘h‘不等于st2的第一个字符’w’时,返回第一个字符 – 第二个字符 ‘ h’ – ‘w’;当等于时,比叫st1的第二个字符和st2的第二个字符,直到lim,如果知道第lim个字符时,都相等,就返回第一个字符数组的长度-第二个字符数组长度。
StringBuffer:线程安全的可变字符序列。
线程安全——> 同步——>执行效率低
线程不安全——>不同步——>执行效率高
StringBuffer和String的区别:
前者是线程安全类,可变的字符序列,内存中提供字符串缓冲区,后者是不可变的字符序列; 从内存角度考虑,前者优先于后者。
String: 在方法区中开辟空间——>占内存;
StringBuffer:里面存在初始容量里面不断的追击字符串(append)。
StringBuffer的构造方法:
public StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity):指定容量大小
public StringBuffer(String str):构造一个字符串缓冲区:里面的容量(字符串内容英文)大小:字符串长度+16初始容量。
StringBuffer的获取功能:
public int capacity() 初始容量。
int length() 返回字符串长度。
StringBuffer的添加功能:
StringBuffer append(xxx x) 将指定内容追加(末尾追加)到字符串缓冲区中,返回StringBuffer本身。
public StringBuffer insert(int index,xxx x)在指定位置处插入一个新的内容,返回StringBuffer本身。
StringBuffer的删除功能:
StringBuffer deleteCharAt(int index) 删除指定位置的字符,返回StringBuffer本身。
StringBuffer delete(int start,int end) 删除从指定位置开始,到指定位置结束,返回StringBuffer本身。
StringBuffer的替换功能:
public StringBuffer replace(int start,int end,String str) 从指定位置开始到指定位置结束,用给定的str字符串替换指定的字符内容
StringBuffer的反转功能
StringBuffer reverse()
StringBuffer的截取功能:
String substring(int start) :从指定位置默认截取到末尾,返回一个新的字符串
String substring(int start,int end):从指定位置开始截取到指定位置结束