本模块适合 Java后端研发(业务岗、架构岗)
、Java安卓原生研发
等 Java 相关岗位的同学。
String a = "abc"; String b = "abc";
会创建几个对象?
String a = "abc"; String b = "abc";
会创建一个对象,因为 Java 中的字符串常量是存储在常量池中的,当创建一个字符串常量时,会先在常量池中查找是否存在相同的字符串常量,如果存在,则直接返回引用,如果不存在,则创建一个新的字符串常量。
在这个例子中,"abc"
是一个字符串常量。第一次执行 String a = "abc";
时,常量池中没有 "abc"
,所以会创建一个新的字符串对象并将其放入常量池中。第二次执行 String b = "abc";
时,常量池中已经有了 "abc"
,所以 b
会直接引用常量池中的这个对象,而不会创建新的对象。因此,a
和 b
都引用同一个字符串对象。
讲讲String
和StringBuffer
、StringBuilder
的区别
String
、StringBuffer
和StringBuilder
都是 Java 中的字符串类,它们之间的区别如下:
String
:String
是不可变的字符串类,一旦创建就不能被修改,每次修改都会创建一个新的字符串对象,效率较低。StringBuffer
:StringBuffer
是可变的字符串类,可以修改字符串的内容,是线程安全的,效率较低。StringBuilder
:StringBuilder
是可变的字符串类,可以修改字符串的内容,是非线程安全的,效率较高。
StringBuffer
和StringBuilder
的区别是StringBuffer
是线程安全的,StringBuilder
是非线程安全的,所以在单线程环境下,推荐使用StringBuilder
,在多线程环境下,推荐使用StringBuffer
。
讲讲String
的常用方法 API
String
类是 Java 中的字符串类,提供了一些常用的方法 API,如下:
public int length()
:返回字符串的长度。public char charAt(int index)
:返回字符串中指定位置的字符。public int indexOf(String str)
:返回字符串中指定子串的位置。public String substring(int beginIndex)
:返回字符串中从指定位置开始到末尾的子串。public String substring(int beginIndex, int endIndex)
:返回字符串中从指定位置开始到指定位置结束的子串。public String replace(char oldChar, char newChar)
:返回字符串中指定字符替换后的字符串。public String replace(CharSequence target, CharSequence replacement)
:返回字符串中指定子串替换后的字符串。public String toUpperCase()
:返回字符串中所有字符转换为大写的字符串。public String toLowerCase()
:返回字符串中所有字符转换为小写的字符串。public String trim()
:返回字符串中去除前后空格的字符串。public boolean equals(Object obj)
:判断两个字符串是否相等。public boolean equalsIgnoreCase(String anotherString)
:忽略大小写判断两个字符串是否相等。public boolean startsWith(String prefix)
:判断字符串是否以指定前缀开头。public boolean endsWith(String suffix)
:判断字符串是否以指定后缀结尾。public boolean contains(CharSequence s)
:判断字符串是否包含指定子串。public String[] split(String regex)
:返回字符串根据指定分隔符分割后的字符串数组。public byte[] getBytes()
:返回字符串的字节数组。public char[] toCharArray()
:返回字符串的字符数组。public int compareTo(String anotherString)
:比较字符串的大小。public int compareToIgnoreCase(String str)
:忽略大小写比较字符串的大小。public boolean isEmpty()
:判断字符串是否为空。
讲讲StringBuffer
的常用方法 API
StringBuffer
类是 Java 中的可变字符串类,提供了一些常用的方法 API,如下:
public synchronized int length()
:返回字符串的长度。public synchronized int capacity()
:返回字符串的容量。public synchronized char charAt(int index)
:返回字符串中指定位置的字符。public synchronized int indexOf(String str)
:返回字符串中指定子串的位置。public synchronized StringBuffer append(String str)
:追加字符串。public synchronized StringBuffer insert(int offset, String str)
:插入字符串。public synchronized StringBuffer delete(int start, int end)
:删除字符串。public synchronized StringBuffer replace(int start, int end, String str)
:替换字符串。public synchronized StringBuffer reverse()
:反转字符串。public synchronized String substring(int start)
:返回字符串中从指定位置开始到末尾的子串。public synchronized String substring(int start, int end)
:返回字符串中从指定位置开始到指定位置结束的子串。public synchronized String toString()
:返回字符串的字符串表示。public synchronized void setCharAt(int index, char ch)
:设置字符串中指定位置的字符。public synchronized void setLength(int newLength)
:设置字符串的长度。public synchronized void ensureCapacity(int minimumCapacity)
:确保字符串的容量。public synchronized void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
:将字符串中的字符复制到目标数组中。public synchronized void trimToSize()
:将字符串的容量调整为字符串的长度。
讲讲StringBuilder
的常用方法 API
StringBuilder
类是 Java 中的可变字符串类,提供了一些常用的方法 API,如下:
public int length()
:返回字符串的长度。public int capacity()
:返回字符串的容量。public char charAt(int index)
:返回字符串中指定位置的字符。public int indexOf(String str)
:返回字符串中指定子串的位置。public StringBuilder append(String str)
:追加字符串。public StringBuilder insert(int offset, String str)
:插入字符串。public StringBuilder delete(int start, int end)
:删除字符串。public StringBuilder replace(int start, int end, String str)
:替换字符串。public StringBuilder reverse()
:反转字符串。public String substring(int start)
:返回字符串中从指定位置开始到末尾的子串。public String substring(int start, int end)
:返回字符串中从指定位置开始到指定位置结束的子串。public String toString()
:返回字符串的字符串表示。public void setCharAt(int index, char ch)
:设置字符串中指定位置的字符。public void setLength(int newLength)
:设置字符串的长度。public void ensureCapacity(int minimumCapacity)
:确保字符串的容量。public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
:将字符串中的字符复制到目标数组中。public void trimToSize()
:将字符串的容量调整为字符串的长度。