• Java中“==”与“equal()”的区别。


    1“==”

       在基本数据类型:(byte,short,char,int,long,float,double,boolean) 中,“==”都是 比较的他们的值。

       在复合数据类型 :(对象,数组) 中“==”都是比较的的内存地址(也就是堆内存地址)

       对于复合数据类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。

     2,equal

      JAVA当中所有的类都是继承于Object这个超类的,在Object类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,

      但在一些类库当中这个方法被复写了,如String、Integer、Date。在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。 

      所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,
     
      跟双等号(==)的结果相同;如果被复写,按照复写的要求来。

     3,== 与equal的区别

      ==:比较的是两个字符串内存地址的数值是否相等,属于数值比较;

     equals():比较的是两个字符串的内容,属于内容比较。
     
    所以看一下以下代码:
     
    1 public class StringDemo {
     2     public static void main(String args[]) {
     3         String str1 = "Hello";
     4         String str2 = new String("Hello");
     5         String str3 = str2; // 引用传递
     6         System.out.println(str1 == str2); // false (比的是地址)
     7         System.out.println(str1 == str3); // false (比的是地址)
     8         System.out.println(str2 == str3); // true (比的是地址)
     9         System.out.println(str1.equals(str2)); // true (比的是值)
    10         System.out.println(str1.equals(str3)); // true (比的是值)
    11         System.out.println(str2.equals(str3)); // true  (比的是值)
    12     }
    13 }
    中国男儿当自强不息,厚德载物。
  • 相关阅读:
    Spring boot mybatis : Error creating bean with name 'com.github.pagehelper.autoconfigure.MapperAutoConfiguration': Invocation of init method failed;
    方法调用
    初识MQ
    Shell 变量
    Eclipse 导入本地 Git 项目
    IDEA 常用快捷键
    Xshell 配色方案
    冒泡排序
    递归
    安卓服务Service详解
  • 原文地址:https://www.cnblogs.com/zhznb/p/9203841.html
Copyright © 2020-2023  润新知