Java 为什么要使用&引用;而不是'';用于输出空白?

Java 为什么要使用&引用;而不是'';用于输出空白?,java,Java,您是否有任何理由希望使用“”而不是“”在Java(任何版本)中输出空格 马克·艾伦·韦斯(Mark Allen Weiss)的《使用Java解决数据结构和问题》(第四版)中指出,不使用“”而不是“”是一个常见错误:即我们应该使用“” 据我所知,两者之间没有区别 尝试: System.out.println("a b c" + ' ' + "d e f"); System.out.println("a b c" + " " + "d e f"); 输出似乎没有差别。与您的示例相比,if可能没有效

您是否有任何理由希望使用“”而不是“”在Java(任何版本)中输出空格

马克·艾伦·韦斯(Mark Allen Weiss)的《使用Java解决数据结构和问题》(第四版)中指出,不使用“”而不是“”是一个常见错误:即我们应该使用“”

据我所知,两者之间没有区别

尝试:

System.out.println("a b c" + ' ' + "d e f");
System.out.println("a b c" + " " + "d e f");

输出似乎没有差别。

与您的示例相比,if可能没有效果。然而,在某些情况下,这很重要

char
是一种整数类型,并且

System.out.println(1 + ' ' + 2); //output: 35 because 1 + 32 + 2 
产生不同于的结果

System.out.println(1 + " " + 2); //output: 1 2
因此,您应该确保知道
'
'
之间的区别


我想书中建议的上下文给出了它所谈论的情况的一些指示

用你的例子,如果可能没有效果。然而,在某些情况下,这很重要

char
是一种整数类型,并且

System.out.println(1 + ' ' + 2); //output: 35 because 1 + 32 + 2 
产生不同于的结果

System.out.println(1 + " " + 2); //output: 1 2
因此,您应该确保知道
'
'
之间的区别


我想书中建议的上下文给出了它所谈论的情况的一些指示

我们对文字字符使用单引号,对文字字符串使用双引号。所以你要把它们加在一起:

System.out.println("a b c" + ' ' + "d e f");

但它没有错误。您可以使用“”或“”来输出空格。

我们对文字字符使用单引号,对文字字符串使用双引号。所以你要把它们加在一起:

System.out.println("a b c" + ' ' + "d e f");

但它没有错误。您可以使用“”或“”来输出空格。

您的Java书籍告诉您双引号优于单引号的原因是,
是一个
字符,而
是一个
字符串。这是内置的java行为。
char
是一种java原语,类似于
int
float
<代码>字符串
是提供的对象类型,而不是基元。当您在代码中放入
时,java将其解释为
java.lang.String
的实例

你是对的,但在你的例子中没有实际效果。这是因为当您连接字符串和字符时,java会自动将整个内容转换为字符串(由
+
操作符执行此操作)。也可以通过这种方式连接其他基本体

但是,这些在Java中实际上是完全不同的,您可以通过一个简单的测试来证明这一点:

@Test
public void testCharVsString(){
    assertTrue(" ".equals(' '));
}
上述测试将失败,因为这两个对象不相同


作为一般规则,在表示字符时可以使用
String
s
char
对于更高级的编码任务很有用。

您的Java书籍告诉您双引号比单引号好的原因是,
'
是一个
char
是一个
字符串。这是内置的java行为。
char
是一种java原语,类似于
int
float
<代码>字符串
是提供的对象类型,而不是基元。当您在代码中放入
时,java将其解释为
java.lang.String
的实例

你是对的,但在你的例子中没有实际效果。这是因为当您连接字符串和字符时,java会自动将整个内容转换为字符串(由
+
操作符执行此操作)。也可以通过这种方式连接其他基本体

但是,这些在Java中实际上是完全不同的,您可以通过一个简单的测试来证明这一点:

@Test
public void testCharVsString(){
    assertTrue(" ".equals(' '));
}
上述测试将失败,因为这两个对象不相同


作为一般规则,在表示字符时可以使用
String
s
char
对于更高级的编码任务非常有用。

这是因为
+
操作符在Java中有两种含义

  • 串联如果至少有一个操作数是类似字符串的
    Str+…
    …+Str
  • 加法如果两个操作数都是数字类型:
    • 所有原语,除了布尔值(Java中的no
      true
      false
      不等同于
      1
      0
      ),
      但包括
      char
      哪个数值是Unicode表中字符的位置,如
      'A'
      是,空格
      '
    • 用于整数、双精度等数字基元类型的包装器类
  • 所以,如果您有
    num+Str
    运算符,则
    +
    将表示串联,您将得到字符串

    但是在
    num+char
    的情况下,运算符
    +
    将表示加法,并返回类似于
    System.out的数值。println(1+“”)
    将被视为
    1+32
    ,因此将打印
    33


    因此,如果将
    +
    一起使用,则可以保证它是串联的,而
    +
    '
    的含义将取决于第二个参数。

    这是因为
    +
    运算符在Java中有两种含义

  • 串联如果至少有一个操作数是类似字符串的
    Str+…
    …+Str
  • 加法如果两个操作数都是数字类型:
    • 所有原语,除了布尔值(Java中的no
      true
      false
      不等同于
      1
      0
      ),
      但包括
      char
      哪个数值是Unicode表中字符的位置,如
      'A'
      是,空格
      '
    • 用于整数、双精度等数字基元类型的包装器类
  • 所以,如果您有
    num+Str
    运算符,则
    +
    将表示串联,您将得到字符串

    但是在
    num+char
    opera的情况下