duang,duang!!duang.java.mustReadTips

成员变量的定义是绝对安全的,对象创建时会自动初始化,布尔值初始化为false,基本数据类型初始化为0,对象类型(包括String)初始化为null。 通过clone方法,可以不调用构造函数而直接创建对象,虽然object类中定义了clone方法,但是一个对象中调用clone方法会导致异常,除非该对象实现了cloneable接口,当创建一个对象代价很高时,clone方法可以称成为一种有用的优化方式。通过复制构造函数(以已有实例作为其唯一参数)显得更简单,代价可以忽略不计。 若果单一类型的对象具备不同的行为,则认为该语言具备多态性,如果某个类的子类可以被赋给其基础类型的变量,那么就认为这个类是多态的。不要过多类型转换,遵守静态类型准则。子类型可以取代父类型是多态性的一个重要特征。 在java中,参数都是按值传递,函数的参数就是调用时所传递值得一个副本。另外在java中,大部分情况下,变量是对象的引用,java只是复制引用,而不是整个对象,应用就是所传递的值。

Throwable包括Error Errors和Exception Exception包括 Checked exceptions 和Runtime exception 即Unchecked exceptions

Error类及其子类是保留类,只用于Dalvik运行时环境本身的错误。虽然可以写代码来捕获Error或Throwable,但实际上,无法捕捉到这些错误。可许不可行,尝试捕捉Throwable或Error的代码绝对是徒劳的。

list是一种有序的集合,list中的对象和整数从0到length-1一一映射,list中可能存在重复元素。 map和list类似,,list是把一组整数映射到一组对象中,而map是把一组key对象映射到一组value对象。 Iterator返回集合中的元素,其通过next方法,每次返回一个元素, Iterator是对集合中所有元素进行操作的一种较好的方式,一般不建议采用下面这种遍历方法:

for(int i = 0;i<list.size;i++){String s = list.get(i);//…}

建议采用以下方式:

for(Iterator<String>i = list.iterator();i.hasNext();){String s = list.get(i);//…}

后者简化如下:

for(String s :list){//…}

ArrayList是一个支持数组特征的list,他在执行索引查找操作时很快,但是涉及改变其大小的操作速度很慢。 LinkList可以快速改变大小,但是查找速度很慢。 HashSet是一个以hash方式实现的set,在hashset中,增删元素,判断是否包含某个元素及获取hashset的大小这些操作都可以在常数级时间内完成,hashset可以为空。 HashMap是使用hash表作为索引,其实现了map接口,在hashmap中,增删元素,判断是否包含某个元素及获取hashset的大小这些操作都可以在常数级时间内完成。他最多只可以包含一个空的key值,但是可以有任意个value值为空的元素。 TreeMap,TreeMap是一个有序的map,如果实现了comparable接口,则TreeMap中的对象是按自然数排序,如果没有实现comparable接口,则是根据传递给TreeMap构造函数的comparable类来排序。

java中对象锁是可重入的reentrant,以下代码非常安全,不会造成任何死锁:

class SafeSeizure{private Object lock = new Object();public void method1(){synchronized(lock){//do stuffmethod2();}}public void method2(){synchronized(lock){//do stuff}}}

勇敢的冷静的理智的去接受失败,有时不但是必要的,而且是很有必要的。

duang,duang!!duang.java.mustReadTips

相关文章:

你感兴趣的文章:

标签云: