继承
Java
中只有公共继承,没有私有继承和保护继承
多态
C++
中如果希望实现动态绑定,需要将成员函数声明为virtual
,而在Java
中,动态绑定是默认的行为。
若不希望一个方法是虚拟的,可以将其标记为final
强制类型转换
instanceof
进行检查尽量少用强制类型转换,如果转换失败会抛出ClassCastException异常,而没有捕获ClassCastException异常的话,会使程序终止
重写equals
方法的建议
if(this == otherObject) return true;
if(otherObject == null) return false;
比较this与otherObject的类
if(getClass() != otherObject.getClass()) return false;
if(!(otherObject instanceof ClassName)) return false;
将otherObject强制转化为相应类类型的变量
ClassName other = (ClassName) otherObject;
return field1 == other.field1 && field2 == other.field2 && ......;
String getName()
可以返回这个类的名字
Class getSuperclass()
可以返回这个类的超类
Class.forName(className)
获取类名对应的Class对象
ArrayList
import java.util.ArrayList;public class C531 {public static void main(String[] args) {// 设置数组初始容量// 创建ArrayList时,若能估计出数组可能存储的元素数量,就可以在填充数组之前调用ensureCapacity方法// 或者将初始容量直接传入构造器。这样前100次调用不会因为数组扩容带来额外的时空开销。ArrayList arrayList1 = new ArrayList<>();arrayList1.ensureCapacity(100);ArrayList arrayList2 = new ArrayList<>(100);// 添加元素arrayList1.add("hi");arrayList1.add(1, "study?"); // 将元素插入到指定位置,并后移其他元素System.out.println(arrayList1);// 访问元素System.out.println(arrayList1.get(0));// 修改元素System.out.println(arrayList1.set(0, "hi what hi")); // 会返回之前的元素内容arrayList1.set(1, "study!");System.out.println(arrayList1);// 删除元素arrayList1.remove(0);// 将后面的元素前移}
}
枚举
static Enum valueOf (Class enumClass, String name)
返回给定类中有指定名字的枚举常量
String toString()
返回枚举常量名
int ordinal()
返回枚举常量在enum声明中的位置,位置从0开始计数
int compareTo(E other)
枚举常量出现在other之前便返回负数,相等则返回0,否则返回整数。
public enum C56 {SMALL("s"), MEDIUM("M"), LARGE("L");private String size;// 构造函数必须为privateprivate C56(String s) {this.size = s;}public String getSize() {return size;}
}