摘要:
抽象类 抽象类不能被实例化。 抽象类应该至少有一个抽象方法,否则它没有任何意义。 抽象类中的抽象方法没有方法体。 抽象类的子类必须给出父类中的抽象方法的具体实现,除非该子类也是抽象类。 // 命名规范以Abstruct或者Base开头 public abstract class AbstractPl 阅读全文
摘要:
不可变类 一个类的对象在通过构造方法创建后如果状态不会再被改变,那么它就是一个不可变(immutable)类。它的所有成员变量的赋值仅在构造方法中完成,不会提供任何 setter 方法供外部类去修改。 不可变类String 1)常量池的需要 字符串常量池是 Java 堆内存中一个特殊的存储区域,当创 阅读全文
摘要:
变量 局部变量 在方法体内声明的变量被称为局部变量,该变量只能在该方法内使用,类中的其他方法并不知道该变量。 局部变量声明在方法、构造方法或者语句块中。 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,将会被销毁。 访问修饰符不能用于局部变量。 局部变量只在声明它的方法、构造 阅读全文
摘要:
包 Java 定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是包名.类名。使用package来解决名字冲突。 包没有父子关系。java.util和java.util.zip是不同的包,两者没有任何继承关系。 包的作用域 不用p 阅读全文
摘要:
尽量不要 catch RuntimeException,比如 NullPointerException、IndexOutOfBoundsException 等等,应该用预检查的方式来规避。 尽量使用 try-with-resource 来关闭资源:禁止在 try 块中直接关闭资源,因为一旦 clos 阅读全文
摘要:
checked和unchecked异常 checked 异常(检查型异常)在源代码里必须显式地捕获或者抛出,否则编译器会提示你进行相应的操作;而 unchecked 异常(非检查型异常)就是所谓的运行时异常,通常是可以通过编码进行规避的,并不需要显式地捕获或者抛出。 NoClassDefFoundE 阅读全文
摘要:
TreeMap 由红黑树实现,可以保持元素的自然顺序,或者实现了 Comparator 接口的自定义顺序 红黑树(英语:Red–black tree)是一种自平衡的二叉查找树(Binary Search Tree),结构复杂,但却有着良好的性能,完成查找、插入和删除的时间复杂度均为 log(n)。 阅读全文
摘要:
继承自 Vector,是线程安全的 在 Java 中,推荐使用 ArrayDeque 来代替 Stack,因为 ArrayDeque 是非线程安全的,性能更好 push public E push(E item) { addElement(item); return item; } 调用了 Vect 阅读全文
摘要:
PriorityQueue 是 Java 中的一个基于优先级堆的优先队列实现,它能够在 O(log n) 的时间复杂度内实现元素的插入和删除操作,并且能够自动维护队列中元素的优先级顺序。 // 传入比较器 PriorityQueue<String> priorityQueue = new Prior 阅读全文
摘要:
![](https://img2024.cnblogs.com/blog/1900828/202407/1900828-20240713231926347-1764342020.png) 阅读全文