1,整数被0除将会产一个异常;
2,浮点数被0除会得到无穷大或NaN(Not a Number)结果;
3,strictfp关键字采用严格的浮点计算,可能产生溢出;
4,>>>高位用0填充,>>高位用符号填充,没有<<<;
5,x的a次幂,Math.pow(x, a);
6,数值之间的合法转换,实体箭头表示无信息丢失的转换,虚线箭头表示有精度丢失的转换:
7,cast 强制类型转换;
8,equals比较字符串内容,==比较字符存放位置;
9,空串,Null串,if(str != null && str.length !=0);
10,StringBuffer 效率较 StringBuilder低,但StringBuffer允许在多线程环境下执行,如果在单线程环境下执行应该尽量选用StringBuilder。这两种使用方法,效率同样高于String拼接或新建字符串,因为不管是拼接还是新建字符串都是重新new内存空间,String类型值都是不可变的字符串,重新赋值或拼接字符串都是new操作,原来的空间会被回收。
StringBuilder builder = StringBuilder(); builder.append(); String s = builder.toString(); System..println(s);
11,
Scanner in = new Scanner(System.in); System.out.println("what is your name?"); String name = in.nextLine(); System.out.println(name); Console cons = System.console(); String nameString = cons.readLine("username:"); char[] pwd = cons.readPassword("passowrd:");
12,jdk5开始printf沿用C语言格式%s,%d,%f占位
System.out.printf("%8.2f", 890.123f);
13,Arrays
14,对象的三个主要特征:行为、状态、标识
15,类之间的关系:
依赖(uses-a),一个类使用了另外一个类,尽量将这种依赖减少,两个类的改变将会减少bug存在,让类之间的耦合度减小;
聚合(has-a),类A的对象包含类B的对象;
继承(is-a)
16,预定义类
Math只封装了方法,不需要也不必隐藏数据,由于没有数据,因此也不必担心生成对象以始初始化实例域。
17,Date类主要用来表示时间点,GregorianCalendar扩展了Calendar,用于日历
GregorianCalendar now = new GregorianCalendar(); int month = now.get(Calendar.MONTH); int weeday = now.get(Calendar.DAY_OF_WEEK); GregorianCalendar clCalendar = new GregorianCalendar(); Date date = clCalendar.getTime();
18,static 静态方法,是一个没有this参数的方法,不能操作对象。只能操作自身类中的静态域。
19,Java总是采用按值调用。也就是说,方法得到的是所有参数值的一个copy,特别是,方法不能修改传递给它的任何参数变量的内容。
方法参数又分为:
1)基本数据类型(double,int等),参数存放的是数值,当参数被方法内操作后,原来的值不会发生改变;
2)对象引用(Employee x),这时候参数存放的是引用值(也就是地址),当传参时,传递的也是地址(类似指针);当参数被方法内操作后,其实操作的都是引用地址中的对象,对象的值都会发生改变。
20,默认域(类变量)初始化:
如果在构造器中没有显示地给域赋予初值,那么就会自动的赋为默认值:数值为0、布尔值为false、对象引用为null。
21,局部变量与域最大的不同在于,局部变量必须初始化。
22,仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。
23,初始化数据域的方法:
1)在构造器中设置值,
2)在声明中赋值,
3)初始化块,这种初始在构造器之前被调用。
class Employee{ private static int nextId=1;//静态域,只存在一份数据 private int id; private String name; //初始化块在构造之前调用 { id=nextId; nextId++; } public Employee(){ } public Employee(String name){//重载 this.name = name; } }
24, 构造器执行步骤:
1)所有数据被初始化为默认值,0、false、null
2)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块
3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体
4)执行这个构造器主体
25,类的静态域初始化
1)
private static int nextId=1;
2)静态块初始化
private static int nextId; static{ Random generator = new Random(); nextId = generator.nextInt(10000); }
26,finalize(),在某些对象使用了内存以外的资源时,将其回收和再利用显得十分重要,可以为任何一个类添加finalize方法,这个方法将在垃圾回收器清除对象之前调用,实际中不要完全依赖这个方法被调用,因为很难知道这个方法什么时候会被调用。同时也可以使用Runtime.addShutDowmHook()。建议手动close外部资源,比如connection。