[問題] 關於 Java 的 call by value/reference
想請問一下
String s1 = "I learn";
s1 += " Java";
String s2 = "I";
s2 += " learn Java";
System.out.println(s1 == s2); //false
這個是 false 我可以理解,兩個的記憶體位置不同,因此不會是 true,
但我想問的是
String s1 = "I";
String s2 = "I";
System.out.println(s1 == s2);
既然如剛剛所說 Java 在定義變數時,記憶體位置不相同,應該要是 false,
那為何這邊是 true,在沒有二度賦值時又變成了 call by value?
還是說第一個例子的原理 不算是 call by reference?
剛開始學 Java,抱歉問題有點新手
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.24.244 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/java/M.1604245331.A.635.html
推
11/02 05:44,
4年前
, 1F
11/02 05:44, 1F
→
11/02 05:46,
4年前
, 2F
11/02 05:46, 2F
→
11/02 05:47,
4年前
, 3F
11/02 05:47, 3F
→
11/02 05:47,
4年前
, 4F
11/02 05:47, 4F
→
11/02 05:48,
4年前
, 5F
11/02 05:48, 5F
那如果是 call by value 第一個不應該是 false 吧
既然都是 call by value,不管字串做什麼樣的拼湊,如果 value 一樣那應該不會是 false?
※ 編輯: iceman5566 (61.222.53.63 臺灣), 11/02/2020 14:42:49
→
11/02 15:00,
4年前
, 6F
11/02 15:00, 6F
→
11/02 15:02,
4年前
, 7F
11/02 15:02, 7F
→
11/02 15:03,
4年前
, 8F
11/02 15:03, 8F
→
11/02 15:10,
4年前
, 9F
11/02 15:10, 9F
→
11/02 15:10,
4年前
, 10F
11/02 15:10, 10F
→
11/02 15:12,
4年前
, 11F
11/02 15:12, 11F
→
11/02 15:14,
4年前
, 12F
11/02 15:14, 12F
感謝大大 我懂了!
※ 編輯: iceman5566 (61.222.53.63 臺灣), 11/02/2020 15:18:03
推
11/03 04:34,
4年前
, 13F
11/03 04:34, 13F
→
11/03 04:35,
4年前
, 14F
11/03 04:35, 14F
→
11/11 01:40,
4年前
, 15F
11/11 01:40, 15F
→
11/11 01:40,
4年前
, 16F
11/11 01:40, 16F
→
11/11 01:41,
4年前
, 17F
11/11 01:41, 17F
→
11/11 01:42,
4年前
, 18F
11/11 01:42, 18F
→
11/11 01:42,
4年前
, 19F
11/11 01:42, 19F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章