Java == 相等

"=="符号在比较对象的时候是比较的内存地址,而对于原始数据类型是直接比对的数据值。

基本类型的相等

1、数值类型:转换后进行比较,例如double类型转换成int类型进行比较。

2、浮点数:最好不要直接用“ == ”号进行比较,因为浮点数在计算机中是有误差的,可以利用两个数的绝对值差是否很小(接近0)来判断两个浮点数是否相等。

3、Double.NAN == Double.NAN 的结果为false:NAN代表不是数的数,两个不是数的数进行比较结果肯定为false。

4、、boolean 无法与 int进行比较:Java语言的编译器最终将boolean类型翻译成整数类型,但是Java语言不把boolean类型当成int类型

装箱对象是否相等

装箱对象(包装类)是指相如:Integer类、Double类、Boolean类等等。

基本类型是指相如:int类型、double类型、float类型、char类型等等。

Java语言中存有8中基本类型的“池” 整型是范围是-128~127,所以如果整数不超过127则引用指向同一“池”,他们指向的是同一对象;若超过127 就不是同一对象原因在于,在进行自动拆装箱时,编译器会使用Integer.valueof()来创建Integer实例,也就是说在-128到127之间的数字是同一引用地址,而其它范围就是不同的引用地址。

注意缓存

import java.util.*;
import java.math.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Integer a = new Integer(100);
		Integer b = new Integer(100);
		System.out.println(a == b);//因为对象是两个
		
		Integer a1 = 100;
		Integer b1 = 100;
		System.out.println(a1 == b1);//因为对象有缓存
		
		Integer a2 = 200;
		Integer b2 = 200;
		System.out.println(a2 == b2);//因为对象是两个
		/*
		 运行结果是:
		 false
		 true
		 false
		 */
	}

}

枚举、引用对象是否相等

枚举类型内部进行了惟一实例化,所以可以直接进行判断

引用对象是直接看两个引用是否一样,若要判断的内容一样,则要重写equals方法(若重写equals方法,则最好重写hashCode()方法)

String对象

判断相等一定不要用“==”号,要用equals;但是字符串常量以及字符串常量会进行内部化,相同的字符串常量是相等(==)的。

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/81293860