【Java】比较两个变量是否相等 什么时候用“==” 什么时候用“equals”
2023-09-11 14:16:50 时间
public static void main(String[] args) { Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(a == b); // false(==:对比的是两个变量的内存地址,) System.out.println(a.equals(b)); // true System.out.println("============================="); Integer aa = 1; Integer bb = 1; System.out.println(aa == bb); // true System.out.println(aa.equals(bb)); // true /** * 总结 * * java与python的“==”,刚好相反 * * Java * “==”:对比的是内存地址 * “equals”:对比的是值(如Integer的equals是把对象转换为Integer类型然后再通过Integer类的intValue方法取值) * * Python * “==”:对比的是值 * “is”:对比的是内存地址 * */ }
备注:java基本数据类型(4类8种)
|
类型 |
默认值 |
整数类型 |
byte |
0 |
short |
0 |
|
int |
0 |
|
long |
0L |
|
浮点类型 |
float |
0.0f |
double |
0.0d |
|
字符类型 |
char |
'u0000' |
布尔类型 |
boolean |
false |
"==":对比的是两个变量(对象)的内存地址
"equals":对比的是两个变量(对象)的值(只有封装后对象才会有equals方法)
总结:
1、如果两个变量是基本数据类型(如int、char等),则直接用"=="对比是否相等即可,因为他们的值是一个常量,在内存中的地址是一样的(值一样的常量在内存中的地址也是一样的)
2、如果两个变量是封装后的数据类型(如Integer、String等),则用"equals"对比是否相等,因为他们是属于不同的对象,虽然值可能是一样的,但这两个对象在内存中的地址肯定不一样
相关文章
- BigDecimal类型加减乘除运算(Java必备知识)
- 京东面试——java工程师2
- Java StringBuffer & StringBuilder,超详细整理,适合新手入门
- 《Java和Android开发学习指南(第2版)》——第2章,第2.4节变量
- 《Java程序员面试秘笈》—— 面试题9 对于类的静态变量的理解
- 《Java和Android开发实战详解》——导读
- Java标识符(类名、变量名、方法名、接口名、包名)命名的一般规则
- java开源类库pinyin4j的使用
- [学习笔记]Java作用域变量申明和C、C++的差异性
- JAVA好书之《深入理解Java虚拟机》
- java中的变量和数据类型
- Java_解决java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
- 浅析Java中三目运算符可能产生的坑
- JAVA 并发编程-线程范围内共享变量(五)
- java中接口的定义与实现
- Java小白入门200例61之java中Date日期类型的大小比较
- 什么是Java序列化,如何实现java序列化
- java+内存分配及变量存储位置的区别
- Java URLConnection 实现 HTTP get与post