看板 java 關於我們 聯絡資訊
大家安安 我在書上讀到一條題目 「同一個串在 C 中會佔用 JAVA 約一半的記憶體空間」 這個答案是 false 可是書上前面又說 JAVA 使用 Unicode 來表示符號@@ Unicode 尺寸不是 ASCII 的兩倍嗎? 請問我誤會了什麼呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.232.67
LaPass:我直覺上也覺得是這樣,還是說c中的字串也是unicode? 10/05 09:47
p52189:C預設應該是ASCII 應該XD 10/05 09:56
我找到答案了 但不確定我的理解是不是正確 因為指令叢集使用的字組( word )大小是固定的 所以不論是 C 使用 ASCII 編碼,或 JAVA 使用 Unicode 都會佔去固定記憶體空間( 32 或 64 位元)
PsMonkey:囧... 那處理中文字咧... 這比較基礎好怪異 XD 10/05 11:33
p52189:我不知道@@ 中文字有什麼問題嗎? 10/05 11:35
第二道問題 哪一種可容納1,000,000,000(十進制)的變數型態佔用最多記憶體空間 1. C 中的 int 2. C 中的 String 3. Java 中的 String 這個題目講的容納,應該是把數字當成字串來存的意思 就是 "1000000000" 這樣 1 肯定最小 問題在於 2 跟 3,為什麼 3 最大呢? 3 比 2 多出什麼@@?
qrtt1:什麼書那麼多詭異的問題。 10/05 12:44
p52189:http://tinyurl.com/823qeoj 10/05 13:25
PsMonkey:第一題跟第二題是一樣的吧? 10/05 13:42
p52189:蛤一樣嗎@@!? 能不能詳細一點解釋 我很弱 囧 10/05 14:01
Chikei:第一題...看C用啥編碼而定,所以是錯 10/05 14:36
Chikei:第二題,Java是用UTF-16,所以會比C string大(如果是ASCII 10/05 14:37
Chikei:要分清楚Unicode跟encoding implementing Unicode是不同的 10/05 14:43
感謝! 第一題我一開始認為是編碼的緣故 但在書上看到這一段 整段節錄給大家看一下 「MIPS 軟體會嚐試將堆疊對齊在字組位址上,以便程式可以單單使用 lw 和 sw (兩 者均對齊字組位址)來存取堆疊。這種慣例表示一個配置在堆疊上的字母符號即使 不需要也會佔用掉 4 個位元組。然而 C 的串變數或位元組的數列會將 4 個位元 組組成一個字組,而 Java 的短整數型態 ( short ) 的串變數或數列會將兩個半 字組組成一個字組。 」 我看完之後作了上面寫到的那些理解 請問我誤會了什麼嗎? ( 錯很大的話請不要笑我..Orz ) ※ 編輯: p52189 來自: 114.42.232.67 (10/05 15:22)
Chikei:串變數 <- 這到底是三小,怎麼看都不是字串。 10/05 16:30
p52189:我照抄的 書上就這樣寫 囧 10/05 16:34
LaPass:那是大陸翻譯還是純粹漏字? 10/05 16:37
p52189:是字串無誤 我去徵到原文了XD 10/05 18:31