Java 为什么字符串以“quot”开头&引用;(例如字符串id=“x2B”方法())?

Java 为什么字符串以“quot”开头&引用;(例如字符串id=“x2B”方法())?,java,string,Java,String,在中,在handleTestCaseFinished()中,String id的值以“开头。为什么呢?(我没有单挑这个答案,我以前在其他地方见过,但这一个促使我得到答案。) 事实证明,为谷歌选择搜索词特别困难 我已经用以下方法对此进行了测试: strings1=System.getenv(“JAVA_HOME”); 字符串s2=”“+System.getenv(“JAVA_HOME”); System.out.println(s1.等于(s2)-“真”:“假”); 我也没有注意到在Intell

在中,在
handleTestCaseFinished()
中,
String id
的值以
开头。为什么呢?(我没有单挑这个答案,我以前在其他地方见过,但这一个促使我得到答案。)

事实证明,为谷歌选择搜索词特别困难

我已经用以下方法对此进行了测试:

strings1=System.getenv(“JAVA_HOME”);
字符串s2=”“+System.getenv(“JAVA_HOME”);
System.out.println(s1.等于(s2)-“真”:“假”);

我也没有注意到在IntelliJ IDEA中使用调试器有什么不同。也许这不是测试这一点的方法?

主要是为了避免以null结尾,最终出现null指针异常。在这种情况下,默认情况下它将以“null”字符串结束。[已编辑,感谢Ernest_k]

主要是为了避免以null结尾,最终出现null指针异常。在这种情况下,默认情况下它将以“null”字符串结束。[已编辑,感谢Ernest_k]

Java仅当其一个或两个操作数都是字符串时才将
+
视为字符串串联运算符。如果两者都是数字,
+
是数字加法运算符。对于任何其他操作数,这都是一个错误

在这个答案中,这句话与您所展示的并不完全相同:

String id = "" + testCase.getUri() + testCase.getLine();
i、 e.有两个串联

据推测,这两个其他操作数都不是字符串,至少有一个不是数字。试图
+
两个既不是数字又不是字符串的东西将是编译器错误

前缀
意味着它们被转换为字符串,并被连接,因为
+
具有正确的关联性:

String id =        (  ""   + testCase.getUri()) + testCase.getLine();
             //    (String + non-String       ) + (non-String)
             // =>       String                 + non-String
             // =>                           String

只有当一个或两个操作数都是字符串时,Java才会将
+
视为字符串串联运算符。如果两者都是数字,
+
是数字加法运算符。对于任何其他操作数,这都是一个错误

在这个答案中,这句话与您所展示的并不完全相同:

String id = "" + testCase.getUri() + testCase.getLine();
i、 e.有两个串联

据推测,这两个其他操作数都不是字符串,至少有一个不是数字。试图
+
两个既不是数字又不是字符串的东西将是编译器错误

前缀
意味着它们被转换为字符串,并被连接,因为
+
具有正确的关联性:

String id =        (  ""   + testCase.getUri()) + testCase.getLine();
             //    (String + non-String       ) + (non-String)
             // =>       String                 + non-String
             // =>                           String

这可能只是一种从
testCase.getUri()
的结果中生成字符串并继续连接字符串的快速方法。如果没有这一点,就必须执行
testCase.getUri().toString()+…
,而行为也不会完全相同。将任何值转换为字符串是一种快速而肮脏的方法。
“+x
相当于
String.valueOf(x)
。可能只是从
testCase.getUri()的结果生成字符串的一种快速方法
并继续连接字符串。如果没有这一点,我们将不得不执行
testCase.getUri().toString()+…
,行为也将不完全相同。将任何值转换为字符串是一种快速而肮脏的方式。
“+x
相当于
String.valueOf(x)
。如果
testCase.getUri()
返回null,则
”+testCase.getUri()
将是字符串
“null”
,而不是
。如果
testCase.getUri()
返回null,则
“+testCase.getUri()
将是字符串
“null”
,而不是