前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java 为什么设计成 String 不能用 == 来进行比较

Java 为什么设计成 String 不能用 == 来进行比较

原创
作者头像
HoneyMoose
修改2021-08-17 10:30:53
修改2021-08-17 10:30:53
4440
举报
文章被收录于专栏:CWIKIUSCWIKIUS

这个问题如果展开了说就复杂去了,包括内存怎么存的呀,如何指向的的呀。

给一个小技巧,Java 的基本数据类型就是下面这些,这些数据类型是可以直接用 CPU 进行计算的。

  • 整数类型:byte,short,int,long
  • 浮点数类型:float,double
  • 字符类型:char
  • 布尔类型:boolean

如果把这些基本数据类型转换为对象的过程就是我们说的包装了。用得最多的是 String,然后面试的时候很多人都喜欢问下这些类型的转换,其实再正常不过了。

在 Java 编程的过程中很多时候都要涉及到类型的转换了。

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。因为基本类型都是 CPU 进行计算的,比较地址能获得结果,这个不难理解吧。 因为基本类型都是 CPU 进行计算的,比较地址能获得结果,这个不难理解吧。

在基本类型转换为对象后,使用 == 比较地址毫无意义,因为不同对象使用不同地址,这个也没毛病吧。

结论

  • 因此结论就是如果是对象不能用 == 比较值,只能用 equals。
  • Java 基本类型都是小写开头,包装类型都是大写开头,好记吧。
  • 在包装类型的比较中,实际编程的时候都不一定直接用 equals 来比较,因为可能有空对象异常,通常都会用 Apache 的 Commons 或者 Guava 来比较。

https://www.ossez.com/t/java-string/13695

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档