Java基础之equals方法和"= ="的区别

  ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

  如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用equals操作符进行比较。

  equals方法是用于比较两个独立对象的内容是否相同,他比较的是两个对象必须是独立的

  如下代码:

public static void main(String[] args) {
		// TODO Auto-generated method stub

		String a=new String("foo");
		String b=new String("foo");
		//它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,
		System.out.println(a==b);
		//而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
		System.out.println(a.equals(b));
	}

  在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的。

时间: 2024-10-16 19:02:03

Java基础之equals方法和"= ="的区别的相关文章

【转】彻底弄懂Java中的equals()方法以及与"=="的区别

彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差.所以,我决定花费时间把equals()和“==”的功能彻底弄懂,前事不忘后事之师嘛,分享给大家,希望对大家理解equals()和“==”的功能有所帮助. 二.分析探索解决问题的方法:1.Object 中的equals()方法: (1)通过查找API,说明如下: equalspublic boolean equ

Java易混小知识——equals方法和==的区别

一.equals方法和==的区别 1.equals是String对象的方法,可以通过".“调用. 2.== 是一个运算符. 二.常用的比较用法 1.基本数据类型比较. equals和==都比较两个数值 是否相等.相等即为true,不相等则为false. 2.引用对象的比较. equals和==都比较栈内存中的地址是否相等.相等即为true,不相等则为false. 三.易错点 1.String是一个特殊的引用类型.对于两个字符串的比较,不管是==还是equals这两者比较的都是字符串是否相同. 2

java中‘==’和‘equals()’方法的有趣探索

这两天在看周志明的<深入理解java虚拟机>,受益颇多,根据书中的启示,对java中'=='和'equals()'方法的区别做了一些探索. 首先,为了更快地让进入状态,我们先来所几个判断题,例程如下,请判断各个System.out.println()输出的结果. <pre name="code" class="java"> public static void main(String[] args) { Integer a =1; Integ

Java 基础:hashCode方法

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 一.前言 泥瓦匠最近被项目搞的天昏地暗.发现有些要给自己一些目标,关于技术的目标: 专注很重要.专注Java 基础 + H5(学习) 其他操作系统,算法,数据结构当成课外书博览.有时候,就是那样你越是专注方面越多对自己打击越大学啥啥都不好.今天带来Java基础:hashCode方法 二.hashCode方法 hash code(散列码,也可以叫哈希码值)是对象产生的一个整型值.其生成没有规律的.二者

java中 == 和equals的使用与区别

java 的数据类型分为“基本数据类型” 和“引用数据类型”:   --->在基本数据类型的比较中,== 比的就是基本数据类型变量中所保存的值. --->在引用数据类型的比较中,== 才比较的是变量所指向的对象的地址. hashCode()返回该对象的哈希码值,该值通常是一个由该对象的内部地址转换而来的整数,它的实现主要是为了提高哈希表. 我们以引用数据类型为例,因为基本类型比较的是值,简单无须多言. 封装好的String 类型为例: (注意:ObjectL中有方法equals, hashco

如何重写Java中的equals方法

Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型,不论是对象数组,列表等都扩展了Object类.了解学习Object中方法的设计原理和实现方式有助于更好的学习理解java语言.下面,我们首先学习一下Object中的equals方法. 判断两个对象相等时,JVM首先查找两个对象的hashCode, 如果两者hashCode不同,则返回false;如果

Java基础String的方法

Java基础String的方法 字符串类型写法格式如下: 格式一: String 变量名称; 变量名称=赋值(自定义或传入的变量值); 格式二: String 变量名称=赋值(自定义或传入的变量值);在输出时任何数据类型与字符串进行拼接,结果一般是字符串 1 public class StringFunc { 2 3 public static void main(String[] args){ 4 //字符串拼接 5 String str1; 6 str1 = "hello"; 7

Java:自定义实现equals()方法

Java:自定义实现equals()方法 以常见的自定义Date类型为例,没有经验的朋友可能会觉得直接比较年月日即可,从而写出以下的实现 public class MyDate implements Comparable<MyDate> { private final int year; private final int month; private final int day; public MyDate(int year, int month, int day) { this.year

Java中“==”与equals方法的区别

1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:String类对equals进行了重写:1)若是同一个对象,返回true: 2)若不是,则比较它们的值,值相同,返回true 重写代码: public boolean equals(Object anObject) { if (this == anObject) { return true; } if