equals和==在java中的区别
来源:互联网 发布:ipad读书软件推荐 编辑:程序博客网 时间:2024/06/03 16:32
首先要简单说明一下基本类型和引用类型在JVM中的存放(详细jvm网上有很多)
基本类型:存放在jvm栈内存中
引用类型:在类加载或者实例化(new对象是)时会在堆内存中分配空间,引用地址存放在栈内存
回归正题
"=="操作符的作用
1、用于基本数据类型的比较
2、判断引用是否指向堆内存的同一块地址。
"equals"操作符的作用1、在引用对象未重写equals方法和hashcode方法前,比较是否是同一对象(即内存地址是否相同)
2.在对象重写equals方法和hashcode方法后,比较的是两个对象的内容是否一样。
直接看例子
public class Main {
public static void main(String[] args) {
//String作为对象使用时
String s1 = new String("111");
String s2 = new String("111");
//String作为基本类型使用时
String s3 = "111";
String s4 = "11"+"1";
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //true
System.out.println(s1==s3); //false
System.out.println(s1==s2); //false
//当String类型作为基本类型使用时
//如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。
//如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。
System.out.println(s3==s4); //true
System.out.println(s3.equals(s4)); //true
//包装类
Integer i1 = 123;
Integer i4 = 123;
Integer i2 = new Integer(123);
Integer i3 = new Integer(123);
System.out.println(i1==i2); //false
System.out.println(i1.equals(i2)); //true
System.out.println(i2.equals(i3)); //true
System.out.println(i2==i3); //false
System.out.println(i1==i4); //true
int int1 = 111;
int int2 = 111;
System.out.println(s3.equals(int1)); //false
}
- equals和==在java中的区别
- Equals 和 == 在java中的区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- Java中的==和equals区别
- UltraEdit激活
- 79.查询单词
- Java学习笔记-类与对象(对象内存分析)
- Mybatis使用PageHelper步骤
- 正则表达式笔记
- equals和==在java中的区别
- vue饿了么学习-第二篇(webpack)
- Java Serializable(序列化)
- C++学习笔记05
- sublime 自用插件
- Qt for Android开发环境搭建及测试过程记录
- BootStrap中关于Select下拉框选择触发事件及扩展
- 小程序对接php接口接收数据
- 新文档