第十四届蓝桥杯集训——泛型

2023-01-13 10:09:32 浏览数 (1)

第十四届蓝桥杯集训——泛型

目录

第十四届蓝桥杯集训——泛型

泛型概述

泛型方法

java 中泛型标记符:

包装类列表

Object

Number

泛型概述

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?答案是可以使用 Java 泛型。

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

泛型方法

你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

下面是定义泛型方法的规则:

所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的 <E>)。

每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。

类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。

泛型方法体的声明和其他方法一样。

注意类型参数只能代表引用型类型,不能是原始类型(像 int、double、char 等)。

java 中泛型标记符:

E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定的 java 类型

我这里用E集合作为案例,做了一个泛型遍历集合的示例,如果不使用泛型,我们需要创建三个自定义函数来遍历对应的数组。

代码语言:javascript复制
package com.item.action;

public class Demo {

	public static void main(String[] args) {
		// 创建不同包装类类型的数组,这里只认包装类
		// Integer, Double 和 Character
		Integer[] intArray = { 7, 7, 5, 2, 1 };
		Double[] doubleArray = { 1.7, 2.7, 3.5, 2.1 };
		Character[] charArray = { 'E', 'O', 'L', 'I', 'N', 'K' };

		System.out.println("整型数组元素为:");
		printArray(intArray); // 传递一个整型数组

		System.out.println("n双精度型数组元素为:");
		printArray(doubleArray); // 传递一个双精度型数组

		System.out.println("n字符型数组元素为:");
		printArray(charArray); // 传递一个字符型数组
	}

	/**
	 * 自定义的泛型输入ArrayElement
	 * 
	 * @param <E>
	 * @param inputArray
	 */
	public static <E> void printArray(E[] inputArray) {
		// 输出数组元素
		for (E element : inputArray) {
			System.out.printf("%s ", element);
		}
		System.out.println();
	}
}

包装类列表

基本数据类型

包装类

包装类型位置

包装类的直接父类

boolean

Boolean

java.Lang.Boolean

Object

char

Character

java.Lang.Character

byte

Byte

java.Lang.Byte

Number

short

Short

java.Lang.Short

int

Integer

java.Lang.Integer

long

Long

java.Lang.Long

float

Float

java.Lang.Float

double

Double

java.Lang.Double

0 人点赞