我想知道为什么以下程序会抛出NPE
public static void main(String[] args) {
Integer testInteger = null;
String test = "test" + testInteger == null ? "(null)" : testInteger.toString();
}
而这
public static void main(String[] args) {
Integer testInteger = null;
String test = "test" + (testInteger == null ? "(null)" : testInteger.toString());
}
不。当然,这是一个优先级问题,我很好奇串联的工作原理。
这是理解运算符优先级的重要性的一个示例。
您需要括号,否则解释如下:
String test = ("test" + testInteger) == null ? "(null)" : testInteger.toString();
有关运算符及其优先级的列表,请参见此处。另请注意该页面顶部的警告:
注意:甚至有可能混淆时,请使用显式括号。
我在条件运算符的true子句中得到了未定义属性的意外行为: 示例:Javascript: 不停摆弄 预期的行为是获取一个日志条目,上面写着"未定义,而是抛出了一个错误:。怎么会这样,对象被选中,它永远不会执行htis coe路径。一个工作示例是: 不停摆弄
问题内容: 我对String串联感到困惑。 输出为: 50abc20 50abc1010 我想知道为什么在两种情况下都将 20 + 30 加在一起,但是 10 + 10 需要加上括号(s1)而不是串联到String(s2)。请在此处说明String运算符的工作方式。 问题答案: 加法保持关联。以第一种情况 在第二种情况下:
本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果
问题内容: 假设字符串a和b: 在幕后,他们是同一回事吗? 这里将concat反编译为参考。我也希望能够反编译该+运算符,以查看其作用。 问题答案: 不,不是。 首先,语义上略有不同。如果a是null,则抛出一个,但a+=b将把原来的值a就好像它是null。此外,该方法仅接受值,而+操作员会将参数无提示地转换为String(使用对象的方法)。因此,该concat()方法在接受方面更加严格。 要深入
问题内容: 我不知道MySQL的串联运算符。 我已尝试将此代码进行串联: 但这没有用。我应该使用哪个运算符来连接字符串? 问题答案: 您正在使用ORACLE类型的串联。MySQL的应该是 调用该函数,并用逗号分隔您的值。
问题内容: 嗨,我只是想知道为什么这段代码(至少对我来说)产生错误的结果。 好吧,我可能在这里错了 我猜想,如果paperType等于“ Bond”,则说明为“ Paper:Bond”,如果paperType不等于“ Bond”,则说明为“ Paper:Other”。 但是,当我运行这段代码时,结果描述是“ Bond”还是“ Other”,让我想知道字符串“ Paper:”去了哪里??? 问题答案