Java == 和 equals 区别
先来看一段代码
1. String str1 = new String("hello");//堆中分配一块内存,存放"hello",str1 指向内存地址
2. String str2 = new String("hello");//堆中分配一块内存,存放"hello",str2 指向内存地址
3.
4. System.out.println(str1==str2); //false
5. System.out.println(str1.equals(str2)); //true
第四行 ,== 值比较 因为内存地址不一样,所以返回false
第五行 ,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。都是指向"hello" 所以返回true
String str1 = "hello";//在常量池中创建了hello字符串
String str2 = "hello";//在常量池中创建了hello字符串
System.out.println(str1==str2); //true str1和str2指向的是同一个地址(true)
System.out.println(str1.equals(str2)); //true 字符串与指定的对象比较
String str = new String("hello");
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1==str2); //false
System.out.println(str1.equals(str2)); //true
str1 = str;
str2 = str;
System.out.println(str1==str2); //true
System.out.println(str1.equals(str2)); //true
总结:
1)对于 == ,可用于比较基本类型和引用类型。
如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
2)equals() 是Object类定义的一个方法,用来比较两个引用对象是否相等。
如果没有对equals方法进行重写,就相当于 == ,比较的是引用类型的变量所指向的对象的地址,是否为同一个对象;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
Java == 和 equals 区别的更多相关文章
- Java "==和equals区别" 示例
import java.util.Calendar; import java.util.Date; import java.util.Locale; public class test { publi ...
- Java "==和equals区别"
本文转载至中软国际电子政务部Jeff Chi总结,转载请说明出处. 概述: A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同:当用于引用类型的时候,是比较对象是否相 ...
- Java中equals与==和comparaTo的区别
一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long doubl ...
- 黑马程序员——JAVA基础之 == 和equals区别
java中 == 和equals区别: java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...
- java中equals和==的区别 (转)
java中equals和==的区别 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...
- 【转】Java中equals和==的区别
[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...
- JAVA基础之——三大特征、接口和抽象类区别、重载和重写区别、==和equals区别、JAVA自动装箱和拆箱
1 java三大特征 1)封装:即class,把一类实体定义成类,该类有变量和方法. 2)继承:从已有的父类中派生出子类,子类实现父类的抽象方法. 3)多态:通过父类对象可以引用不同的子类,从而实现不 ...
- java里 equals和== 区别
1.java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中.2.==操作比较的是两个变量的值是否相等,对于引 ...
- Java中的 "==" 和 "equals" 区别
分析 "==" 和 "equals" 区别的时候先了解一下Java的内存. Java内存 “==” 和 “equals” 区别” “==”: “==”比较的是 ...
随机推荐
- oracle已知会导致错误结果的bug列表(Bug Issues Known to cause Wrong Results)
LAST UPDATE: 1 Dec 15, 2016 APPLIES TO: 1 2 3 4 Oracle Database - Enterprise Edition - Versi ...
- 关于innodb_flush_log_at_trx_commit、innodb_flush_method、innodb_log_block_size和fsync()、O_DIRECT、iops、云盘的关系与总结
想着整理关于innodb_flush_log_at_trx_commit.innodb_flush_method.innodb_log_block_size和fsync().O_DIRECT.iops ...
- python简说(十一)os模块
import osres = os.listdir('/Users/nhy/Desktop') #列出某个目录下的所有文件# os.remove()# os.rename()# os.mkdir(r' ...
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- javaEE体系结构【转载】
转载自: http://blog.csdn.net/chjskarl/article/details/72629014?locationNum=3&fps=1 JavaEE是一套使用Java进 ...
- Git rebase的使用
rebase 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase. 在本节中我们将学习什么是“rebase”,怎样使用“rebase”,并将展示该操作的惊艳之处,以及指 ...
- Python 实用技巧
模块相关 导入模块时,可以通过模块的 __file__ 属性查看模块所在磁盘的路径位置,参考:关于Python包和模块的10个知识清单 Pip 安装Pip 方法一: sudo apt-get purg ...
- Windows 安装Java与配置环境变量
window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloa ...
- 如何清除浮动塌陷? float:left 塌陷
参考文章: http://www.jb51.net/css/502268.html 原文链接:http://www.jianshu.com/p/a0500b54da13 只要给li的宽度, 规定得小一 ...
- ZOJ 3609 Modular Inverse(扩展欧几里得)题解
题意:求乘法逆元最小正正数解 思路:a*x≡1(mod m),则称x 是 a 关于 m 的乘法逆元,可以通过解a*x + m*y = 1解得x.那么通过EXGcd得到特解x1,最小正解x1 = x1 ...