据我所知:
- “bytewise”,看起来它们是相同的(它们都是 2 个字节长);
-
Character
然而,有更多的处理(静态.isLetter()
方法等)。
虽然我的问题听起来很愚蠢,但它们是:
- 除非我的第一个假设是错误的,否则为什么会有原始类型
char
and short
因为它们具有相同的“内部长度”,并且无论如何,Java 中没有无符号原始类型?
-
Short
is final
,如果不是的话,可以Character
已延长Short
?
EDIT:给出答案,我错了:有isJava 中的一种无符号原始类型,那就是……char
.
EDIT 2:@PatriciaShanahan 中也提到了这一点算术操作,一个char
行为类似于无符号 16 位整数,就像short
。这包括左移,即符号位is随身携带,就像short
.
本质的区别在于short
已签署,char
是未签名的。
public class CharVsShort {
public static void main(String[] args) throws Exception {
short ffShort = (short)0xFFFF;
char ffChar = (char)0xFFFF;
System.out.println("all-1s-short = " + (int)ffShort);
System.out.println("all-1s-char = " + (int)ffChar);
}
}
prints
all-1s-short = -1
all-1s-char = 65535
The Java 语言规范第 4.2 节指出
积分类型有byte
, short
, int
, and long
,其值为8位、16位、32位和64位signed分别是二进制补码整数,以及char
,其值为 16 位unsigned表示 UTF-16 代码单元的整数
(我的大胆)。它还明确给出类型的范围为
-
byte
,从 -128 到 127(含)
-
short
,从 -32768 到 32767(含)
-
int
,从 -2147483648 到 2147483647,包含在内
-
long
,从 -9223372036854775808 到 9223372036854775807,包含在内
-
char
,从 '\u0000' 到 '\uffff'(含),即从 0 到 65535
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)