zoukankan      html  css  js  c++  java
  • Java中操作符"=="和equals方法的区别

    string1==string2 中的操作符只能检测string1和string2是否指向同一个对象,但它不会告诉你它们的内容是否相同.因此不能用==操作符来判断两个字符串变量的内容是否相同.取而代之,应该使用equals方法

    string1.equals(string2) 可以判断两个字符串变量的内容是否相同

    public class Test {
        public static void main(String[] args) {
            String str1 = "Hello World!";
            String str2 = new String("Hello World!");
            String str3 = str1;
            String str4 = "Hello World!";
            System.out.println(str1 == str2);//false
            System.out.println(str1 == str3);//true
            System.out.println(str1 == str4);//true
            System.out.println(str1.equals(str2));//true
            System.out.println(str1.equals(str3));//true
            System.out.println(str2.equals(str3));//true
        }
    }

    上述代码    str1 == str2为false 是由于尽管str1与str2的内容相同 ,但str1是一个引用变量,它引用了一个内容为Hello World! 的字符串对象,str2又指向了一个在堆内存中新开辟的的字符串对象地址

    而str1 == str4 为true的原因是: Java虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串字面值使用同一个实例,这样的实例称为 驻留的字符串

    关于String内存中的详解可以参考 Stirng内存详解(原版)   翻译版

  • 相关阅读:
    我是来讲笑话的
    dom4j读取xml
    Mysql常用命令
    如何快速开发小型系统
    Spring aop的实现原理
    Spring IOC容器解析及实现原理
    如何编写更棒的代码
    Git使用教程
    关于程序员吃青春饭问题之探讨
    如何自学编程
  • 原文地址:https://www.cnblogs.com/chenxiaoge/p/13335479.html
Copyright © 2011-2022 走看看