容易忘的Java基础点
1.声明明确导入和声明通配导入在性能上无差别。
2.变量的声明是为了分配内存,定义即赋值。
3.标识符也可用$,但是习惯上字符$只用在机器自动生成的源码上。
4.隐式转换指将类型扩宽,而如果从范围大的类型向小的强制类型转换,会截断。
5.javac className.java
&&java className
6.浮点数的下溢近似为0,由于运算也是近似的,除以0不会抛出异常,结果值为无限大。
7.默认的数值直接量,整型为int,浮点数为double。
8.+=、-=、*=、/=等运算符也可以作为表达式。
9.自增自减也适用于浮点数。
10.程序隐式导入java.lang.*,包括System,Math,String,Void。
11.int隐式转换为char,指的是0~FFFF这个范围内的。
12.Throwable是Error和Exception的父类。Exception构造方法有两,无参和带message的。
13.Exception构造方法有两,无参和带message的,Exception.getMessage()
返回短信息。
14.抽象类的构造方法为protected,可以作为数据类型,包含抽象对象的类必须抽象。
15.接口默认为常量类型为public final static,方法和接口类型为public abstract,比类灵活是因为可以定义不相关类共有的父类型。
16.包装类型都是不可变类。
17.重载需要方法签名,即方法名和参数列表不一样,覆盖是包括返回类型的。
18.多态即父类引用子类,编译时声明类型用于匹配方法,运行时动态绑定方法。
19.==运算符用于比较基本类型的值,对象的引用。Object
20.Object.equals默认时==运算,Object.clone默认时浅复制。
21.构造方法不继承。
22.String用于字符串不可变,StringBuilder用于可变字符串,StringBuffer线程安全。
23.类设计的原则:内聚性,一致性,封装性,清晰性,完整性。
24.默认值:引用对象(包括数组)为null,数值为0,boolean为false,char为’\u0000’,局部变量无默认值。
25.String.concat即字符串的+运算。
26.JVM中相同字符串序列的字符串直接量相同。
27.当解释器运行主方法时,无参时new String[0]
。
28.读取文件Scanner(File),可用while(in.hasNext()){ in.readLine();}
。
29.DataOuputStream.writeChars(String)
写入同一码,DataOutputStream.writeUTF(String)
写入UTF-8.
30.Serializable不存储静态变量,而对象相同时,只写入序列号。
31.RandomAccessFile实现了DataInput和DataOutput。