包装类创建对象传入参数后,新建对象中的数据就不能改变。
如Integer I = new Integer(“4”)
被创建对象中的值就是4,如操作I = 5;其实就是装箱将值是5的对象赋给了i。
数组转list
使用Arrays的静态方法 asList()
这个方法的实现是使用参数引用的数组大小来new一个ArrayList对象。(到底是指向这个对象还是创建数组大小的ArrayList??)
如果ArrayList对其中元素进行了设置,比如讲第一个元素设置成“nba”,那么数组中的第一个元素也变成了”nba“
如果需要改变长度,只要创建一个ArrayList对象,对数组进行遍历,并使用List的add()方法,将数组中的元素加入到ArrayList中即可
<T> T[] toArray(T[] a)与 Object[]toArray()区别
Collection转数组
使用collection的toArray方法
高级for 如果不加泛型就编译失败PIC0001 PIC0002
for(类型 变量 :Collection集合|数组)
List和Set之间互转只要互相丢到构造函数
被final修饰的类不能创建子类
Integer.MAX_VALUE安全性判断
Integer.parseInt(“0x003c”,16)是不合法的 只能不能有x
本来要明确传入的参数类型,现在主要泛型里定义了,传什么都行----PIC0010
创建对象,明确了对象类型
定义了泛型之后,在类中的函数中传入参数只要写泛型的类型即可,如T a
在方法上定义了泛型之后,只要传入参数是什么类型,那么方法中操作的就是什么类型---PIC0011 提高了程序的复用性
Object和泛型的区别,如果在方法中定义Object 所有的对象是都能接受,但是不能使用子类的特有方法,如果用泛型接受对象,那么还可以使用子类的特有方法,又可以接受所有的类型
泛型定义在方法上,可以在一个类中定义不同的类型,方便方法的调用
将泛型定义在类上,还可以在这个类里面定义泛型方法
泛型在建立对象的时候才会被明确,如果静态方法中调用泛型类,就会出现静态上下文中引用非静态成员的错误。
接口的实现和类的继承是一样的,如果用接口类型去创建子类对象,不能调用子类的特有方法
子类实现了接口,接口上有泛型,只要确定接口的泛型类型即可,不用在类后面写泛型
如果子类实现了接口,还是不知道要使用的类型,那么就在子类的类后面加上泛型,实现接口,在接口的后面也加上泛型。
泛型左右两边需要一致
如果将函数加入泛型<T>,那么这个方法里面可以对T进行操作,比如创建T t = it.next(),如果是 ? 的话就不能操作
T代表具体类型,? 不明确具体类型
? extends fu 上限限定
? super Zi 下限限定
如果用?接受进来不能使用子类的特有方法,如果用?extends fu接受进来,那么就可以使用子类的特有方法,不会报错。
比较器,传入student,也能比较,比较父类的成员
Compare传入student和person都可以,因为都能接受student对象,调用了还是子类的方法
比较器如果建立了父类的比较器,子类都能用,但是比较器中只能使用父类的方法
内部类访问外部类成员需要加final
实例:
class Outer{
public Object get(){
final int x = 1;
class Inner{
public int hashCode() {
return x ;
}
}
Innerin = newInner();
return in;
}
}
public classPropTest {
public static void main(String[] args) {
Objecto = newOuter().get();
System.out.println(o.hashCode());
}
}
String+ 基本数据类型 其中是怎么转换的。