equals方法是object类提供的一个实例方法。所以所有引用变量都可以调用该方法来判断是否与其他引用变量相等。但是这个方法判断两个对象相等的标准与==没有区别,都要求两个引用变量指向同一个对象时才返回true。所以object提供的equals方法没有太大的实际意义。这就产生了重写 equals 方法。关于如何重写equals()方法,这里先不做介绍。
有些人提出质疑,说String的很多变量都可以用equals方法比较是否相等。 那是因为String已经重写了object的equals方法。String的equals()方法判断两个字符串是否相等的标准是:只要两个字符串所包含的字符序列相同,那么返回true,否则返回false。例如:
public static void main(String[] args) {
String str1 = new String("Fire");
String str2 = new String("Fire");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
打印结果:
false
true
而下面这个例子:
public static void main(String[] args) {
Persion p1 = new Persion();
Persion p2 = new Persion();
System.out.println(p1.equals(p2));
}
显然打印 false 。
但是应当注意下面这种情况:
public static void main(String[] args) {
String str1 = "Fire";
String str2 = "Fire";
String str3 = new String("Fire");
String str4 = new String("Fire");
System.out.println(str1 == str2);
System.out.println(str3 == str4);
System.out.println(str1 == str3);
System.out.println(str3.equals(str4));
System.out.println(str1.equals(str4));
}
打印结果为:
true
false
false
true
true
str1 == str2 返回true。这一点,我也不太理解。不知道String直接用"Fire"赋值与new出来的细节差别在哪里。等以后理解了,再做进一步解释。也请懂的人不吝赐教...
分享到:
相关推荐
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里...
- **问题**: `==`操作符与`equals`方法有何不同? - **解答**: `==`操作符比较的是两个对象的引用是否相等,即它们是否指向内存中的同一地址。而`equals`方法用于比较两个对象的内容是否相等。默认情况下,`equals`...
11、"=="和equals方法究竟有什么区别? 12、静态变量和实例变量的区别? 13、是否可以从一个static方法内部发出对非static方法的调用? 14、Integer与int的区别 15、Math.round(11.5)等於多少? Math.round(-11.5)等...
第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 这个问得很少。 第五,HashMap和Hashtable的区别。 常问。 第六,Collection和Collections...
#### 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? - 如果`x.equals(y)`为`true`,根据`equals()`和`hashCode()`的一致性原则,它们应当具有相同的哈希码。但是,...
180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 98 18、MVC的各个部分都有那些技术来实现?如何实现? 98 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的hash code。 45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:switch(expr1...
**问题**: `StaticNestedClass` 和 `InnerClass` 的不同之处是什么? **解答**: - **静态内部类(`StaticNestedClass`)**: 不依赖于外部类实例的存在,可以通过外部类的类名直接访问。 - **非静态内部类(`InnerClass...
#### 1.14 JDK 安装时设置 PATH 和 CLASSPATH 环境变量有何作用? - **PATH**:指定命令行工具(如 javac 和 java)的位置。 - **CLASSPATH**:指定 Java 类的搜索路径,用于查找程序所需的类和库。 #### 1.15 ...
众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中具体实现稍有不同。 Base 1.7 1.7 中的数据结构图: 先来看看 1.7 中的实现。 这是 HashMap 中比较核心的几个成员变量;看看分别是...
同步和异步有何异同,在什么情况下分别使用他们? - **同步**:等待一个任务完成后再继续执行下一个任务。 - **异步**:提交任务后立即返回,不等待任务完成。 #### 17. abstract class和interface有什么区别? -...