使用整数和char的合法Java操作

时间:2011-09-20 03:17:22

标签: java char int

以下内容:

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图表)而没有任何错误

5 个答案:

答案 0 :(得分:1)

charint转换称为widening conversions。在扩大转化次数时,如果调用intchar转换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,其中iint),当你强迫它们时,你可能会丢失一些构成值的位。

所以是的,你列出的所有操作都是有效的,因为你只是以不同的方式组合不同的整数文字,并将它们分配给整数类型。

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文本,但一般不应使用。