一·包装类
包装对象
哪些都为包装类呢
比如byte->Byte
int->Integer
short->Short
char->Character
long->Long
float->Float
double->Double
bool->Boolean
何为装箱拆箱
先来说下装箱//将基本数据类型转换成对应的包装类
拆箱//将包装类转换成对应的基本数据类型
int i=10;
Integer ii=Integer.valueof(i);
Integer j=new Integer(i);
//将基本数据类型转换成对应的包装类,称为装箱
int a=ii.intValue();
//将包装类转换成对应的基本数据类型,称为拆箱
自动装箱,自动拆箱
int i=10;
Integer ii=i;
Integer ij=(Integer)i;//自动装箱
int j=ii;
int jj=(int)ii;//自动拆箱
Integer注意事项
Integer a=127;
Integer b=127;
Integer c=200;
Integer d=200;
System.out.println(a==b);//true
System.out.println(c==d);//false
//在小于-128大于127后,会new一个
//Integer装箱源码
public static Integer valueOf(int i){
if(i>=-128 && i<=IntegerCache.high)//-128~127 若没有设置,则IntegrCache.high默认为127
return IntegerCache.cache[i+128];//(一)此时,Integer.valueOf(int i)返回的是缓存的Integer对象
else
return new Integer(i);//(二)返回一个新建的Integer对象
}
何为泛型
实现一个类,使之存放各种数据类型的数组
class Myarray <T>{
public Object[]array=new Object[10];
public void setValue(int pos ,T val)//jvm没有泛型概念,运行时T全部变成Object,(擦除机制)
{
this.array[pos]=val;
}
public T getValue(int pos)
{
return (T)array[pos];
}
public Object[] getArray()
{
return array;
}
}
public class TestDemo {
public static void main(String[]args){
Myarray<String> Myarry1=new Myarray<>();
Myarry1.setValue(0,"sas");
System.out.println( Myarry1.getValue(0));
}
}