Raj*_*Raj 5 java string boolean equals
我==在java中观察到一个奇怪的行为操作符.我正在尝试打印输出如下
String str1 = "Rajesh";
String str2 = "Rajesh";
System.out.println("Using equals() str1 and str2 Equals :"
+ str1.equals(str2));
System.out.println("Using == str1 and str2 Equals :"
+ str1 == str2);
Run Code Online (Sandbox Code Playgroud)
第一个SOP声明打印
使用equals()str1和str2等于:true
而下一个SOP打印只是假的.
我尝试在eclipse和Net Beans中进行编译,但结果是一样的.我很困惑为什么
使用== str1和str2等于:
不打印
帮助我解决这个问题
提前致谢,
拉吉
shi*_*t66 12
它是一样的("Using == str1 and str2 Equals :" + str1) == str2,当然这是错误的.从左至右,因此在第一它加到表达式进行分析"Using == str1 and str2 Equals :"和str1,然后应用==操作.
有关Java中运算符优先级的表,请参见http://bmanolov.free.fr/javaoperators.php.
+运算符的优先级高于==运算符.
因此,实际上,您的代码等效于以下内容:
System.out.println( ("Using == str1 and str2 Equals :" + str1) == str2);
Run Code Online (Sandbox Code Playgroud)
请注意我添加的括号的位置.它评估如下:
System.out.println( (str_x + str1) == str2);
Run Code Online (Sandbox Code Playgroud)
然后到这个:
System.out.println( str_y == str2 );
Run Code Online (Sandbox Code Playgroud)
然后到这个:
System.out.println( false );
Run Code Online (Sandbox Code Playgroud)
为了得到你想要的结果,必须使用括号来指定你希望在+运算符之前解析==运算符:
System.out.println( "Using == str1 and str2 Equals :" + (str1 == str2));
Run Code Online (Sandbox Code Playgroud)
注意括号的新位置.
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |