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

  • 相关阅读:
    TXLSReadWriteII 公式计算
    Delphi TXLSReadWriteII2 带的demo中直接编辑XLS文件的例子
    delphi图片欣赏
    SQL 读取csv 文件批量插入数据
    Delphi TXLSReadWriteII 导出EXCEL
    Rollup 与 webpack的区别
    ref 属性使用eslint报错
    内容超出省略实现
    mac 环境配置
    前端学习资料整理
  • 原文地址:https://www.cnblogs.com/chenxiaoge/p/13335479.html
Copyright © 2011-2022 走看看