1 java.math包中有两个有用的类:BigInteger和BigDecimal。分别实现了任意精度的整数和浮点数运算。
使用静态的方法可以将普通的数值转换为大数值:BigInteger a = BigInteger.valueOf(100);
对应的加减乘除模运算为:add,subtract,multiply,divide,mod
2 数组.length 和 字符串.length()
3 简单的方式打印数组的所有值:System.out.print(Arrays.toString(a));
对于二维数组:System.out.print(Arrays.deepToString(a));
4 java中允许数组长度为0,注意:长度为0和null不同。
5 数组排序:Arrays.sort(a); 这个方法使用了优化的快速排序方法。
6 Math.random方法将返回一个包含0,但不包含1的随机浮点数。若想得到一个从0到n-1的随机数,
即 int r = (int)(Math.random()*n);
7 判断两个数组大小相同,并且下标相同的元素对应相等,可以用Arrays.equals(type[] a,type[] b);
若相等返回 true。
8 实现封装的关键是绝对不能让类中的方法直接的访问其他类的实例域。
对象状态的改变必须通过调用方法实现。
9 日历类中月份是从0开始计数,为了清晰起见,可以使用常量,如Calendar.DECEMBER。
10 文件名必须与public类的名字相匹配。在一个源文件中,只能有一个公有类,但可以有任意数目的非公有类。
11 java对象都是在堆中构造的。
12 面向对象的特征:抽象,封装,继承,多态性。
13 java基本数据类型: byte、int、char、long、float、double、boolean 和 short
14 原始类型 -----封装类的对应关系:boolean-----Boolean char-----Character byte-----Byte short-----Short int-----Integer long-----Long float-----Float double-----Double
15 Servlet的生命周期:Servlet被服务器实例化后,容器运行其 init方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy方法。
16 ArrayList和Vector都是使用数组方式存储数据,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList差. 而LinkedList使用双向链表实现存储。
17 Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
18 HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,主要区别在于 HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于 Hashtable。 HashMap 允许将 null 作为一个 entry的 key或者 value,而 Hashtable 不允许。
19 sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。
wait是 Object类的方法,对此对象调用 wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
20 重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。