是" =="仅适用于某些数据类型?

时间:2014-05-09 22:09:16

标签: java

在下面的程序中:

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),则上面的代码不起作用,只显示初始整数。有人可以告诉我为什么会这样吗?

4 个答案:

答案 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”系列。希望这有帮助!