• 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内存详解(原版)   翻译版

  • 相关阅读:
    单点登录的实现原理
    Entity Framework添加记录时获取自增ID值
    linq to entity查询,日期格式化
    Linq之GroupBy用法
    IIS HTTPS CA
    CallContext和多线程
    windows平台 culture name 详细列表
    如何在WCF中集成unity
    .NET MVC 依赖注入 来龙去脉
    apache虚拟主机安装注意事项
  • 原文地址:https://www.cnblogs.com/chenxiaoge/p/13335479.html
Copyright © 2020-2023  润新知