首页 > 电脑 > 关于基本数据类型以及==和equals的问题求解答

关于基本数据类型以及==和equals的问题求解答

电脑 2021-05-13

Java Integer int equals == 问题 求解答

全部都是true啊。 前面看错了一个。 对于基本数据类型,==比较的是值,对于对象,比较的是地址。 基本数据类型就8种,具体的可以百度。 对于基本数据类型和包装类(例如Integer这种)的==,比较的是值。 equals比较的都是值。 equals是比较值的,所以 只要变量的值确实是5,都是true。 x1==x; 这种包装类与基本类型的比较会拆箱,比较的也是值,也是true。 x2==x1; 他们都是指向一个引用的x,所以也是true。 x2==x3; x3对包装的数据进行拆箱了。int x3= new Integer(5); true,所以比较的还是包装类与基本类型,比较的也是值,也是t

java中的==和equals的问题

java里面有引用对象和值对象 像String Map Long等都属引用对象 long int char这些定义的是值对象 引用对象存放的是堆栈地址,值对象直接存放值 因此,String定义的s1, 它的值是一串内存地址,内容为堆栈地址;s2的值是另一串内存地址,内容为堆栈地址; 内存地址是不会相同的,因此s1是不等于s2的 对于s1.equals(s2),就是调用String类中定义的equals函数, public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject i

java==和equals()解惑

问题真的很长,不过总算是看完了。其实你是受了String部分的误导,我一直认为,编译器帮助我们进行了相同的String对象的内联(你的那部分描述),是帮助我们解决了过多消耗内存的问题,但是却让这部分概念变得复杂起来。 回到你的问题,==是表示值相等,而equal根据具体的实现有所不同,但总体是对象的属性一致,比较典型的是BigDecimal类的equal方法,不仅要求所表示的数值一样还要求精度一样。 既然==是表示值相等,那么对象和基础类型的比较的区别也就很明显了。String s1 = "abc";中,s1是一个句柄(或者说指针),它的值是一个String对象的内存地址,所以s1==s2做的

关于JAVA的==和equals问题!

这个的结果应该2个都是false,如果是String类型的话,第2个应该是是true。 原因是这样的,所有的对象都继承了Object,如果继承以后没有覆盖Object的equals方法的话,调用时会直接调用Object中的equals,而Object中的equals是这样写的: public boolean equals(Object obj) { return (this == obj); } 所以,你的这段代码里 == 和equals是一样的。 但是,String类继承Object后,覆盖了equals,String中的equals是这样的: public boolean equals(O

关于equals的问题

这个你需要了解到 == 和equals的区别 准确来说 ==用来判断“值”是否相等。 equals用来判断“地址”是否一致。 从数据类型讲,==用来判断基本的数据类型值。 equals用来判断对象、变量是否相等。 在本例中,s1 和 s2值一致,但是开辟的物理地址不同,equals 比较出来的是地址。

标签:equals Java 程序员 Java程序员

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved.