java泛型——笔记总结

Java泛型是一种类型安全机制,允许在编译时检查类型,确保代码的正确性。泛型可以应用于方法和类,以实现通用的功能,如示例中的泛型冒泡排序方法。泛型不允许基本类型,只能用于引用类型,并且涉及到自动装箱和拆箱。在比较包装类对象时,需要注意128陷阱,因为包装类在-128到127之间使用了缓存,可能导致不预期的相等性结果。因此,比较时应使用`intValue()`等方法进行值的比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 泛型(generics)
泛型是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
为什么需要泛型?
假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?

答案是可以使用 Java 泛型。

使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。
利用java泛型实现的冒泡排序:

public static <T extends Comparable<? super T>> void bubbleSort(T[] a)
	{
		for(int i = 0; i < a.length - 1; i++)
		{
			for(int j = 0; j < a.length - i - 1; j++)
			{
				if (a[j + 1].compareTo(a[j]) < 0)
				{
					T temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
				}
			}
		}
	}

值得注意的是:
泛型代表任意引用类型(只能是引用类型,不可以是基本类型)

自动装箱与自动拆箱:

  • 自动装箱:基本类型转引用类型
  • 自动拆箱:引用类型转基本类型

128陷阱:
当使用两个包装类型的变量来比较是否相等时,在-128 - 127之间的是true之外的是false(包装类)

例如:

Integer x = 90;
Integer y = 90;
x == y;//true
Integer x = 900;
Integer y = 900;
x == y;//false

**原因:**与包装类的设计方式有关,包装类在设计之初根据使用频率,将-127 - 128之间与之外的分开设计,由于-128 - 127之间的使用频率高,设计类似常量池,每个变量都会指向同一个地址,而之外的则是不同的地址
故包装类的比较大小要通过拆箱来比较
x.intValue() == y.intValue();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值