作者p52189 (粉红色的皮爷)
看板java
标题[问题] 请问字串大小
时间Fri Oct 5 09:41:21 2012
大家安安
我在书上读到一条题目
「同一个串在 C 中会占用 JAVA 约一半的记忆体空间」
这个答案是 false
可是书上前面又说
JAVA 使用 Unicode 来表示符号@@
Unicode 尺寸不是 ASCII 的两倍吗?
请问我误会了什麽呢??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.232.67
1F:推 LaPass:我直觉上也觉得是这样,还是说c中的字串也是unicode? 10/05 09:47
2F:→ p52189:C预设应该是ASCII 应该XD 10/05 09:56
我找到答案了
但不确定我的理解是不是正确
因为指令丛集使用的字组( word )大小是固定的
所以不论是 C 使用 ASCII 编码,或 JAVA 使用 Unicode
都会占去固定记忆体空间( 32 或 64 位元)
3F:推 PsMonkey:囧... 那处理中文字咧... 这比较基础好怪异 XD 10/05 11:33
4F:→ 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 多出什麽@@?
5F:→ qrtt1:什麽书那麽多诡异的问题。 10/05 12:44
7F:推 PsMonkey:第一题跟第二题是一样的吧? 10/05 13:42
8F:→ p52189:蛤一样吗@@!? 能不能详细一点解释 我很弱 囧 10/05 14:01
9F:→ Chikei:第一题...看C用啥编码而定,所以是错 10/05 14:36
10F:→ Chikei:第二题,Java是用UTF-16,所以会比C string大(如果是ASCII 10/05 14:37
11F:→ 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)
12F:→ Chikei:串变数 <- 这到底是三小,怎麽看都不是字串。 10/05 16:30
13F:→ p52189:我照抄的 书上就这样写 囧 10/05 16:34
14F:推 LaPass:那是大陆翻译还是纯粹漏字? 10/05 16:37
15F:→ p52189:是字串无误 我去徵到原文了XD 10/05 18:31