资讯专栏INFORMATION COLUMN

java中字符串的比较

rottengeek / 1955人阅读

摘要:在写时遇到比较一个对象的字符串和一个字符串是否相等的问题,遇到了一些坑。在这段代码时和的值都是但是他们用比较时确实不相等的。

在写java时遇到比较一个对象的字符串和一个字符串是否相等的问题,遇到了一些坑。

在这段代码时,name1和name2的值都是"name",但是他们用==比较时确实不相等的。

首先,在java中String是一个对象,在用==比较两个String对象的引用时,是比较两个对象引用的值是否相等,就是比较是否指向同一个对象。name1在堆上创建了一个对象,name2也在堆上创建了一个对象,虽然对象的值都相同,但是内存地址却是不一样,是两个不同的对象,name1指向的对象和name2指向的对象不同,所以==判断返回的时false;

但是这个判断式却是true,因为java在第一次遇到“name”这个字符串时,回去缓存区查看有没有“name”这个字符串常量,没有就创建,再把这个对象赋值给name1,当name2 = "name",时,缓存区已经有"name"这个字符串常量了,所以直接把字符串常量赋值给name2,因此他们的引用对象是相同的,所以返回true.

在这个表达式中,虽然name1使用"name"字符串对象来创建的,但他是一个新的对象,只是他的值和"name"对象的值是相同的,所以name1和name2是不同的对象,所以返回false.

如果要比较两个对象的值是否相等,应该使用equals

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77231.html

相关文章

  • 深入探究Javaequals()和==区别是什么

    摘要:相等判断符介绍相等判断符用于比较基本数据类型和引用类型数据当比较基本数据类型的时候比较的是数值当比较引用类型数据时比较的是引用指针判断基本类型是否相等首先基本数据类型指的是中的八大数据类型这八大基本数据类型有个共同的特点是它们在内存中是有具相等判断符==介绍   ==相等判断符用于比较基本数据类型和引用类型数据. 当比较基本数据类型的时候比较的是数值, 当比较引用类型数据时比较的是引用(指...

    liaorio 评论0 收藏0
  • 深入探究Javaequals()和==区别是什么

    摘要:相等判断符介绍相等判断符用于比较基本数据类型和引用类型数据当比较基本数据类型的时候比较的是数值当比较引用类型数据时比较的是引用指针判断基本类型是否相等首先基本数据类型指的是中的八大数据类型这八大基本数据类型有个共同的特点是它们在内存中是有具相等判断符==介绍 ==相等判断符用于比较基本数据类型和引用类型数据. 当比较基本数据类型的时候比较的是数值, 当比较引用类型数据时比较的是引用(指针...

    番茄西红柿 评论0 收藏0
  • 深入探究Javaequals()和==区别是什么

    摘要:相等判断符介绍相等判断符用于比较基本数据类型和引用类型数据当比较基本数据类型的时候比较的是数值当比较引用类型数据时比较的是引用指针判断基本类型是否相等首先基本数据类型指的是中的八大数据类型这八大基本数据类型有个共同的特点是它们在内存中是有具相等判断符==介绍 ==相等判断符用于比较基本数据类型和引用类型数据. 当比较基本数据类型的时候比较的是数值, 当比较引用类型数据时比较的是引用(指针...

    番茄西红柿 评论0 收藏0
  • 程序兵法:Java String 源码排序算法(一)

    摘要:从行,可以看出字符串的存储结构是字符数组。如果不相等,则返回两字符的编码值的差值第行当前字符串和另一个字符串,依次字符比较。如果均相等,则返回两个字符串长度的差值所以要排序,肯定先有比较能力,即实现接口。摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!这是泥瓦匠的第103篇原创《程序兵法:Java Str...

    CntChen 评论0 收藏0
  • Java编程基础18——集合(Set集合)

    摘要:并把最终的随机数输出到控制台。方法,在集合中如何存储元素取决于方法的返回值返回,集合中只有一个元素。创建集合对象,传入比较器。 1_HashSet存储字符串并遍历 A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 import java.util.HashSet; public class Demo1_HashSet { p...

    SexySix 评论0 收藏0
  • 【金三银四】面试题之java基础

    摘要:中,任何未处理的受检查异常强制在子句中声明。运行时多态是面向对象最精髓的东西,要实现运行时多态需要方法重写子类继承父类并重写父类中已 1、简述Java程序编译和运行的过程:答:① Java编译程序将Java源程序翻译为JVM可执行代码--字节码,创建完源文件之后,程序会先被编译成 .class 文件。② 在编译好的java程序得到.class文件后,使用命令java 运行这个 .c...

    Yangyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<