java String字符串常量池中:引用类的比较

  • Post author:
  • Post category:java




java String字符串常量池中:引用类的比较



首先



只要是“”中的字符串都在字符串常量池中,

对于基本类型来说, = =是对于数值的比较;

而对于引用类型来说, = =是对于【地址值】的比较;


明确


1.“abc”类型的不是一种基本类型,已经默认构造了一个实例对象,即相当于new过,在堆中有地址,如下0x666,但是存储的位于常量池中。

2.而char数组的内容,一开始还没new,数组也是保存在堆当中,如下char【】,new之后会把char转换为byte数组。

3.故两者的地址不同,引用类型的==比较下,为不同

在这里插入图片描述

注意体会上图中堆的调用,即明确字符串常量即可。


String比较方法

public class Extends {


public static void main(String[] args) {


String s = “abc”;

char[] charArray = {‘a’,‘b’,‘c’};

String s1 = new String(charArray);

System.out.println(s1 == s);

    System.out.println(s1.equals(s));//正确比较法

}



附加经验1:



假如常量与变量比较注意点:

在这里插入图片描述

把常量置前可以避免变量指针为空但仍然调用String类下的equals方法的错误。



版权声明:本文为weixin_38023259原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。