我看到朱莉娅有3种不同的方式来实现平等。
==,===和isequal
我应该使用哪个,什么时候使用?
正如您在下面看到的,在序列化和反序列化之后,您将获得据称不同的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"基于毫秒时刻,时间顺序和时区,将此对象与指定对象进行相等性比较." 所以这不应该发生吗?我错过了什么?
我试图理解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) 的官方文档( 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什么?它是否好像从两个列表中删除了所有重复项?我记得在某处读到它可能会导致重复问题,但我不知道确切的情况。
对于字符串,您必须使用equals来比较它们,因为==仅比较引用.
如果我将字符与==进行比较,它是否会给出预期的结果?
我在stackoverflow上看过类似的问题,例如
但是,我还没有看到一个关于在字符上使用==的问题.
所有,我在编写下面的代码时遇到了问题
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 "也存在于池中,我的问题是
我的jdk版本:1.6.0_29
我的IDE:Intellij Idea 11.2
有人可以指出来吗?非常感谢你
该equals方法比较两个对象值是否相等.我的问题是它如何比较这两个对象?怎么能告诉两个对象是否相等?我想知道它基于它比较两个对象.我不包括这个hashCode方法.
我有一个将文本放入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语句不起作用?
在包中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 中,当您测试对象的类等于什么时,您会使用 .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 ×8
equals ×3
string ×3
android ×1
char ×1
charsequence ×1
collections ×1
compare ×1
conditional ×1
datetime ×1
duplicates ×1
jodatime ×1
julia ×1
list ×1
overriding ×1
scala ×1