泛型和包装类
一 泛型
1.泛型:只存在于编译时期
意义:
(1)可以自动进行类型的检查
(2) 自动进行类型的转换
泛型的擦除机制:编译的时候会进行类型擦除,会把泛型擦除为Object
简单类型不能做泛型类型的参数
2.泛型的使用
泛型可以一次有多个类型变量,用逗号分隔
使用例子:
class Student{
private String name;
private String banji;
private double score;
public Student(String name,String banji,double score){
this.name = name;
this.banji = banji;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", banji='" + banji + '\'' +
", score=" + score +
'}';
}
}
public class Test {
public static void main(String[] args) {
List<Student> list= new ArrayList<>();
list.add(new Student("张三","1",80.0));
list.add(new Student("李四","1",90.0));
for (int i = 0;i < list.size();i++) {
System.out.println(list.get(i));
}
}
}
3.泛型总结
- 泛型是为了解决某些容器、算法等代码的通用性而引入,并且能在编译期间做类型检查。
- 泛型利用的是 Object 是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作。
- 泛型是一种编译期间的机制,即 MyArrayList 和 MyArrayList 在运行期间是一个类型。
- 泛型是 java 中的一种合法语法,标志就是尖括号 <>
二 包装类
1.基本数据类型及其包装类型
2.装箱/装包(boxing)
(1)显示装箱
int i = 10;
Integer ii = Integer.valueOf(i);
Integer ij = new Integer(i);
(2)自动装箱
int i = 10;
Integer ii = i;
Integer ij = (Integer)i;
3.拆箱(autounboxing)
(1)显示拆箱
int j = ii.intValue();
(2)自动拆箱
int j = ii; // 自动拆箱
int k = (int)ii;