当前位置: 首页 > 面试题库 >

为什么System.out.println()中的字符不增加?

姬庆
2023-03-14
问题内容
char char1 = 'a';   
System.out.println(char1);      //prints char 1
System.out.println(char1+1);    //prints char 1
System.out.println(char1++);     //prints char 1
System.out.println(char1+=1);    //prints incremented char1
char1 += 1;                     
System.out.println(char1);      //prints incremented char1

在上面,为什么(char1 + 1)或(char ++)不打印增量字符,而其他两个打印呢?


问题答案:

首先,我假设是因为您说的是工作量的增加System.out.println,所以您确实指定了:

char char1 = 'a';

编辑

响应问题(char1+1;=> char1 += 1;)的更改,我看到了问题。输出是

a
98
b

之所以98显示,是因为char a被提升为一个int(二进制数字提升)加1。因此a变成97(的ASCII值'a')和98个结果。

但是,char1 += 1;或者char1++不执行二进制数字提升,因此它可以按预期工作。

引用JLS,第5.6.2节“二进制数字推广”:

扩展原语转换(第5.1.2节)适用于转换以下规则指定的一个或两个操作数:

如果一个操作数的类型为double,则另一个将转换为double。

否则,如果其中一个操作数的类型为float,则另一个将转换为float。

否则,如果其中一个操作数的类型为long,则另一个将转换为long。

否则, 两个操作数都将转换为int类型

(强调我的)



 类似资料:
  • 问题内容: 这是所有编程语言所共有的吗?在进行多次打印后再执行println似乎更快,但是将所有内容移动到字符串中并仅进行打印似乎最快。为什么? 编辑:例如,Java可以在不到一秒钟的时间内找到所有高达100万的质数- 但要进行打印,然后在自己的println中将它们全部输出可能需要几分钟!最多可打印100亿小时! 例如: 问题答案: 速度并不慢,而是由主机操作系统提供的与控制台连接的基础。 您可

  • 问题内容: 我想在控制台中打印一些内容,以便对其进行调试。但是由于某种原因,我的Android应用程序中没有任何内容。 那我该如何调试呢? 问题答案: 在仿真器上,大多数设备都重定向到LogCat并使用进行打印。在非常旧的或自定义的Android版本上可能并非如此。 原版的: 没有控制台将消息发送到,因此消息丢失。当你使用来运行“传统” Java应用程序时,也会以同样的方式发生这种情况。 相反,你

  • 问题内容: 在下面的示例中,只是,而在我看来应该是。 为什么“字符串键控”索引不增加数组的? 我可以存储东西并仍然可以访问它,而VS调试器显示这些数组已正确存储。那么为什么不增加呢? 问题答案: Javascript数组不能具有“字符串索引”。Javascript 仅在数字上进行索引。设置“字符串索引”时,就是在设置对象的属性。这些是等效的: 这些属性不是阵列“数据存储”的一部分。 如果要“关联数

  • 问题内容: The Go Playground上可用的程序读取 并产生一个错误 我了解是字符串的“零值”。我不明白为什么我不能分配给我的。 问题答案: 简单的答案是, 在语言规范中未将其定义为类型的有效值。 …但是也许您想要更长的答案? 是指针,接口,通道,切片,映射和函数类型的零值,它表示 未初始化的 状态。 考虑以下变量声明: 所有这些变量都有一个代表未初始化状态的值,这很自然。已被声明为指针

  • 问题内容: 这个静态函数是来自名称空间的类中的吗? 我该如何解释这个名字?在JRE中的哪个位置定义了此功能?在/ ? 问题答案: 否。实际上是类中的静态成员(不是.NET中的静态成员),它是。的实例。并且是该类的常规(重载)方法。 请参阅http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out。 其实,如果/ /

  • 代码 产出(如预期) 1.post increment运算符()在表中具有最高的优先级。因此它肯定会在赋值运算符()之前执行。根据post增量规则,变量的值只有在执行该语句之后才会增加。 参见有rvalue 3,而不是变量本身,对吗?但是如果它带来了一个具有lvalue的变量,那么5将插入其中,在语句结束后,它的值将是6。这有什么问题,为什么做不到?