文章目录
- 装箱和拆箱
- 泛型
- 创建一个泛型数组
- 泛型的上界
- 泛型方法
装箱和拆箱
装箱:
把基本数据类型给到引用数据类型
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>{
@Override
public 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);
}
}