1、泛型
在Java中泛型是指把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型。使用泛型可以保证一个List、Set中只有一个类型,可以避免类型转换错误,泛型只在编译阶段有效,泛型在逻辑上可以看成是多个类型,但实质上是一个类型,下面的例子就可证实:
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<Integer>();
List<String> stringList = new ArrayList<String>();
Class interClass = integerList.getClass();
Class stringClass = stringList.getClass();
System.out.println(interClass.equals(stringClass));
}
//结果为 true
泛型有三种使用方式:泛型类、泛型方法、泛型接口
①、泛型类
class Person <T>{
private T name;
private int age;
.....
}
}
②、泛型接口
public interface Generator<T> {
public T next();
}
③、泛型方法
public <T> T generic(T t) {
return t;
}
④、类型通配符(?)
- ?可以接受任意类型
public void test(List<?> elements){
}
- 用于实现上下界问题
能够接收A类或者A类的子类
public void test(List<? extends A> elements){
}
能接受A类或者是A类的父类
public static void test(List<? super A> list){
list.add(new A());
list.add(new B());
list.add(new C());
}
注意:泛型通配符< ? extends T >来接收返回的数据,此写法的泛型集合不能使用 add 方 法, 而< ? super T >不能使用 get 方法,做为接口调用赋值时易出错。
2、随机数
①、Mart.random()方法,底层调用的是Random类的nextDouble()方法;
②、Random类,可以在构造函数中设置种子,种子就是产生随机数的第一次使用值,机制是通过一个函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中,以后产生的随机数都与前一个随机数有关
3、位运算
见另一篇文章:位运算及其常用操作