目录
包装类
泛型(Generic)
若泛型中存在多个类型参数,成员变量的类型就不一定一致
定义泛型对象时,只能使用类,基本类型不能保存到泛型中,必须使用包装类。
Object类可以接收所有引用数据类型,为了让Object可以接收所有的类,引入包装类,把基本的类型都封装。
package pakage_class;
public class IntegerTest {
int val=10;
//int -->Integer
Integer i1=new Integer(val);
Object object=i1;
//如要进行数学运算,就需要把包装类还原为基本类型
int ret= i1.intValue();
public static void main(String[] args) {
//自动装箱
Integer i2=10;
//自动拆箱
i2+=20;
System.out.println(i2);
Integer i1=130;
Integer i2=130;
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
i1=120; //这个数值头一次输出的化,创建一个Integer对象保存到常量池中
i2=120; // 此时120这个值在常量池中已经有了直接复用
System.out.println(i1==i2);
}
}
引入泛型可以检查编译错误类型,还可以省略掉取值的强转步骤。
public class MyPoint <T>{
//此时x的类型不定,在产生对象时确定类型 ;
private T x;
private T y;
// x 和y 这两个成员变量的类型不定,在产生MyPoint类的对象的
//时候明确x和y的类型
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
public static void main(String[] args) {
//泛型的T替换成String,当产生MyPoint对象时,此时将T这个类型参数转换为明确的类型String;
MyPoint<String> point=new MyPoint<>();
point.setX("东经22度"); //类型不一样的话,编译就报错了
point.setY("北纬30度");
String x=point.getX();
String y=point.getY();
System.out.println("x="+x+",y="+y);
}
}
有了泛型就可以改造数组和链表,保存任意类型。
若泛型中存在多个类型参数,成员变量的类型就不一定一致 |
使用不同的大写字母指代不同类型 ,产生对象时,T和E的类型可以相同也可以不同。
public class MyPointNew <T,E>{
private T x;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public E getY() {
return y;
}
public void setY(E y) {
this.y = y;
}
private E y;
public static void main(String[] args) {
MyPointNew<String,Integer> pointNew=new MyPointNew<>();
pointNew.setX("王八");
pointNew.setY(455);
MyPointNew<String,String> pointNew1=new MyPointNew<>();
pointNew1.setY("蛋蛋");
pointNew1.setX("包子");
}
}