== 和 equals() 方法的区别
== 在比较基本数据类型时,是比较两边的数据的值是否相等
// 整数类型
int num1 = 1;
// 双精度浮点数类型
double num2 = 1.0;
// 输出结果为 true
System.out.println(num1 == num2);
== 在比较引用数据类型时,比较的是两边对象的内存地址,也就是判断两个对象是否指向同一个内存对象
// 第一种情况
// 定义一个字符串str1
String str1 = "test";
// 将定义的字符串直接赋给str2,其实只是将对象str1的引用赋给了str2,此时两个对象指向同一个内存对象
String str2 = str1;
// 输出结果为 true
System.out.println(str1 == str2); // 第二种情况
// 定义一个字符串str1
String str1 = "test";
// 对于字符串类型,简单第一次创建一个字符串时,会在方法区中的常量池里面创建一个字符串
// 等第二次在创建一个同样的字符串时,内存中不会再创建一个新的同样的字符串,而是直接将旧的字符串引用赋过去
String str2 = "test";
// 输出结果为 true
System.out.println(str1 == str2); // 第三种情况
// 使用new关键字在内存中创建一个对象str1
String str1 = new String("test");
// 使用new关键字在内存中创建一个对象str2
String str2 = new String("test");
// 使用new关键字是在内存中创建新的对象,两个对象在内存中指向的内存地址不一样,输出结果为 false
System.out.println(str1 == str2);
Object类中的equals()方法
- 在Object类中的方法底层采用的其实是使用==进行比较,也就是说如果子类不对equals()方法进行重写默认比较的还是两个对象的内存地址(String类型除外,因为String类重写了equals()方法,比较的是两个字符串的内容)
 
/**
* 如果子类不对equals()方法进行重写默认比较的还是两个对象的内存地址
* @anObject 需要比较的对象
* @return 指向同一个对象返回true,否则返回false
*/
public boolean equals(Object obj) {
return (this == obj);
}
String类中的equals()方法
/**
* String类重写了Object类中的equals()方法,比较的是两个字符串的内容
* @anObject 需要比较的对象
* @return 两个字符串相等返回true,否则返回false
*/
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
例如:
// 定义一个字符串str1
String str1 = new String("test");
// 将定义的字符串直接赋给str2
String str2 = new String("test");
// 因为String类重写了Object类中的equals()方法,比较的是两个字符串的内容,输出结果为 true
System.out.println(str1.equals(str1));
== 和 equals() 方法的区别的更多相关文章
- ==和equals()方法的区别
		
==和equals()方法的区别 这是一道经典的面试题,但是很多人对其一直很困惑,最近刚好复习了他们两者的区别,现总结如下: 一.==:两端可以存放不同的数据 1.放基本数据类型:根据基本数据 ...
 - equals()方法 与 == 区别
		
equals()方法 与 == 区别 : equals():在字符串中比较内容,则必须使用equals(变量),如果相等则为true,否则为false == :使用==比较的是地址是否一致 class ...
 - 一、基础篇--1.1Java基础-hashCode和equals方法的区别和联系
		
hashCode和equals方法的区别和联系 两个方法的定义 equals(Object obj)方法用来判断两个对象是否"相同",如果"相同"则返回tr ...
 - Java中“==”与equals方法的区别
		
1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:St ...
 - C#中==与Equals方法的区别
		
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...
 - "=="和equals方法的区别
		
.==和equal .栈内存和对内存 单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量 ...
 - java中“==”和equals方法的区别,再加上特殊的String引用类型
		
==和equals的区别: 1.==是运算符,而equals是基类Object定义的一个方法,并且equals使用==定义的 2.进行比较时,分为 基本数据类型 的比较和 引用数据类型 的比较 ...
 - ==运算符和equals()方法的区别
		
Java语言程序中判断两个变量是否相等有两种方式:一是运用==运算符,二是运用equals方法. 1. ==运算符 对于==运算符来说,如果两个变量是基本类型的,并且是数值类型,则只要它们的值相等,就 ...
 - Java 基本数据类型 及 == 与 equals 方法的区别
		
Java数据类型分为基本数据类型与引用数据类型. 1 基本数据类型 byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0 short:短整型,2个字 ...
 - JAVA面试题:equals()方法和== 区别
		
http://bbs.csdn.net/topics/390000725 总结: equals在没重写之前和==一样,重写之后,equals只要内容一样即为true equals跟==一般情况下是等价 ...
 
随机推荐
- 【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
			
编写Java Spring Boot应用,通过配置logging.path路径把日志输出在指定的文件夹中. 第一步:通过VS Code创建一个空的Spring Boot项目 第二步:在applicat ...
 - 因为一个小小的Integer问题导致阿里一面没过,遗憾!
			
面试题:new Integer(112)和Integer.valueOf(112)的区别 面试官考察点猜想 这道题,考察的是对Integer这个对象原理的理解,关于这道题的变体有很多,我们会一一进行分 ...
 - Gitlab-CI使用及.gitlab-ci.yml配置入门一篇就够了
			
转载:Gitlab-CI使用及.gitlab-ci.yml配置入门一篇就够了 - 简书 (jianshu.com) 一. Gitlab-CI/CD使用场景 首先,公司使用Gitlab作为工作仓库进行代 ...
 - 二,zabbix与php的一些问题
			
zabbix 检查先决条件 一.php-bcmath 不支持 php 安装 bcmath 扩展(编译安装) PHP的linux版本需要手动安装BCMath扩展,在PHP的源码包中默认包含BCMath的 ...
 - Java 在PPT中创建散点图
			
本文将以Java代码示例展示如何在PPT幻灯片中创建散点图表. 创建图表前 需要在Java程序中导入用于操作PPT的jar包 Free Spire.Presentation for Java.可参考如 ...
 - 关于Arrays类的静态方法asList()
			
Array.asList():是数组转成集合的方法 List<String> list = Arrays.asList(new String[]{"AA", " ...
 - google浏览器设置检查元素显示框位置
 - mybatis bind 标签
			
bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中.在前面的例子中, UserMapper.xml 有一个 selectByUser 方法,这个方法用到了 like 查询条件,部 ...
 - 【JAVA】编程(5)---递归
			
作业要求: 利用递归来计算出 从1加到100的数和 : public class 递归 { public static void main(String[] args) { System.out.pr ...
 - 彻底搞懂Spring状态机原理,实现订单与物流解耦
			
本文节选自<设计模式就该这样学> 1 状态模式的UML类图 状态模式的UML类图如下图所示. 2 使用状态模式实现登录状态自由切换 当我们在社区阅读文章时,如果觉得文章写得很好,我们就会评 ...