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字串
- 字串比較字串
- 字串-簡單字串比較字串
- PHP比較字串PHP字串
- python字串比較大小Python字串
- Java中的字串操作(比較String,StringBuiler和StringBuffer)Java字串UI
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- 字串拼接運算比較字串
- 字串比較的常用函式字串函式
- 使用String. localeCompare比較字串字串
- 字串大小寫轉換和字串的比較字串
- Java 比較器Java
- 844. 比較含退格的字串字串
- java--BEAN比較JavaBean
- java比較日期大小Java
- Java和JavaSciprt比較Java
- python如何比較兩個字串是否相等Python字串
- 演算法:比較含退格的字串演算法字串
- 利用compareTo方法進行字串比較排序字串排序
- Java的BigDecimal比較大小JavaDecimal
- Java中陣列判斷元素存在幾種方式比較詳解Java陣列
- JS嵌入html的方式及各種方式的比較JSHTML
- 請問有什麼比較好的方式來建立 facebook 的測試賬號
- java排序方式對比Java排序
- Java 中 Comparable 和 Comparator 比較Java
- Java中List集合效能比較Java
- python3中怎麼比較字串是否相等Python字串
- 漏洞解析——通用異常缺陷及字串比較缺陷字串
- 【C#】比較 Random 與 RandomNumberGenerator 生成隨機字串C#random隨機字串
- C#比較兩個字串的相似度【轉】C#字串
- mongodb資料遷移2種方式比較MongoDB
- java反射方式建立例項Java反射
- JS中使用new Array()與使用Array.from()方式建立二維陣列的效能比較JS陣列
- 常用的Java開發工具比較Java
- Java JIT與AOT效能比較 - foojayJava
- 雲原生Java與Golang比較 -lgorJavaGolang
- 【Java】浮點數相等性比較Java