Java中不同类型的连接
我知道,问题很简单。但是我需要完全理解一些小细节(理解背景中发生的事情非常重要)。让我们先看看代码片段。为什么两个连续的“+”符号在这里不会导致错误?或者在这两个“+”之间有一个不可见的0“?在第一种情况下,字符转换为整数的原因是两个连续的“+”号,对吗Java中不同类型的连接,java,string,casting,formatting,Java,String,Casting,Formatting,我知道,问题很简单。但是我需要完全理解一些小细节(理解背景中发生的事情非常重要)。让我们先看看代码片段。为什么两个连续的“+”符号在这里不会导致错误?或者在这两个“+”之间有一个不可见的0“?在第一种情况下,字符转换为整数的原因是两个连续的“+”号,对吗 public class AppleApp { public static void main(String[] args) { System.out.println("Apple is " + +
public class AppleApp {
public static void main(String[] args) {
System.out.println("Apple is " + + '2' + " USD");
// OUTPUT: Apple is 50 USD
System.out.println("Apple is " + + 2 + " USD");
// OUTPUT: Apple is 2 USD
}
}
字符是一个数字,所以把它读作苹果是+(+'2')+“美元” 整数的情况也一样。
“苹果是”++2+“美元”
被“解析”如下:
(“苹果是”+(+2)+“美元”
,+2
只是..2.就像intx=+2;
是合法的,这也是合法的
这同样适用于++“2”
,因为在java中,字符是数字(即使字符串不是),而“2”是数字0x32
(字符2的unicode代码)
char
是一种奇怪的类型;它是数字。具体来说,char表示0到65535之间的数字,就像字节是-128到+127一样,short是从-32768到+32767,int是从-2147483648到2147483647
尽管它是一个数字,但所有打印内容的相关方法都将该数字视为unicode值:它们在unicode表中查找数字并显示字符,即:
char c = 65;
System.out.println(c);
打印A
。这不是因为char
中固有的任何内容,而是因为println
方法
在java中,byte
、short
和char
都是劣等的:许多操作都不能在它们上面完成,而是首先将它们转换为int。这是因为规范这么说的
因此,
+'A'
是一个类型为int
的表达式。有点奇怪,但是,spec这么说。因此,System.out.println(+'A')
打印65,因为它可以计算只打印65的int
版本的println
,而不是System.out.println('A');
调用字符
版本,打印'A'(+2)->+是一元运算符,对吗?和(+'2')->在这里进行正转换(更改)转换为int,对吗?谢谢!int和char之间的转换让我有点困惑。@elvintaghizade14我在这个答案中添加了一堆文本来解释char v int,没有更好的解释了。非常感谢!谢谢!int和char之间的转换让我有点困惑。