Java 中 字符串比较原理(指针 或 字符)

Java 中 字符串比较原理(指针 或 字符)

2020年11月16日 15:57:53

在java中 我们对比一个字符串 他是有分几种情况  :
如下:

import java.util.*;
public class Main {
    public static void main(String[] args)
    {
        String str = "aabbccdda";
        String str1 = new String("aabbccdda");
        System.out.println((str == str1));    //false
        
        String str3 = "aabbccdda";
        String str4 = "aabbccdda";
        System.out.print((str3 == str4));    //true
        
    }
}

可以看出  它new出来的东西  是在堆中的  ,但是 它 常亮(str1)定义出来的东西 JVM会在常量区中寻找,若没有,则创建,  又让 str3 和 str4 去指向"aabbccdda",JVM会在常量区寻找,有的话直接指向

故str3 和 str4 相等判断后得出 是相同的。

str 和 str1 内容相同又怎样,但它们内存中存放的区域不一样 那地址也是不一样的,所以说,他们是不相等的。

总结出来  :   他们的比较是用指针(地址)  来对比的,若你是想去单纯的对比字符串(即内容相同就相等) 那么你可以用 字符串的特性 str.equals() 或 循环字符比较。

这里注意一下 直接String = “xxx”  和 new  出来的方式是不一样的  需要严格去了解   

本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/13985648.html

原文地址:https://www.cnblogs.com/bi-hu/p/13985648.html