一.装箱与拆箱
*装箱:基本数据类型->引用数据类型
自动装箱:
int a=10;
Integer val = a;
显示装箱:
1.
Integer val = Integer.valueOf(a);
2.
Integer val = new Integer(a);
*拆箱:引用数据类型->基本数据类型
自动拆箱:
Integer val = 10;
int a = val;
显示拆箱:
int b = val.intValue();
double c = val.doubleValue();
3.Integer.valueOf(int i)方法中,i只有-128至127之间才会返回。
public class Test7 {
public static void main(String[] args) {
Integer v1=Integer.valueOf(100);
Integer v2=Integer.valueOf(100);
System.out.println(v1==v2);
}
}
输出true
public class Test7 {
public static void main(String[] args) {
Integer v1=Integer.valueOf(200);
Integer v2=Integer.valueOf(200);
System.out.println(v1==v2);
}
}
输出false
二、泛型
class MYArray<T>{} //表示这是一个泛型类,T表示type
MyArray<Integer> myArray=new MyArray<>();
尖括号中只能放引用类型
*泛型在存取数据的时候,可以帮我们进行自动的类型检查
泛型在获取元素的时候,可以帮我们进行类型转换
*不能new泛型类型的数组
T[] t=new T[5];//不可取
public Object[] obj=new Object[5];
public E getpos(int pos){
return (E)obj[pos];//类型转换
}//可取
*在编译完成后,泛型类型擦除为Object
*泛型的上界
class Alg<E extends Comparable<E>>{}
//代表将来指定的参数类型一定实现了这个接口
class Alg<E extends Number>
//代表E是Number的子类或者E是Number类本身
*泛型方法
package work;
public static class Alg<E extends Comparable<E>> {//实现接口
public E Findindex(E[] array) {
E max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[0].compareTo(array[i]) < 0) {//调用compareTo方法
max = array[i];
}
}
return max;
}
}
public static void main(String[] args){
Alg<Integer> alg = new Alg<>();
Integer[] array={1,3,2,4,5,6};
Integer val = alg.Findindex(array);
System.out.println(val);
}
输出6
*顺序表就相当于一个数组,在进行add等操作时要判断pos的合法性
private void checkindex(int pos){
if(pos<0 || pos>usedSize){
throw new checkindexoutofException(位置不合法,请检查位置的合法性);
}
}
public static void main(String[] args){
MyArrayList myArrayList = new MyArrayList();
...
try{
myArrayList.add(pos:1,data:99);
}catch(checkindexoutofException e){
e.printStackTrace();
}//捕捉异常
myArrayList.display();//显示
}