Java字串建立方式比較
public class Demo1 {
public static void main(String[] args){
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
String str4 = new String("hello");
System.out.println("str1==str2" + (str1==str2)); //true
System.out.println("str2==str3" + (str2==str3)); //false
System.out.println("str3==str4" + (str3==str4)); //false
System.out.println("str3.equals(str4)" + (str3.equals(str4))); //true
//String類重寫了Object的equals方法,比較的時兩個字串物件的內容
//"=="用於比較引用資料型別資料的時候比較的時兩個物件的記憶體地址,equals方法預設情況下比較也是兩個物件的記憶體地址
}
}
String str="hello"方式建立字串時,jvm會先檢查字串常量池是否存在該字串的物件,如果已經存在,那麼就不會在字串常量池中建立了,直接返回該字串在字串常量池中記憶體地址,如果該字串還不存在在字串常量池中,那麼就會在字串常量池中首先建立該字串的物件,然乎再將地址返回到棧記憶體中
new String(“hello”)這種方式建立字串時,jvm先會檢查字串常量池中是否存在"hello"的字串,如果已經存在,則不會在字串常量池中建立了,如果還沒有存在,那麼就會在字串常量池中建立"hello"字串,然後還會到堆記憶體中再建立一份字串的物件,把字串常量池中的"hello"字串內容拷貝到堆記憶體中的字串物件,然後返回堆記憶體中字串物件的記憶體地址。
相關文章
- JAVA字串比較Java字串
- Java™ 教程(比較字串和字串的部分)Java字串
- Java 字串比較、拼接問題Java字串
- 字串比較字串
- 字串-簡單字串比較字串
- 比較字串和數字串字串
- PHP比較字串PHP字串
- 比較字串和數字串(續)字串
- Delphi中字串比較大小 VS Oracle-SQL中字串比較大小字串OracleSQL
- java中四種操作xml方式的比較JavaXML
- python字串比較大小Python字串
- 字串拼接運算比較字串
- JavaScript字串如何比較大小JavaScript字串
- shell 下的字串比較字串
- LintCode 字串比較字串
- oracle中字串的大小比較,字串與數字的比較和運算Oracle字串
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- JavaScript 字串連線效能比較JavaScript字串
- 一個字串比較的題字串
- 字串大小寫轉換和字串的比較字串
- 通過shell來比較oracle和java中的字串使用OracleJava字串
- 透過shell來比較oracle和java中的字串使用OracleJava字串
- Java 比較器Java
- java集合遍歷的幾種方式總結及比較Java
- Pythondifflib字串比較指令碼Python字串指令碼
- shell比較兩個字串是否相等字串
- VC 中字串比較和查詢字串
- java比較日期大小Java
- Java和JavaSciprt比較Java
- java--BEAN比較JavaBean
- [java之list比較]Java
- JAVA IO效能比較Java
- 使用String. localeCompare比較字串字串
- 演算法:比較含退格的字串演算法字串
- 16:忽略大小寫的字串比較字串
- Java Integer型別比較Java型別
- Java 兩個日期比較Java
- Java中陣列判斷元素存在幾種方式比較詳解Java陣列