[Java基础]
BruceZong
啊啊
展开
-
[List排序报错 - Comparison method violates its general contract!]
在JDK1.7之后,ArrayList的默认排序方式做了修改,使用TimeSort排序算法来排序但是,此排序算法比老版本的算法多了如下几个限制条件,如果不注意,排序可能会抛异常1. 自反性,compare(x, y) = - compare(y, x)2. 传递性,如果compare(x, y) > 0, compare(y, z) > 0, 则必须保证compare...原创 2018-07-25 22:20:15 · 6527 阅读 · 1 评论 -
【Java基础】java.lang.StackOverflowError
java.lang.StackOverflowError1、此错误是Error类型,不是Exception类型,是Error的子类2、出现此类型说明问题线程的栈深度已经超过阈值。栈用于存储线程的局部变量、操作数、动态链接、方法出口等。3、此问题一般是由于方法调用层次过深,导致栈深度超界,常出现问题的几种场景: 3.1 递归层次过多 private static void printX(int i) { try { printX(++i..原创 2020-08-02 22:16:03 · 779 阅读 · 0 评论 -
【Java基础】知识点
* ArrayList是一个泛型容器,默认的容量大小为10, 每次扩容大小为当前容量大小的一半原创 2020-07-26 09:43:53 · 156 阅读 · 0 评论 -
【Java基础】ArrayList
一、知识点概要 1. ArrayList是一个泛型容器,默认的容量大小为10, 每次扩容大小为当前容量的一半 2. ArrayList的实现基于数组,内部使用Object[]对象数组存储元素,所以能快速的随机访问数组元素 3. ArrayList是非线程安全的,内部没有同步机制 4. ArrayList内部定义了迭代器类,支持通过迭代器进行遍历。同时如果有遍历删除的动作,应该使用迭代器,而不能直接使用for循环二、源码分析public class Array...原创 2020-07-05 23:21:23 · 186 阅读 · 0 评论 -
【Java基础】变量默认值
一、成员变量/类变量 VS 局部变量 成员变量/类变量才有默认值,即如果不赋值,则使用默认值;(对象类变量如果不赋值直接引用,可能报运行时的空指针错误) 局部变量没有默认值,如果不赋值直接使用,则会有编译错误。(包括对象类的变量)二、基本数据类型的默认值 boolean false char '\u0000' byte 0 short 0 ...原创 2020-07-01 17:28:28 · 2257 阅读 · 0 评论 -
【Java - 跨线程异常捕获】
1. 父线程无法通过try... catch 捕获到子线程的异常2. 未捕获的子线程异常不会导致父线程中止,父线程无法感知到子线程的异常3. 可以通过指定UncaughtExceptionHandler来捕获子线程的异常4. UncaughtExceptionHandler运行在子线程中示例如下:public class TestMain { public static ...原创 2018-08-25 21:58:03 · 843 阅读 · 0 评论