记录java中零碎的细节
String和StringBuilder
在java中对String进行拼接时,不推荐使用“+”,这是因为每次“+”java并不是在修改原String,而是创建了一个新的String Object,所以“+”的时间随String的长度呈线性变化。
使用StringBuilder类创建一个可变的String,这样就不用再每次创建新的Object了,节约很多时间。
==和equal()
前者比较的是两个变量存储的bit是否相同(int、String、地址);
equals()默认和前者效果相同,但我们可以override它,使其表现出我们想要的效果。
== 和 equals()相比要更加强势一点
动态类型和静态类型
Static type:静态类型(编译时的类型,在程序运行之前的类型),所有变量和reference type都有静态类型,即是它声明的时候的类型;
Dynamic type:动态类型(运行类型),即它指向的具体类型。
动态类型和静态类型可以不一致,静态类型可以是superclass,动态类型可以是subclass。
编译时查看所调用类的静态类型,将符合条件的method存储;在运行时查看动态类型,将先前存储method的在动态类型中找到。