Java 字符数组
这个问题在谷歌上很难被问到,尽管它很简单。 基本上我是这样写的:Java 字符数组,java,arrays,char,Java,Arrays,Char,这个问题在谷歌上很难被问到,尽管它很简单。 基本上我是这样写的: public static void main(String[] args) { char cipher[] = {'a','b','c','c','d','t','w'}; System.out.println(cipher[0]+cipher[2]); } } println的结果是:196而不是ac。当然,当我这样做的时候 System.out.p
public static void main(String[] args) {
char cipher[] = {'a','b','c','c','d','t','w'};
System.out.println(cipher[0]+cipher[2]);
}
}
println的结果是:196而不是ac。当然,当我这样做的时候
System.out.println(cipher[0]+""+cipher[2]);
它向我展示了ac的本意。
所以我的问题是这是什么196?
谢谢
所以我的问题是这是什么196
它是“a”(97)的UTF-16代码单位,然后是“c”(99)的UTF-16代码单位
除了字符串串联之外,加法运算符的操作数进行二进制数字提升(),因此实际上执行的是int
值的加法。您的代码相当于:
System.out.println((int) cipher[0] + (int) cipher[2]);
所以我的问题是这是什么196
它是“a”(97)的UTF-16代码单位,然后是“c”(99)的UTF-16代码单位
除了字符串串联之外,加法运算符的操作数进行二进制数字提升(),因此实际上执行的是int
值的加法。您的代码相当于:
System.out.println((int) cipher[0] + (int) cipher[2]);
196是ASCII值“a”+ASCII值“c”
当您将
char
s添加到一起时,没有任何其他提示,Java将它们解释为数字。196是“a”的ASCII值+ASCII值“c”
当您将
char
s添加到一起时,没有任何其他提示,Java将它们解释为数字。在Java中,char
本质上是一个无符号的16位整数,其整数值对应于Unicode值。196是'a'ja'c'的整数表示形式之和。在Java中,char
本质上是一个无符号16位整数,其整数值对应于其Unicode值。196是'a'ja'c'的整数表示之和。结果196是ASCII值de'a'(ASCII 97)+'c'(ASCII 99)。结果196是ASCII值de'a'(ASCII 97)+'c'(ASCII 99)。比我快10秒。无论如何。。。被一个617k的家伙打败我并不太失望;)+1一个char
是一个无符号的16位整数,当您将其中两个与+
相加时,您会得到一个int
类型值。@Izmaki是一个617k的家伙!?你的意思是不止一个;)比我快10秒。无论如何。。。被一个617k的家伙打败我并不太失望;)+1一个char
是一个无符号的16位整数,当您将其中两个与+
相加时,您会得到一个int
类型值。@Izmaki是一个617k的家伙!?你的意思是不止一个;)