文章目录
- 装箱和拆箱
- 泛型
- 创建一个泛型数组
- 泛型的上界
- 泛型方法
装箱和拆箱
装箱:
把基本数据类型给到引用数据类型
public static void main(String[] args) {//自动装包//第一种装包Integer c = 12;//第二种装包int a = 7;Integer b = a;//显示装包Integer aa = Integer.valueOf(10);}
拆箱:
把包装类型给到基本引用数据类型
public static void main(String[] args) {//自动拆包Integer a = 10;int b = a;//显示拆包int aa = a.intValue();}
泛型
含义:泛型:就是适用于许多许多类型。
语法:
泛型只能接受包装类
创建一个泛型数组
实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值
//类名后的 <T> 代表占位符,表示当前类是一个泛型类
class MyArray<T>{//泛型数组public Object[] array =new Object[10];public void setArray(int pos,T val) {array[pos] = val;}public T getArray(int pos){return (T)array[pos];}
}
public class Test {public static void main(String[] args) {//类型后加入 <Integer> 指定当前类型MyArray <Integer> myArray = new <Integer>MyArray();myArray.setArray(0,7);myArray.setArray(1,10);int a = myArray.getArray(1);System.out.println(a);MyArray <String> myArray1 = new <String>MyArray();myArray1.setArray(0,"jiujiu");myArray1.setArray(1,"happy");String str = myArray1.getArray(1);System.out.println(str);}
}
注意:
1.不能new一个泛型类型的数组
泛型的上界
//T只能是Number或者Numberd的子类
class FanXing<T extends Number>{}
class Person{
//父类
}
class Student extends Person{//子类
}//T只能是Person或者Person的子类
class FanXing2<T extends Person>{}
public class Test {FanXing <Integer> fanXing = new <Integer> FanXing();FanXing <Double> fanXing2 = new <Integer> FanXing();//报错FanXing <String> fanXing3 = new <Integer> FanXing();//String不是Numberd的子类FanXing2 <Student> fanXing4 = new <Student> FanXing2();FanXing2 <Person> fanXing5 = new <Person> FanXing2();}
泛型方法
class Person implements Comparable<Person>{@Overridepublic int compareTo(Person o) {return 0;}
}class Alg<T extends Comparable<T>>{public T findMaxValue(T[] array){T max = array[0];for (int i = 0; i < array.length; i++) {if (max.compareTo(array[i])<0){max = array[i];}}return max;}}//泛型方法
class Alg2{public<T extends Comparable<T>>T findMaxValue(T[] array){T max = array[0];for (int i = 0; i < array.length; i++) {if (max.compareTo(array[i])<0){max = array[i];}}return max;}}
public class Test {public static void main(String[] args) {Alg<Integer> alg = new Alg<Integer>();Integer[] integer={1,2,3,4,5,6,7};Integer ret = alg.findMaxValue(integer);System.out.println(ret);//泛型方法实例化Alg2 alg2 =new Alg2();Integer[] integer1 = {1,2,3,4,5,6,7,8};Integer ret2 = alg2.findMaxValue(integer1);System.out.println(ret2);}
}