博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的==和equals的区别详解
阅读量:4885 次
发布时间:2019-06-11

本文共 1494 字,大约阅读时间需要 4 分钟。

1.基础知识

(1)String x = "hello";

(2)String x = new String ("hello");

第1种方式的工作机制是,首先看内存中有没有存放值为"hello"的地址,如果有则将x指向这块内存地址;如果没有则在内存中重新开辟一块地址存放值"hello",并将x指向这块内存地址。

String x = "hello";String y = "hello";

所以上面的x,y都指向同一块内存地址。

第2种方式的工作机制是,不管内存中有没有存放值为"hello"的地址,都会重新开辟一块地址来存放值"hello"。

String x = new String("hello");String y = new String("hello");

所以上面的x,y分别指向不同的地址。

2.==的详解

==对于基本类型和引用类型的作用效果是不一样的:

  • 基本类型(byte,char,boolean,short,int,float,long,double)比较的是是否相等。
  • 引用类型比较的是引用是否相同。
String x = "hello";String y = "hello";String z = new String("hello");        System.out.println(x==y);    //结果是:trueSystem.out.println(y==z);    //结果是:false

3.equals的详解

equals是基类object中定义的方法,jdk中源代码如下:

所以equals的本质就是==,即判断两个引用是否相同。

public class Person{    private String name;        public Person(String name)    {        this.name=name;    }        public static void main(String[] args)    {        Person x=new Person("小明");        Person y=new Person("小明");                System.out.print(x.equals(y));    //结果:false    }}

上面的代码很容易理解,虽然x,y对象的name值都是"小明",但是它们本来就是两个不同的对象,所以equals的值为false。

注意:!!!

String类中,equals被重写了,功能变成了比较是否相同,源代码如下:

String x = "hello";String y = "hello";String z = new String("hello");String m = new String("hello");        System.out.println(x==y);        //结果是:trueSystem.out.println(y==z);        //结果是:falseSystem.out.println(y.equals(z));//结果是:trueSystem.out.println(z.equals(m));//结果是:true

4.总结

==是比较引用是否相同。

equals本质就是==,但对于某些类(String)来说比较的是

转载于:https://www.cnblogs.com/yahuian/p/10751506.html

你可能感兴趣的文章
leetcode-1 two sum(两数之和)
查看>>
poj1062(spfa)
查看>>
Python基础8(文件读写方法)
查看>>
Python基础36(网络编程UDP)
查看>>
把旧android手机变成跑python的服务器
查看>>
cocos2d-x -3.81+win7+vs2013开发环境创建新的项目
查看>>
第四周学习总结
查看>>
2018-05-07 html入门
查看>>
【Asp.net入门4-01】基本开发工具
查看>>
js之存储
查看>>
洛谷P1373 小a和uim之大逃离【线性dp】
查看>>
Angular:OnPush变化检测策略介绍
查看>>
移动前端手机输入法自带emoji表情字符处理
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
转 代码修改buildoption
查看>>
【SQL基础】三种类别语句
查看>>
JS学习笔记2_面向对象
查看>>
ZooKeeper管理员指南——部署与管理ZooKeeper
查看>>
3.进程的不同状态
查看>>
第三次作业
查看>>