zoukankan      html  css  js  c++  java
  • java开发注意点之String使用equals和==的区别

    "=="操作符的作用

    1、用于基本数据类型的比较

    2、判断引用是否指向堆内存的同一块地址。

    equals所在位置:

    在Object类当中,而Object是所有类的父类,包含在jdk里面,但并不适合绝大多数场景,通常需要重写

    public boolean equals(Object obj) {
            return (this == obj);
        }

    equals的作用:

    用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型

    equals的基本使用:

    boolean b = obj1.equals(obj2);

    String类型比较不同对象内容是否相同,应该用equals,因为==用于比较引用类型和比较基本数据类型时具有不同的功能。

    分析如下:

    String作为一个对象来使用

    例子一:对象不同,内容相同,"=="返回false,equals返回true

    String s1 = new String("java");
    String s2 = new String("java");
    
    System.out.println(s1==s2);            //false
    System.out.println(s1.equals(s2));    //true

    例子二:同一对象,"=="和equals结果相同

    String s1 = new String("java");
    String s2 = s1;
    
    System.out.println(s1==s2);            //true
    System.out.println(s1.equals(s2));    //true

    String作为一个基本类型来使用

    如果值不相同,对象就不相同,所以"==" 和equals结果一样

    String s1 = "java";
    String s2 = "java";
    
    System.out.println(s1==s2);            //true
    System.out.println(s1.equals(s2));    //true

    如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。

    如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。

  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/strivers/p/7011307.html
Copyright © 2011-2022 走看看