在chinajavaworld上看到一个帖子,原文如下:
*******http://bbs.chinajavaworld.com/thread.jspa?messageID=781027*********
String 的 == ,奇怪了啊
发表于: 2007-9-20 上午12:27 回复
String s1 = "123";
s1 += " append";
String s2 = "123 append";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1 == s2);
------------------------------------------------------output
123 append
123 append
false
请教:String s1,s2应该是常量池里的一个值啊,按道理地址也是一样的啊,怎么会不等呢?
**************帖子内容结束*************************************************
这个问题可以用下面这个简单点的程序段来说明:
----------------------------------------------------
String s2 = "123 append"; //1
String s3 = "123"; //2
String s1 = s3 + " append"; //3
System.out.println(s1); //4
System.out.println(s2); //5
System.out.println(s1 == s2); //6
----------------------------------------------------
这个例子的输出为:
123 append
123 append
false
如果把第2行改为final String s3 = "123",那么第6行的输入就是true.
在改动之前s1的值在运行时(new)确定,改动之后,s1的值在编译时就能确定了。
jsl3的3.10.5 String Literals有段话是这样写的:
•Strings computed by concatenation at run time are newly created and there-
fore distinct.
分享到:
相关推荐
- **String Literals**: These represent text values and can be character string literals, dollar-quoted string literals, Unicode string literals, and VARBINARY string literals. - **Character String ...
You will learn when and where to apply the methods for finding patterns in digits, letters, Unicode characters, and string literals. Going forward, you will learn to use zero-length assertions and ...
f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。...
f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。...
PEP 498: Formatted string literals PEP 526: Syntax for variable annotations PEP 515: Underscores in Numeric Literals PEP 525: Asynchronous Generators PEP 530: Asynchronous Comprehensions PEP 487:...
(General release.) Fixed spurious coloring of string literals in VC6. (case=16454) 7565 Fixed Asian character display corruption in VC6. (case=16737) 7782 Fixed spurious coloring of ...
Point Literals)、布尔字面量(Boolean Literals)、字符字面量(Character Literals)、字符串字面量(String Literals)以及字符和字符串字面量的转义序列(Escape Sequences for Character and String Literals...
Lexical entities : keywords, identifiers, string literals, boolean constants, numbers, sequences, dictionaries, operators ?Basic types and their operations: None, bool, Numeric types, sequence types...
produced when this parameter was a null string (""). Now, the original input filename is used as the AML output filename, with an ".aml" extension. Implemented a generic batch command mode for the ...
此外,还有一种新的f-string(formatted string literals)格式化方式,它在Python 3.6及更高版本中可用。 1. **% 操作符(C-Style Formatting)** `%`操作符类似于C语言中的printf风格格式化。例如: ```python ...
原生字符串文字(raw string literals),它可以跨多行源码而不对转义字符进行转义。目标是简化 Java 的开发,比如开发者可以可读形式表示字符序列,而不会掺杂一些 Java 指示符,或者提供针对 Java 以外的语法的...
C++基础知识——String 和 character literals
另外,Python 3.6及更高版本引入了f-string(formatted string literals)语法,这是一种更加简洁和直观的字符串格式化方式。在f-string中,可以直接在字符串中嵌入表达式,比如: ```python f"{'Hello'.center(10)...
在C#中,“@”符号用于创建“逐字字符串”(verbatim string literals),这意味着字符串中的任何字符都不会被解释为转义序列。例如,使用双引号声明的字符串中,斜杠“/”会被视为转义字符,但在“@”前的字符串中...
布尔值(Boolean Literals)只有`true`和`false`两个,而字符字面量(Character Literals)使用单引号包围,字符串字面量(String Literals)则用双引号。字符串可以包含转义序列,如`\n`表示换行,`\t`表示制表符。...
在Python中,我们可以使用`print()`函数配合格式化字符串,如`"{:来左对齐并填充空格,或者使用f-string(formatted string literals)进行更直观的格式化;在Java中,我们可以利用`printf`方法和`String.format`...
1. 字符串字面量(String Literals): * 字符串字面量是以双引号括起来的字符串,如"Put a disk in drive A, then press any key to continue\n"。 * 字符串字面量可以包含转义字符,如\n表示换行符。 2. 输入/...
f-string(formatted string literals)是Python 3.6中的另一项创新,它允许在字符串中直接嵌入表达式,提高了代码的可读性和效率。 在使用Python时,除了内置的模块外,用户还可以通过pip来安装第三方库,以扩展...