Java 字符串比较

Posted 平凡普通

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 字符串比较相关的知识,希望对你有一定的参考价值。

"==" 是比较的是两个对象的内存地址,而equals方法默认情况下是比较两个对象的内存地址.

1.String str = "hello"  生成的字符串,首先是去检查字符串常量池中是否已经存在了这个"hello" ,若存在,就不会再创建一个新的"hello",直接返回常量池中的这个字符串地址,若不存在,那么就在字符串常量池中加入这个字符串.字符串常量池,存在于方法区中.

2.String str =  new String("hello"),首先是在常量池中寻找是否存在这个字符串,存在则不再建立,若不存在,则建立,之后复制一份到堆内存中!在堆内存中new一个字符串,当然如果再new一个字符串,那么他们的内存地址是不同的.但是对于new出来的字符串,利用equals的时候,他们是相同的,原因是String 中重写equals的方法中,是利用字符串转为char 数组来对每一个char进行比较,最后得出去true 或者 false.     new String 一共创建两次这个对象.一个在常量池,一个在堆内存中!

3.字符串比较技巧:

  利用"中国".equals(str) ,用常量equals,防止发生空指针异常.方法调用不为空.

 

以上是关于Java 字符串比较的主要内容,如果未能解决你的问题,请参考以下文章

java中两个字符串如何比较大小

java中如何比较两个时间字符串的大小

java中两个字符串如何比较大小?

为啥JAVA不可以用“==”来比较两个字符串是不是相等?

java中的字符串比较方法

Java 字符串比较