String 相加解析原理

2021-08-25 10:56:12 字數 558 閱讀 8500

public static void main(string args)
輸出結果為  true  ,false , true

首先要明確的是 引用資料型別 == 比較的是位址值,equal 沒重寫比較的是位址值,重寫之後比較的是內容.string重寫了,stringbuffer沒有重寫

其次:a==c 為true是因為 b為final型別,當final變數是基本資料型別以及string型別時,如果在編譯期間能知道它的確切值,則編譯器會把它當做編譯期常量使用。也就是說在用到該final變數的地方,相當於直接訪問的這個常量,不需要在執行時確定。因此在上面的一段**中,由於變數b被final修飾,因此會被當做編譯器常量,所以在使用到b的地方會直接將變數b 替換為它的  值。所以 c = b+2 等於 c = 「hello」+「2」 同e

a ==f 為true 是因為: 常量相加的時候,其實是在編譯的時候就直接相加為「hello2」,這是jvm的優化,所以執行的時候,a和f的位元組碼是一樣的。因為在常量池中有了乙個「hello2」,所以兩個引用指向的是乙個字串「hello2」,所以返回結果也是true。

String例項解析

1.編寫乙個程式,輸出乙個字元 串的大寫英文本母數,小寫英文本母數以及非英文本母數。方法一 public class teststring else if c a c z else system.out.println lcount ucount ocount 方法二 public class te...

String原始碼解析

string類被final修飾詞修飾,代表不可修改的特性,它實現了三個介面,serializable是序列化介面,compareble是排序介面,char是字串行介面。public final class string implements serializable,comparable,chars...

String類常用方法解析

string str01 abc string str02 newstring abc equals方法業務場景,登入的時候輸入的使用者名稱和密碼 system.out.println str01.equals str02 輸出為truestring str01 abc string str02 n...