qstring 字符相同 不相等_我的编程手册 -- Java 基础篇·字符串 String
生活随笔
收集整理的這篇文章主要介紹了
qstring 字符相同 不相等_我的编程手册 -- Java 基础篇·字符串 String
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在程序開發中,我們最常用的就是字符串,我們經常聲明或初始化各類字符串。
- 針對String 類型的字符串,a=null,說明其不指向內存區任何一個字符串,但是a=“”不同,其指向內存中常量中的一個空的字符串,所以本質上,這倆a 就是不同的。
- 如果你Debug 業務代碼時,仔細觀察,你會發現,每一個對象都有一個唯一標識,這個標識其實就是hashCode(棧中存儲指向堆的一個地址) ,你可以看下,只要你用到new 關鍵字了,即便其對象初始化的值一樣,那也是兩個對象。
- new String("對象");這個語句創建對象的數量,完全取決于JVM 中常量池里是否有“對象”這個值,如果沒有,其會在堆中創建一個對象的同時,也會在常量池中創建一個對象,并從棧指向堆,再由堆指向常量區。
- “==”運算符在我們開發業務代碼時,用來比較基本數據類型是否相同的常用方法。如果是字符串的話,這種方式就比較蠢了,畢竟這個運算符比較的是的是引用變量,而兩個相同字符串的引用變量未必是一樣的。
- 如果你想比較字符串真正的值是否相等的話,用equals 方法實際上再好不過了,但都是有前提的,Object 類中的equals ,你跟下源碼讀一下,方法里面就是用的“==”運算符,但是有一點你要知道,就是父類中方法是可以被子類重寫的,所以我們在用equals 比較兩個字符串的值是否相等時,用的都是重寫后的方法。
- Object 類中還有一個hashCode() 方法,用來生成hashCode值得,如果不重寫這個方法的前提下,任何對象由hashCode()從內存中地址轉換成的那個int 值,都是唯一的。
- 開發業務代碼的時候,我們一般用不上這個方法的,唯一用到點的就是HashMap,我們Map 中的Key 都是唯一的,即便是空串,Key 之所以不可重復,底層就是用到了這equals方法和hashCode()方法,而且只要有其中一個方法比較出來不同,就認為這個key是不同的,即便其看起來一樣。
總結
以上是生活随笔為你收集整理的qstring 字符相同 不相等_我的编程手册 -- Java 基础篇·字符串 String的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金蝶kis商贸采购单商品代码_金蝶KIS
- 下一篇: java类验证和装载顺序_java类加载