尚硅谷Java筆記Day30
###### String
String是不可變性
final,不可繼承
本質(zhì)上是char型數(shù)組
```java
public class StringTest {??
? ? public static void main(String[] args) {??
? ? ? ? String s1 = "abc";??
? ? ? ? String s2 = "abcd";??
? ? ? ? System.out.println(s2);??
? ? ? ? String s3 = s2.replace("a", "m");??
? ? ? ? System.out.println(s2);??
? ? ? ? System.out.println(s3);??
? ? ? ? s2 += "我是貓";? //+拼接的賦值操作
? ? ? ? System.out.println(s2);??
? ? }??
}
C:\Users\Administrator\.jdks\openjdk-19.0.2\bin\java.exe "-javaagent:D:\IntelliJ IDEA Community Edition 2021.3.2\lib\idea_rt.jar=10102:D:\IntelliJ IDEA Community Edition 2021.3.2\bin" -Dfile.encoding=UTF-8 -classpath "D:\Java work\workspace_idea1\out\production\day01" com.atguigu.java.StringTest
abcd
abcd
mbcd
abcd我是貓
Process finished with exit code 0
```
String s1=new String("abc")
造了兩個對象,一個是堆空間的new的對象,另一個是char型數(shù)組
String s2=new String("abc")
**堆**空間地址值不同,s1,s2不同
s1所在的位置叫做**棧**
構(gòu)造器構(gòu)造中的形參String類型,其new的對象地址值直接指向**方法區(qū)** **字符串常量池** 中的char型數(shù)組,本質(zhì)上假如內(nèi)容相同的話是,".equals"的結(jié)果是true.
只要存在變量名的,相當于new了一個對象,存在于堆空間中;
常量與常量的拼接結(jié)果在常量池。且常量池中不會存在相同內(nèi)容的常量。
只要其中有一個是變量,結(jié)果就在堆中
如果拼接的結(jié)果調(diào)用intern()方法,返回值就在常量池中
```java
import org.junit.Test;??
??
/**??
?* @author ulkagg??
?* @create 2023-02-1919:10??
?*/public class StringTest2 {??
? ? @Test??
? ? public void Test() {??
? ? ? ? String s1 = "abc";??
? ? ? ? String s2 = "def";??
? ? ? ? String s3 = "abc" + "def";??
? ? ? ? String s4 = s1 + "def";??
? ? ? ? String s5 = s1 + s2;??
? ? ? ? System.out.println(s3==s4);??
??
? ? }??
}
```
***引用數(shù)據(jù)類型傳遞地址值,基本數(shù)據(jù)類型傳遞數(shù)據(jù)***
###### String常用方法 p19
? int length():返回字符串的長度: return value.length
? char charAt(int index): 返回某索引處的字符return value[index]
? boolean isEmpty():判斷是否是空字符串:return value.length == 0
? String toLowerCase():使用默認語言環(huán)境,將 String 中的所有字符轉(zhuǎn)換為小寫
? String toUpperCase():使用默認語言環(huán)境,將 String 中的所有字符轉(zhuǎn)換為大寫
? String trim():返回字符串的副本,忽略前導空白和尾部空白
? boolean equals(Object obj):比較字符串的內(nèi)容是否相同
? boolean equalsIgnoreCase(String anotherString):與equals方法類似,忽略大
小寫
? String concat(String str):將指定字符串連接到此字符串的結(jié)尾。 等價于用“+”
? int compareTo(String anotherString):比較兩個字符串的大小
? String substring(int beginIndex):返回一個新的字符串,它是此字符串的從
beginIndex開始截取到最后的一個子字符串。
? String substring(int beginIndex, int endIndex) :返回一個新字符串,它是此字
符串從beginIndex開始截取到endIndex(不包含)的一個子字符串。
