`
阅读更多
1理解%取余的真正含义
2并不是所有的小树都可以用二进制浮点数精确表示,需要精确答案的地方,要避免使用float和double。对于货币计算,要使用int、long或者BigDecimal
3操作很大的数字式,千万要堤防溢出,比如long后加L就可以解决
4在long类型字面常量中,一定要用大写的L,千万不要写小写的l
5要避免混合类型的计算。比如long和int
6char转int不希望有符号扩展 int i=c&0xffff;
byte转char不希望有符号扩展 char c=(char)(b&0xff);
7丑陋的单行互换值法:y=(x^=(y^=x))^y 不加括号在java下使用错误
8最好是在条件表达式中使用类型相同的第二和第三操作数
9请不要将符合赋值操作符作用于byte/short/char类型的变量,虽然编译不会出错,但换成意义相同的简单赋值表达式就会报错,
  x=x+i;(1) x+=i(2) int i 在x为String类型时(1)对(2)错,在x为char时(1)错(2)对
(这里的对指编译不出错)
11.当且仅当+操作符的操作数中至少有一个是String类型时,才会执行字符串连接操作
12.+操作符不论是用作加法还是字符串连接操作,它都比==操作符的优先级高。在使用字符串连接操作符时,总是将不平凡的操作数用括号括起来
13.比较对象引用时,应该优先使用equals方法而不是==操作符
14.windows的文件名路径民更不要出现在java源文件的注释中
15.除非确实有必需,否则不要使用Unicode转义字符
16.将byte数组转成String时,可以且通常该显式地指定字符集
17.块注释不能可靠地注释掉代码
18.注意String.replaceAll接收正则表达式为第一个参数 String.replaceAll(".","/")有问题
19.java保留了标号,但是希望仔细写注释,跟上时代
20.new StringBuffer('M')指的是开辟初始容量77的空字符串缓冲区
21.避免混合类型比较,因为它们内在地容易引起混乱
22.无论你在何时使用了一个整数类型,都要意识到其边界条件,比如int i达到Integer.MAX_VALUE后,再执行增量操作回到Integer.MIN_VALUE
23.用一个double或者float数值来表示无穷大是可以的,二进制浮点算术只是对实际算术的一种近似
24.不要在short/byte、char类型的变量上使用复合赋值操作符
25.数值比较操作符和判等操作符的差异:数值比较操作符执行的是值比较。判等操作符执行的引用标识的比较
26.不要使用浮点数作为循环索引
27.Sytem.exit方法将停止当前线程和所有其他当场死亡的线程,即不会执行finally语句
28.实例变量的初始化操作将先于构造器的程序题而运行
29.对于任何在finally语句块中可能跑出的受检查异常都要进行处理
   比如 in.close();out.close()
30.不要使用异常控制循环,应该置为异常条件而使用异常
31.尽量多使用JDK5.0所用的for(int item:items)的用法
32.&和&& |和||的不同 ^的含义
33.关于类的引用声明,尽量在try语句前声明,这样catch才会按照自己定义来,否则直接跑出异常。非得在里面定义,建议Object m=Class.forName("Missing").newInstance();
34.出现构造函数的实参为null的,若要起那个值要求编译器选择一个精确的重载版本,需要将实参转型为形参所声明的类型。
35.每一个静态域在声明他的类极其所有子类中共享一份单一的备份
36.静态方法的引用看前面的修饰符的类名而定,千万 不要隐藏静态方法
37.final类型的静态域被初始化值iqan,存在着读取其值的可能,比如先实例化对象的构造函数中调用。
38.instanceof操作符被定义为在其左操作数为null时返回false
   instanceof如果两个操作数的类型都是类,其中一个必须是另一个的子类
39.父类方法被子类方法重写后,将执行子类的重写后的方法而不是自己原来定义的方法
   所以千万不要再构造器中调用可复写的方法
40.考虑类初始化的顺序:static-》variable-》constructor,特别是党初始化显得很重要时更是如此。
41.静态方法调用的限定表达式是可以计算的,但是它的值将被忽略
42.一个本地变量声明作为一条语句只能直接出现在一个语句中
43.不要被误导,认为不可变类型是可变的,比如add、subtract、negate不一定修改原实例
44.只要你复写了equals方法,你就必须同时复写hashCode方法
45.同一类产生实例必须具有相同的散列值才能让散列集合能够将它们识别为相等
46.以0开头的整型字面常量将被解释成为八进制数值
47.Date将1月表示为0,而Calendar延续了这个错误
48.Math.abs不能保证一定会返回非负的结果
49.当一个变量和一个类型具有相同的名字,并且他们位于相同的作用域,变量名具有优先权。因为最好给变量和类型起不同名字
50.final修饰符对方法和域而言意味不同,对于方法,final意味着该方法不能被复写(对于实例方法而言)或者掩藏(对于静态方法而言),而对于域,final意味着该域不能被赋值超过一次(指在子类或父类中,但可以掩藏)。
51.复写:一个实例方法可以复写(override),VM将基于实例的运行期类型来选择要调用的复写方法
   隐藏:一个域/静态方法或成员类型可以分别掩藏(hide)在其超类中科访问到的具有相同名字(对方法而言就是相同的方法签名)的所有域、静态方法或成员类型

public final class Api extends ApiBase{
public   void f(){
System.out.println("sun");
}
public static void main(String[] args){
Api B=new Api();
B.pri();
}
}

class ApiBase
{
public   void f(){
System.out.println("father");
}

public void pri(){
f();
}
};
若该f()函数为private私有类型,则输出“father”,因为私有类型方法不能被另外一个方法直接复写
    重载:在某个类中的方法可以重载(overload)另个一个方法。只要他们具有相同的名字和不同的签名
    遮蔽:一个变量、方法或类型可以分别遮蔽在一个闭合的文本范围内的具有相同名字的所有变量、方法或类型
52.访问位于其他包中的非公共类型的成员是不合法的
   映射访问:
   Method m=o.getClass.getMethod("hasNext");
   m.invoke(o);
53.避免使用反射来实例化内部类,一定要使用请将内部类静态
54.

1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics