嗨,那个println给了我错误,但如果我只是单独打印它工作正常。任何想法为什么会这样?
class StringTesting
{
public static void main(String me[])
{
String s1="Varun";
String s2="varun";
String s3="Varun";
String s4=new String("Varun");
String s5=new String("Varun");
System.out.println(" "+s1==s3+" "+s1==s2+" ");//here its giving me error
}
}
还要提前感谢:)
答案 0 :(得分:0)
您无法使用==
来比较布尔值和字符串,而这正是因为应用运算符的顺序而确实发生的情况。
你可以使用简单的括号来解决这个问题:
System.out.println(" " + (s1 == s3) + " " + (s1 == s2) + " ");
当然,如果你没有结合两个不同运算符的结果,那就可以了:
System.out.println(s1 == s3);
因此,只需阅读编译错误即可。
答案 1 :(得分:0)
根据关于String的Java文档,比较两个字符串的正确方法是使用.equals方法。
rnorm
通过在两个对象之间使用==运算符,您将比较内存位置,而不是对象中包含的实际原始值。
答案 2 :(得分:0)
就operators而言,+
优先于==
。
这意味着这段代码:
" "+s1==s3+" "+s1==s2+" "
由编译器翻译为:
" Varun"=="Varun Varun"=="Varun "
第一部分" Varun"=="Varun Varun"
生成boolean
并使用"Varun " String
比较器对其==
进行应用,结果为:
booleanExpression == "Varun "
将boolean
与String
进行比较无效
无论如何,即使它是,你也不希望输出对象之间==
比较的布尔结果。
因此,只需在括号中加上==
比较,以向编译器指示必须一起评估操作:
" "+(s1==s3)+" "+(s1==s2)+" "
它将产生有效的连接:
String
+ boolean
+ String
+ boolean
+ String