初始泛型【超级详细哦~】
- 1、包装类
- 1.1 基本数据类型和对应的包装类
- 1.2 装箱和拆箱
- 1.3 自动装箱和拆箱
- 2、泛型
- 2.1 什么是泛型
- 2.2 泛型的语法
- 2.3泛型的使用
- 2.4 泛型的上界
- 2.4.1 语法
- 2.4.2 示例
1、包装类
1.1 基本数据类型和对应的包装类
1.2 装箱和拆箱
int i=10;
//装箱操作,新建一个Integer类型对象,手动将i的值放入对象的某个属性中
Integer ii=Integer.valueOf(i);
//拆箱操作,将Integer对象中的值取出,放到一个基础类型中
int j=ii.intValue();
1.3 自动装箱和拆箱
//自动装箱
Integer i1=10;
//自动拆箱
int i2=i1;
2、泛型
2.1 什么是泛型
泛型:就是适用于许多许多类型。
使用泛型可以通过自动装箱储存Integer等对象,
不仅能储存基本类型,还能储存复杂对象,这样为程序提供了更大的通用性。
使用泛型较数组的好处
- int[ ]… : 之前我们就学过数组,只能创建静态数组,只提供基本的访问和遍历操作。你需要手动输入更多复杂的操作,如增删查改。
- List< Integer >… :使用泛型时,不仅可以创建动态数组,装箱后还提供了很多复杂的操作,如:List的增删查改方法。
2.2 泛型的语法
class 泛型类名称 <类型形参列表>{
//这里可以使用类型参数
}
下面举一个简单的例子:
class demo<T>{
public Object[] arr=new Object[10];
//所有类的父类是Object
}
2.3泛型的使用
如果上述案例我不想使用(T)强制性转化应该如何书写代码?
2.4 泛型的上界
在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束。
2.4.1 语法
class 泛型类名称<类型形参 extend 类型边界>{
}
2.4.2 示例
关于泛型的内容已经叙述完毕,该文章使用过的代码我放下面了,有需要的可以选择查看~
class demo<T>{
public Object[] arr=new Object[10];
public T getArr(int pos) {
return (T)arr[pos];
}
public void setArr(int pos,T val) {
this.arr[pos] = val;
}
}
class demo0<E extends Number>{
public Object[] arr=new Object[10];
public E getArr(int pos) {
return (E)arr[pos];
}
public void setArr(int pos,E val) {
this.arr[pos] = val;
}
}
public class Main {
public static<E> void main(String[] args) {
demo0<Integer> arr=new demo0<>();
//demo0<String> arr1=new demo0<String>();
}
public static<T> void main5(String[] args) {
demo<String> arr=new demo<>();
arr.setArr(0,"哈哈哈哈");
System.out.println(arr.getArr(0));
}
public static <T> void main4(String[] args) {
demo<Integer> arr=new demo<>();
arr.setArr(0, 100 );
System.out.println(arr.getArr(0));
}
public static void main3(String[] args) {
int[] arr1={1,2,3,4,5,6};
char[] arr2={'a','b','c','d','e'};
}
public static void main2(String[] args) {
//自动装箱
Integer i1=10;
//自动拆箱
int i2=i1;
System.out.println(i1);
System.out.println(i2);
}
public static void main1(String[] args) {
int i=10;
//装箱操作,新建一个Integer类型对象,手动将i的值放入对象的某个属性中
Integer ii=Integer.valueOf(i);
//拆箱操作,将Integer对象中的值取出,放到一个基础类型中
int j=ii.intValue();
System.out.println(i);
System.out.println(ii);
System.out.println(j);
}
}