相关疑难解决方法(0)

在Java中使用==,>,<等等比较两个相同类型的对象会发生什么?

可能重复:
等于和==之间的差异

例如,如果我有

MyClass foo = new MyClass();
MyClass bar = new MyClass();

if (foo == bar) {
    // do something
}
if (foo < bar) {
    // do something
}
if (foo > bar) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

怎么做foobar比较?Java是否在寻找.compareTo()要实现的方法MyClass?Java是否在内存中比较对象的实际二进制结构位?

java conditional

4
推荐指数
1
解决办法
1140
查看次数

Java缓冲读卡器

 import java.io.*;

 public class TerminateWhen
 {
   public static void main(String args[]) throws IOException
   {
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

     String str = "";
     System.out.println("Type \"x\" to exit..");
     do {
       str = br.readLine();
       System.out.println(str);
       }
     while(str!="x");
   }
 }
Run Code Online (Sandbox Code Playgroud)

问题是即使输入"x",循环也不会退出..

java

3
推荐指数
2
解决办法
884
查看次数

为什么Java使用'equals'代替'=='来检查对象在Map中的存在?

假设我想将一个键及其值放在Map中.

我相信这是Java的作用:

  1. 获取密钥的Hashcode并检查映射中是否存在具有相同哈希码的密钥.

  2. 如果没有具有相同Hashcode的密钥,则可以将密钥放入Map中.

  3. 如果存在具有相同Hashcode的密钥,则使用equals来确定密钥是否可以放入Map中.

我的问题是为什么不使用==而不是equals在这个过程中?

java equals

1
推荐指数
1
解决办法
268
查看次数

为什么在此函数中返回false

在下面的程序中,我将变量设置thtrue第二个if语句中的变量.我很好奇为什么它后来又回来了false.

public boolean nodeExist(TreeNode Tree, T value){

    boolean th = false;

    if(Tree.getValue()!= null){

        if(value == Tree.getValue()){

            th = true;

        }else{

            if(value.compareTo((T) Tree.getValue()) < 0){

                nodeExist(Tree.getLeft(), value);

            }else{

                nodeExist(Tree.getRight(), value);
            }

        }

    }else{

        th = false;

    }

    return th;

}
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
149
查看次数

针对字符串的Java HashMap键比较失败

我有以下情况.我有一个Java中的HashMap,键作为字符串.然后在某个阶段,在运行时我创建等于这些键的字符串,以便从该映射中检索数据.字符串在"for"循环中如下创建:

 String keyToRetrive = "lights[" + Integer.toString(i) + "]" + ".Intensity";
Run Code Online (Sandbox Code Playgroud)

关于它的奇怪的事情,当我通过地图迭代找到等于该字符串,即使找到匹配的搜索步骤over.So在该搜索循环的关键:

  while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry) iter.next();
        if (name == entry.getKey()) {  ///name- "lights[0].Intesity"
            uniformOut = (ICleanable) entry.getValue();
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

具有名称"lights [0] .Intesity"的键永远不会返回true,即使地图包含一个.我如何解决它.我使用hashCode()来比较两个字符串值.所以这个版本确实有效:

 while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry) iter.next();
        if (name.hashCode() == entry.getKey().hashCode()) {
            uniformOut = (ICleanable) entry.getValue();
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

更新:在指出"=="不能正常工作并且应该使用"equals()"的事实后,我想缩小这个问题:为什么"=="适用于不是由几个创建的字符串连接块?我的意思是,如果我定义键字符串再次比较为一个简单的单个字符串:

 String foo="foo";
Run Code Online (Sandbox Code Playgroud)

这样的字符串可以使用"=="与HashMap键进行比较.

我不是专业的Java程序员,所以任何人都可以解释为什么它这样工作?

java

0
推荐指数
2
解决办法
5163
查看次数

字符和字符串之间的比较不像我期望的那样工作.我究竟做错了什么?

我正在尝试比较字符串和字符(将其转换为字符串后).代码没有像我希望的那样工作.

package main;
import java.lang.Character;

public class Main {
    public static void main(String[] args) {
        char myChar = 'a';
        String myString = "a";
        if(myString == Character.toString(myChar)) {
            System.out.println("This SHOULD work! But it doesn't.");
        } else {
            System.out.println("This SHOULDN'T work! But it does.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

java string comparison character string-comparison

0
推荐指数
1
解决办法
112
查看次数

为什么新的String("a")== new String("a")给出false而"a"=="a"给出true.为什么看起来它们在后来的情况下都被视为同一个实例?

可能重复:
等于和= = 字符串比较和Java中的字符串实习之间的差异

这次是一个不言自明的问题.

编辑:我理解==不等于.我不理解的是为什么"a"=="a"中的一个都被分配或视为同一个对象实例(它们是).

编辑一些人阅读问题或者只是按下关闭按钮?它与上述任何一个都没有关系.告诉我,我在哪里提到等于方法.....

java string pointers equals

0
推荐指数
1
解决办法
310
查看次数

这种情况有什么不同:STRING.equals("myValue")vs STRING =="myValue"?

STRING.equals("myValue")vs 的区别是STRING == "myValue"什么?

我第一次使用STRING == "myValue"但我的IDE建议切换到使用.equals().这样做有什么特别的好处吗?

java

-3
推荐指数
1
解决办法
126
查看次数