第一章 引论
-
尽量少用mod运算,因为他非常慢
-
递归的四条基本法则
-
基准情形:必须有某些情形不用递归就能求出,也就是边界
-
不断推进:每一次递归的调用必须使状况朝向一种基本情形推进;也就是每一次参数和结果都有所变化,避免死递归;
-
设计法则:假设所有递归都能运行
-
合成效益法则:在求解一个问题的同一实例时,切勿在不同的递归中做重复性工作,比如斐波那契递归的重复计算问题
-
数值计算用递归不是个好主意
-
泛型机制:如果除去对象的基本类型外,实现的方法是相同的,那么就可以使用泛型实现
-
c++中它是用模板来实现泛型编程
-
java中用Object来表示泛型(1.5之后)
-
为了访问这种特定对象的方法,需要进行强制转化成正确的类型
-
不能使用基本类型,只有引用类型能够与Object相容
-
基本类型的包装
-
java为8种基本类型提供各自的包装类;int的包装类就是Integer
-
每一个包装对象都是不可改变的(状态不能改变),它存储一种当该对象被构建时的原值,并提供一种方法以重新得到该值
-
使用接口类型表示泛值
-
只有在使用Object类中已有的那些方法能够表示所执行的基本操作时,才能使用Object泛型类型来工作;
-
只有实现Comparable接口的那些对象才能够作为Comparable数组的元素被传递
-
如果Comparable数组有两个不相容的对象,那么Comparto方法抛出异常 ClassCastException 异常,这是我们期望的性质
-
基本类型不能作为Comparable传递,但是包装类可以
-
接口究竟是不是标准的库接口倒不是必须的
-
数组类型的兼容性:协变数组类型,每一个数组都明了它所允许存储对象的类型。
-
但是泛型集合不是协变的
-
利用java5泛型特性实现泛型构件
-
简单的泛型类和接口
-
当指定一个泛型类时,类的声明则包含一个或多个的类型参数,这些参数被放在类名后面的一对尖括号里。
-
public class GenericMemoryCell<AnyType>{ private AnyType storedValue; public AnyType read() { return storedValue; } public void write(AnyType x) { storedValue=x; } }
-
自动拆箱、装箱
-
如果一个int型被传递到需要一个Integer对象的地方,那么编译器将在幕后插入一个对Integer构造方法的调用,这叫自动装箱
-
如果一个Integer对象被放在一个Int型量的地方,则编译器在幕后引入一个对intValue方法的调用,这叫自动拆箱;
-
菱形运算符
-
GenericMemoryCell< Integer> m=new GenericMemoryCell< Integer>();
-
在java7后,可简化GenericMemoryCell< Integer> m=new GenericMemoryCell< >();
-
泛型static方法:类型参数位于返回参数之前
-
对于泛型的限制
-
基本类型:基本类型不能做参数
-
indtanceof检测:
-
static的语境:static方法和static域均不可引用类的类型变量,因为在类型擦除后类型变量就不见
-
不能用new创建类型的实例化
-
也不能创建一个泛型的数组
-
参数化类型数组的实例化是非法的
浪波激泥

浙公网安备 33010602011771号