Java 为什么要使用&引用;而不是'';用于输出空白?
您是否有任何理由希望使用“”而不是“”在Java(任何版本)中输出空格 马克·艾伦·韦斯(Mark Allen Weiss)的《使用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可能没有效
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
schar
对于更高级的编码任务很有用。您的Java书籍告诉您双引号比单引号好的原因是,'
是一个char
,“
是一个字符串。这是内置的java行为。
char
是一种java原语,类似于int
或float
<代码>字符串
是提供的对象类型,而不是基元。当您在代码中放入”
时,java将其解释为java.lang.String
的实例
你是对的,但在你的例子中没有实际效果。这是因为当您连接字符串和字符时,java会自动将整个内容转换为字符串(由+
操作符执行此操作)。也可以通过这种方式连接其他基本体
但是,这些在Java中实际上是完全不同的,您可以通过一个简单的测试来证明这一点:
@Test
public void testCharVsString(){
assertTrue(" ".equals(' '));
}
上述测试将失败,因为这两个对象不相同
作为一般规则,在表示字符时可以使用String
schar
对于更高级的编码任务非常有用。这是因为+
操作符在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的情况下