相关疑难解决方法(0)

我何时应该使用`==`vs`===`vs`isequal`

我看到朱莉娅有3种不同的方式来实现平等。

=====isequal

我应该使用哪个,什么时候使用?

julia

10
推荐指数
2
解决办法
152
查看次数

反序列化后,DateTime不等于自身

正如您在下面看到的,在序列化和反序列化之后,您将获得据称不同的DateTime实例:

scala> import org.joda.time.DateTime
import org.joda.time.DateTime

scala> val a = new DateTime()
a: org.joda.time.DateTime = 2014-01-08T19:00:08.883+02:00

scala> val b = DateTime.parse(a.toString())
b: org.joda.time.DateTime = 2014-01-08T19:00:08.883+02:00

scala> a == b
res0: Boolean = false
Run Code Online (Sandbox Code Playgroud)

根据AbstractInstant的javadoc,equals"基于毫秒时刻,时间顺序和时区,将此对象与指定对象进行相等性比较." 所以这不应该发生吗?我错过了什么?

serialization datetime scala jodatime deserialization

7
推荐指数
2
解决办法
2865
查看次数

Java中的println()方法用于字符串相等...以及它是如何工作的?

我试图理解Java中System.out.println()的工作...在下面的2个代码片段中,为什么答案不同以及为什么它不在println()方法中打印"Hello:"字符串?

 public static void main(String[] args) {
        String x = "abc";
        String y = "abc";
        System.out.println("Hello:" + x == y);
        System.out.println("x.equals(y): " + x.equals(y));

        if(x == y){
            System.out.println("Hello:" + x==y);
        }

}
Run Code Online (Sandbox Code Playgroud)

答案是:

false
x.equals(y): true
false
Run Code Online (Sandbox Code Playgroud)

对于第二个代码片段:

 public static void main(String[] args) {
        String x = "abc";
        String y = "abc";

        System.out.println( x == y);

        System.out.println("x.equals(y): " + x.equals(y));

        if(x == y){
            System.out.println(x==y);
        }

}
Run Code Online (Sandbox Code Playgroud)

答案是:

true
x.equals(y): true
true
Run Code Online (Sandbox Code Playgroud)

java string

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

具有重复项的“containsAll”行为

官方文档( archive )containsAll只说“如果此列表包含指定集合的​​所有元素,则返回 true。”。但是,我只是测试了这个:

List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(1);
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(1);
list2.add(2);
System.out.println(list1.containsAll(list2));
Run Code Online (Sandbox Code Playgroud)

结果是true,即使list1不包含第二个2

那么官方的、完全定义的行为是containsAll什么?它是否好像从两个列表中删除了所有重复项?我记得在某处读到它可能会导致重复问题,但我不知道确切的情况。

java collections list duplicates

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

你可以将字符与==进行比较吗?

对于字符串,您必须使用equals来比较它们,因为==仅比较引用.

如果我将字符与==进行比较,它是否会给出预期的结果?


我在stackoverflow上看过类似的问题,例如

但是,我还没有看到一个关于在字符上使用==的问题.

java compare equals char

6
推荐指数
1
解决办法
2万
查看次数

关于java String文字池和String的连接的混淆

所有,我在编写下面的代码时遇到了问题

String hello = "Hello";
String str5 = "Hel" + "lo";
String str8 = "Hel";
String str9 = "lo";
String str10 = str8 + str9;
System.out.println("str10==hello?" + (str10 == hello)); 
System.out.println("str5==hello?" + (str5 == hello));
System.out.println("str10==str5?" + (str10 == str5));
Run Code Online (Sandbox Code Playgroud)

然后我运行我的代码,控制台打印这个

str10 == hello ? false
str5 == hello ? true
str10 == str5 ? false
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.为什么第二次打印TRUE但第一次打印FALSE?在我理解String文字池时,当一个字符串被定义并且JVM将检查池是否包含该字符串时,如果没有,则将该字符串放入池中.
在我的代码中,变量hello存在于字符串池中," Helo "和" lo "也存在于池中,我的问题是

  1. 如果池中存在" Helo "和" lo " 串联的结果.
  2. 关于str5和str10s的定义有什么区别,为什么它们不是"=="?str5和str10是否指向字符串池中的不同" Hello "?("=="似乎表示引用是同一个对象)

我的jdk版本:1.6.0_29
我的IDE:Intellij Idea 11.2

有人可以指出来吗?非常感谢你

java string

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

equals()方法如何在Java中工作

equals方法比较两个对象值是否相等.我的问题是它如何比较这两个对象?怎么能告诉两个对象是否相等?我想知道它基于它比较两个对象.我不包括这个hashCode方法.

java overriding equals

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

如何将CharSequence与String进行比较 - Android

我有一个将文本放入arrayList的类.然后它将所有变量变成CharSequences,当我尝试将变量比较为一个String,例如=="test"; 它在这里不起作用是我用来获取变量的代码

class Item {
            String descs;

            public Item (String descs){

                 this.descs = descs;

                 }


            public CharSequence getDescs() {
                return descs;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是将其与String进行比较的代码

 if(p.getDescs().toString() == "trash"){

          descsView.setVisibility(View.GONE);

                            }

          else{
              descsView.setText(p.getDescs());

                            }
Run Code Online (Sandbox Code Playgroud)

我知道p.getDescs()等于垃圾,因为当它设置descsView的文本时,它被设置为垃圾.为什么第一个if语句不起作用?

java string android charsequence

5
推荐指数
2
解决办法
1万
查看次数

如何在Java中比较两个proto缓冲区消息?

在包中com.google.protobuf我发现了一个Message界面,它声称它将按内容进行比较:

public interface Message extends MessageLite, MessageOrBuilder {
  // -----------------------------------------------------------------
  // Comparison and hashing

  /**
   * Compares the specified object with this message for equality.  Returns
   * <tt>true</tt> if the given object is a message of the same type (as
   * defined by {@code getDescriptorForType()}) and has identical values for
   * all of its fields.  Subclasses must implement this; inheriting
   * {@code Object.equals()} is incorrect.
   *
   * @param other object to be compared for equality with …
Run Code Online (Sandbox Code Playgroud)

java protocol-buffers

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

.equals() 或 == 比较对象的类时

在 Java 中,当您测试对象的类等于什么时,您会使用 .equals() 或 ==

例如在下面的代码中它会是:

if(object.getClass() == MyClass.class)
Run Code Online (Sandbox Code Playgroud)

或者

if(object.getClass().equals(MyClass.class))
Run Code Online (Sandbox Code Playgroud)

java conditional equals

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