继承
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<String> arrayList1 = new ArrayList<>();
arrayList1.ensureCapacity(100);
ArrayList<String> 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;
// 构造函数必须为private
private C56(String s) {
this.size = s;
}
public String getSize() {
return size;
}
}