java 中equals和==的区别

  

  java9举例代码:

1   String str1 = "abc";
2   String str2 = "abc";
3   String str3 = new String("abc");
4   String str4 = new String("abc");

      当:  str1 == str2    输出:true    当:str1.equals(str2); 输出:true

      当:  str1 == str3 输出:false      当:str1.equals(str3); 输出:true

      当:  str3 == str4 输出:false      当:str3.equals(str4); 输出:true

        

    涉及到的细节:

     - 可以通过String中intern方法,字符串对象在常量池中和它相等的字符串的引用

         str3.intern() == str4.intern()  输出:true

         str1.intern().equals(str2.intern())  输出:true

         str1.intern() == str1   输出:false

     - String str = new String("abc");创建了几个对象?

         首先要看常量池里是否有“abc”这个字符串,如果有(String str = "abc";出现时则有),则创建一个,如果没有,则创建两个(一个在常量池,一个在堆中)。

    == 和 equals 区别:

      对于 == :

          作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

          作用于引用类型的变量,则比较的是所指向的对象的地址;

      对于 equals:  

          equals方法不能作用于基本数据类型的变量;

          如果没有对Object中equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

          

          

原文地址:https://www.cnblogs.com/stamp/p/java_base_compare.html

时间: 2024-08-06 01:47:47

java 中equals和==的区别的相关文章

【转】Java中equals和==的区别

[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,

java中equals和==的区别 (转)

java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同. equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同.  ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 一.String中

关于java中equals与==的区别的小实验

java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的是二者是都为同一对象,是一种操作符. 做了几个小实验比较结果. 实验一: String str1="ab": String str2="ab": System.out.println(s1==s2)://trueSystem.out.println(str1.equals(str2));//true 这里的str1与str2都指向了常量池中的同一对象,所以S

java中.equals和==的区别?

Java中的equals是十分重要的,和= =要区别开来,孙卫琴的JAVA面向对象编程一书对这个做了阐述,现在小结其主要内容,而且要将 = =和 equals列为重要的对比概念来学习 1.声明格式    public  boolean equals(Object obj) 其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false. 比如以下两个对象animal1和animal2,引用不同的对象,因此用==或equals()方法比较的结果为false;而an

Java中equals和==的区别

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个

JAVA基础:Java中equals和==的区别

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值.  2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equ

Java中equals和“==””的区别,String特殊

public class TestString { /* * java中的数据类型,可分为两类: * 1.基本数据类型,也称为原始数据类型.byte,short,char,int,long,float,double,boolean * 他们之间的比较,应用双等号(==),比较的是他们的值. * 2.复合数据类型(类) * 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象, * 他们的比较后的结果为true,否则比较后果为false. * * ja

Java 中 Equals和==的区别

equals和==的区别 equals方法最初是在所有类的基类Object中进行定义的,源码是 1 2 3 public boolean equals(Object obj) {     return (this == obj);     } 由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String.Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只

Java 中 equals 和 == 的区别

equals 如果对equals 方法进行重写,那么 equals 方法就是用于判断引用数据类型的变量的值否相等: 如果没有对 equals 方法进行重写,那么 equals 方法就是用于判断引用数据类型的变量所指向的对象的地址是否相等,即是否指向同一个对象 == 对于基本数据类型的变量,比较的是变量存储的值是否相等, 而作用于引用类型的变量时,比较的是变量所指向的对象在内存中的地址值是否相等. 首先看如下代码: 分析 如下代码: public class EqualsDemo { public