java 的==和equals的区别(二)
java 的==和equals的区别
java 的==和equals的区别
==通常表明引用的是同一个东西(引用的地址相同),equals通常表明两个对象的内容相同(值相同)
-------------------------------------------------------------------------------------------------------------------------------------
11111)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
int n=3;
int m=3;
System.out.println(n==m); // true
如果作用于引用类型的变量,则比较的是所指向的对象的地址
String str = new String("hello");
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1==str2); // false 因为这两个对象是先后new的,地址肯定不相等
str3 = str;
str4 = str;
System.out.println(str3==str4); // true 虽然应用不一样,但是指向的是同一个new的对象/地址
22222)对于equals方法,注意:equals方法不能作用于基本数据类型的变量!!!!!
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;(与==效果一样)
class Cat {
int color, weight, height;
public Cat(int color, int weight, int height) {
this.color = color;
this.weight = weight;
this.height = height;
}
}
Cat c1 = new Cat(1, 1, 1);
Cat c2 = new Cat(1, 1, 1);
System.out.println("c1==c2的结果是:"+(c1==c2));//false 因为 == 对引用类型/对象做比较的时候,比较的是“地址”,对基本数据类型比较的是“值”
System.out.println("c1.equals(c2)的结果是:"+c1.equals(c2));//false 此时没有对equals重写,则equals(还是object类的)与“==”效果一样比较地址
如果对equals进行重写之后就比较的是对象内容了,下面是重写equals的代码
public boolean equals(Object obj){
if (obj==null){
return false;
}
else{
if (obj instanceof Cat){
Cat c = (Cat)obj;
if (c.color==this.color && c.weight==this.weight && c.height==this.height){
return true;
}
}
}
return false;
}
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等。
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2)); // true 对equals方法进行重写,对比字符串的每一个字符都相等
java 的==和equals的区别(二)的更多相关文章
- Java 中 == 和 equals 的区别
有一段时间,== 和 equals 的区别一直困扰着我.因为涉及到Java的内存机制,然而Java的内存机制又是比较抽象的东西,所以对那时候的我来说,实在是很难理解. == 和 equals 最大的区 ...
- Java中“==”与equals的区别以及equals方法的重写
一.“==”与equals的区别: (1)==代表比较双方是否相同: 基本数据类型表示值相等. 引用数据类型表示地址相等,即同一个对象. (2)Object中的equals()方法:是否为同一个对象的 ...
- java 中 “==” 和 equals 的区别
转自https://www.cnblogs.com/www123----/p/7857298.html 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new Strin ...
- java 中 ==和equals 的区别
Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...
- JAVA中“==”与equals()方法区别
equals 方法是 java.lang.Object 类的方法 有两种用法说明: ()对于字符串变量来说,使用"=="和"equals()"方法比较字符串时, ...
- Java中==与equals的区别及理解
区别: "==" 比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致. 如果两个对象的引用相同时(指向同一对象时)," ...
- Java中==与equals()的区别
声明转载来源:http://blog.csdn.net/striverli/article/details/52997927 ==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系 ...
- JAVA ==号和equals()的区别
==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系呢? 首先,==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值: int x = 10; ...
- Java中==和equals()的区别
随机推荐
- makefile--变量的使用(二)
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 仔细研究我们的之前Makefile发现,我们还有改进的地方,就是此处: target_bin : ...
- Java 基本语法----数组
数组 数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理. 数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任何数据类型,包 ...
- Linux buffer/cache异同
buffers与cached 1).异同点 在Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从磁盘读入到这些内存中,然后再将数据分发给应用程序:当需要往文件中 ...
- Android中Invalidate与postInvalidate的区别<转>
http://www.cnblogs.com/it-tomorrow/archive/2012/11/08/2760146.html 示例:http://rayleung.iteye.com/blog ...
- Python Scrapy 自动爬虫注意细节(1)
一.首次爬取模拟浏览器 在爬虫文件中,添加start_request函数.如: def start_requests(self): ua = {"User-Agent": 'Moz ...
- Unity官网针对IOS开发有比较好的建议
Unity官网针对IOS开发有比较好的建议,我总结了翻译如下,后面附上原文. 尽量控制定点数量(注意所谓顶点不是建模时的顶点,而是引擎渲染时的顶点.例如,模型一个顶点如果设置了2个法向,那么对引擎来说 ...
- c/c++设置图片为透明图
在绘制图片的时候先把源位图填充背景设置为白色 例如:m_bufferpicture.FillSolidRect(0,0,m_nWidth,m_nHeight,RGB(255,255,255));//这 ...
- WEB安全第五篇--其他注入的奇技淫巧:XML注入、Xpath注入、Json注入、CRLF注入
零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...
- salt更换新key
1 停止salt-minion服务 service salt-minion stop 2 删除salt-minion公钥文件 rm /etc/salt/pki/minion/minion.pub r ...
- 微信小游戏 小程序与小游戏获取用户信息接口调整 wx.createUserInfoButton
参考: 小程序•小故事(6)——微信登录能力优化 小程序•小故事(4)——获取用户信息 本篇主要是讲微信getUserInfo接口不再出现授权弹框 那么原来getUserInfo是怎么样?修改之后又是 ...