Java为什么设计成 String 不能用 == 来进行比较
2021/8/17 11:06:22
本文主要是介绍Java为什么设计成 String 不能用 == 来进行比较,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这个问题如果展开了说就复杂去了,包括内存怎么存的呀,如何指向的的呀。
给一个小技巧,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
这篇关于Java为什么设计成 String 不能用 == 来进行比较的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南