您是否有任何理由要使用Java而不是使用“”而不是''(任何版本)输出空白?
在Mark Allen Weiss撰写的“使用Java进行数据结构和问题解决(第四版)” 中,它说不使用“”而不是''是一个常见的错误:即我们应该使用“”。
据我所知,两者之间没有区别。
尝试:
System.out.println("a b c" + ' ' + "d e f");
System.out.println("a b c" + " " + "d e f");
输出似乎没有差异。
答案 0 :(得分:4)
以您的示例为例,可能没有效果。但是,在某些情况下,它很重要。
char
是整数类型,并且
System.out.println(1 + ' ' + 2); //output: 35 because 1 + 32 + 2
产生与
不同的结果System.out.println(1 + " " + 2); //output: 1 2
因此,您应该确保知道' '
和" "
之间的区别。
我想这本书中建议的内容可以说明它在谈论什么情况。
答案 1 :(得分:1)
这是因为+
运算符在Java中具有两种含义
Str + ...
或... + Str
因此,如果您拥有' '
运算符num + Str
将表示串联,并且您将获得String。
但是对于+
运算符,num + char
将表示加成,并且将返回类似+
的数值,将被视为System.out.println(1+' ')
,因此{ {1}}将被打印。
因此,如果将1+32
与33
一起使用,则可以保证它是 concatenation ,而" "
与+
的含义将取决于第二个论点。
答案 2 :(得分:0)
对于文字字符,我们使用单引号,而对于文字字符串,则使用双引号。因此,您将与此添加在一起:
System.out.println("a b c" + ' ' + "d e f");
,但是没有错误。您可以使用“”或“”来输出空格。
答案 3 :(得分:0)
您的Java书告诉您双引号优于单引号的原因是' '
是char
,而" "
是String
。这是内置的Java行为。
char
是Java原语,例如int
或float
。 String
是提供的对象类型,而不是基元。当您将" "
放入代码中时,java会将其解释为java.lang.String
的实例。
您是对的,尽管它在您的示例中没有实际作用。这是因为当您连接字符串和字符时,java会自动将整个内容转换为字符串(+
运算符会执行此操作)。您还可以通过这种方式串联其他基元。
但是,这些实际上在Java中是完全不同的,您可以通过一个简单的测试来证明这一点:
@Test
public void testCharVsString(){
assertTrue(" ".equals(' '));
}
上述测试将失败,因为这两个对象不同。
通常,在代表字符时可以坚持使用String
。 char
对于更高级的编码任务很有用。