在下面的程序中:
public class medianTemp {
public static void main(String[] args){
int length = args.length;
int[] n = new int[length];
n[0] = Integer.parseInt(args[0]);
System.out.print(n[0] + " ");
for (int i = 1; i < length; i++ ){
String c = args[i];
if (c.equals(".")){
n[i] = n[i-1] + 0;
System.out.print(n[i] + " ");
}
if (c.equals("+")){
n[i] = n[i-1] + 1;
System.out.print(n[i] + " ");
}
if (c.equals("-")){
n[i] = n[i-1] - 1;
System.out.print(n[i] + " ");
}
在for
循环内部和if
语句内部。如果我使用args[i] == "."
(而不是将args[i]
转换为string
),则上面的代码不起作用,只显示初始整数。有人可以告诉我为什么会这样吗?
答案 0 :(得分:4)
==
根据对象的内存位置比较对象,而不是基元。字符串是不基元,因此虽然2个String对象的内容可能相等,但内存中每个字符串的地址不同,==
返回false。
答案 1 :(得分:0)
在java中,需要将String对象(以及几乎所有对象)与equals()
进行比较。两个String对象可以具有相同的值但是是不同的对象(即内存中的重复 a la new String()
)。 ==
比较比较参考。
答案 2 :(得分:0)
你只需要使用equals进行字符串比较。
本网站的示例:http://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/
String a = new String ("a");
String b = new String ("a");
System.out.println (a == b);
返回false,而以下代码返回true。
String a = new String ("a");
String b = new String ("a");
System.out.println (a.equals(b));
答案 3 :(得分:-2)
==
是一个关系运算符,指的是值可以相互关联的关系。
此外,==
运算符显然意味着“等于”,仅适用于raw
数据类型。
这些类型包括double,int和float。但是,==
运算符不适用于布尔表达式(仅适用于true / false)。
总而言之,这就是你将程序放在一起以使这个运算符工作的方式。我建议阅读JAVA编程书籍,如“JAVA 2”系列。希望这有帮助!