Java中的char类型

java 21-03-31 11:16 1372  

> 昨天妹妹发来下面这段代码,问[2]处代码为什么输出的是99,不符合预期输出c,且类型也变了。 ```java public class Test { public static void main(String[] args) { char[] array = new char[] { 'a', 'b', 'c' }; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); char s = array[2]; System.out.println(s); //[1] System.out.println(+s);//[2] } } ``` 通过分析,此处的﹢号既不是字符串的连接符,也不是算数加法运算符号,而是作为单目运算符正号。既然如此,再做尝试```System.out.println(-s);```得到输出 **-99**,符合上述分析。 char类型再做算数运算操作时,会转为对应ASCII值进行计算,此处加了正负号,所以转为了int类型,通过IDE进入println方法,调用的是int类型参数方法也侧面说明该问题。 ### 扩展 > ++s会输出什么呢? ```java public class Test { public static void main(String[] args) { char[] array = new char[] { 'a', 'b', 'c' }; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); char s = array[2]; System.out.println(s); System.out.println(+s); System.out.println(++s); } } ``` 答案是 **d** 不应该输出100吗? ++运算符是自加1运算符,先将s加1,此处s被转为对应ASCII值99,运算结果100。然后将100赋值给char类型的s变量,又从100变到了d > 再啰嗦一句,下面代码输出啥? ```java char s = 'c' System.out.println(s++); ```

22-05-27 17:57

goods

21-12-13 14:36

good