以下内容:
char x = 88;
int number = 8 + 'E';
char x = 'a' + 8;
是合法的Java操作吗?
'因为我的Java老师说用单引号括起来的 ONLY 字符对char
是合法的,明天我有一个测试,所以我想确保我是对的,那个她没有给我留下错误。
另外,我尝试使用int
以及int x = 40 + 'a'
和char x = 5 + 'd'
之类的东西,它们都会产生预测结果(如果我参考ASCII图表)而没有任何错误
答案 0 :(得分:1)
char
到int
转换称为widening conversions
。在扩大转化次数时,如果调用int
到char
转换narrowing conversions
,则值不会丢失有关数值整体幅度的信息。随着转换范围的缩小,您可能会丢失有关数值整体幅度的信息,也可能会失去精确度。
有关原始转换的更多信息,请refer本文档。
答案 1 :(得分:0)
是的,您可以使用/将整数(ASCII)值或字符本身分配给char
变量。最终将相同的值分配给变量。
但是你的老师可能只是想建议你一个最佳实践,其中使用字符而不是ASCII值更具可读性。
答案 2 :(得分:0)
如果这实际上是你老师所说的,那么她是不正确的,你应该能够编写证明这一点的程序。
但是,使用整数文字作为字符值并不是一个好主意,因为它会模糊程序的含义。 (也许这就是她所说的,你误解了她。)
答案 3 :(得分:0)
“char”,“int”,“byte”,“short”或“long”都只是包含串在一起的东西的名称。它们一起被称为integral types。
同样,所有这些都是Java知道如何表示为一堆位的字面值:0,'0',1,'0', - 1,2147483647,'a','A','〜 ',...你得到了照片。而且从你的问题我很确定你已经知道0和'0'不是一回事。
我列出的任何值以及其他类似的值都可以分配给任何整数类型,但有时您必须强制它们适合(例如byte b = (byte) i
,其中i
是int
),当你强迫它们时,你可能会丢失一些构成值的位。
所以是的,你列出的所有操作都是有效的,因为你只是以不同的方式组合不同的整数文字,并将它们分配给整数类型。
P.S。如果您是Java新手,请不要尝试从“整体类型”链接中读取太多内容,否则您的头脑可能会崩溃。
答案 4 :(得分:0)
正如其他人所说,什么是合法的,什么是好主意并不总是一样的。
char ch = '0';
ch *= 1.1;
// ch == '4'
注意无限循环
for(char ch = Character.MIN_VALUE; ch <= Character.MAX_VALUE; ch++) // infinite loop
你可以用chars做的另一件事是可疑的是直接从byte []转换为String。
byte[] bytes =
String text = new String(bytes, 0);
这适用于ASCII-7文本,但一般不应使用。