摘要:
1、数据结构 ArrayList底层使用数组实现,默认大小10,容量不足时需动态扩容为原来的1.5倍 LinkedList底层使用双向链表实现,无大小限制 2、使用场景 ArrayList使用数组对于索引操作即(set get方法)时间复杂度为O(1) 而LinkedList索引时需要从头遍历从而找 阅读全文
摘要:
1、总体结构 Map和Collection是分开的。Collection下有List Queue Set 3个接口。 2、List结构 3、Set结构 4、Queue结构 5、Map结构 6、Deque结构 7、常用的List ArrayList: 数组实现,初始长度10,每次扩容增加0.5倍(0. 阅读全文
摘要:
1、活性失败 多线性并发时,如果A线程修改了共享变量,此时B线程感知不到此共享变量的变化,叫做活性失败。 如何解决活性失败,那就需要两个线程之间对此变量有happens-before关系,最常见的就是volatile 或 加锁。 2、快速失败(fail-fast) 2.1 对集合进行迭代时 如果有其 阅读全文
摘要:
1、finally对返回值的影响 我们知道finally在try中return语句执行之后 返回之前 执行的。 如果try中最后return一个变量 ,那finally也对这个变量修改后 到底会返回什么? 直接上测试代码看例子: class YfModel{ private String name; 阅读全文
摘要:
1、switch支持的类型 以java8为准,switch支持10种类型 基本类型:byte char short int 对于包装类 :Byte,Short,Character,Integer String enum 2、实际只支持int类型 Java实际只能支持int类型的switch语句,那其 阅读全文
摘要:
1、异常结构 Throwable是Error和Exception的父类 Error : 一般指不可恢复的错误 如内存溢出、磁盘损坏等 2、uncheck与checked Exception RuntimeException以及其子类都是uncheck异常。不需捕获 其他异常都是checked(受检) 阅读全文
摘要:
1、如何理解Stream Java8新特性 Stream可以理解为管道,管道里的流水就是数据,管道里可以对水进行处理,如过滤,消毒,净化等等操作。最后流出的水才能喝。 所以我理解Stream关注的是对数据的加工计算。对比java集合框架,集合框架关注的是如何存取数据。 一个stream操作主要有3个 阅读全文
摘要:
1、什么是方法引用 方法引用是一种简写lambda表达式的方式。等同于lambda表达式 如: 可简写为: 这就是方法引用 Java8特性。用::表示 2、什么情况下使用 当我们使用lamdba表达式,如果lamdba表达式实现体只调用了一个外部已经存在的方法时。 这种情况 就可以使用方法引用。 如 阅读全文
摘要:
1、lamdba有何用 java8出现了lamdba表达式,类似js的箭头函数。有何用? 看个例子 java8之前 一个List的排序,如下的写法是使用匿名类来实现Compartor接口 lamdba出现后 ,可以改成如下形式 是否很简洁 可读性跟好。 2、如何使用lamdba表达式 基本语法,如下 阅读全文
摘要:
1、什么叫注解 一个示例:@Override就是一个注解 2、注解有什么用 一个类或方法等加了一个注解:我理解就是对其加了一个标签 加了标签后对代码的逻辑不产生影响,有啥好处 a. JVM编译使用 比如某个类使用了@Override注解,则在编译时,JVM就知道这个方法时重写了父类的方法。 如果重写 阅读全文