zoukankan      html  css  js  c++  java
  • 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方法进行了重写的话,比较的是所指向的对象的内容。

  • 相关阅读:
    [笔记]一道C语言面试题:IPv4字符串转为UInt整数
    linux内核代码注释 赵炯 第三章引导启动程序
    bcd码
    2章 perl标量变量
    1章 perl入门
    perl第三章 列表和数组
    浮动 float
    文字与图像
    3.深入理解盒子模型
    4.盒子的浮动和定位
  • 原文地址:https://www.cnblogs.com/lick468/p/10658189.html
Copyright © 2011-2022 走看看