![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 50
wwj-jww
毕业于清华大学
展开
-
finally 和 return 的执行顺序
发现只要在finally中加入return,最终这个方法的返回值只能是finally中的返回值,相当于在代码最后return。原创 2022-11-04 09:00:25 · 4957 阅读 · 2 评论 -
jdk8Comparator.comparing 排序
List<类> list; 代表某集合 //返回 对象集合以类属性一升序排序list.stream().sorted(Comparator.comparing(类::属性一)); //返回 对象集合以类属性一降序排序 注意两种写法list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序list.stream().sorted(Comparator.comparing(类::属性原创 2021-09-03 15:14:41 · 1128 阅读 · 0 评论 -
Java的double和float类型计算丢失精度问题,bigdecimal用法
float和double做四则运算误差 public static void main( String[] args ) { System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100); } //输出 0.0600000原创 2021-01-15 14:29:09 · 195 阅读 · 0 评论 -
StringBuffer的扩容机制为什么是两倍的原数组长度 + 2
扩容的步骤:新的字符串的长度超过了底层原char数组value的大小,才需要进行扩容先尝试默认扩容,将新容量变成 (value.length << 1) + 2 ,也就是两倍的原数组长度再加二若默认扩充后的值还是小于至少容量的值,直接扩充到当前需要的至少容量大小;经过前两步骤确定的新数组大小,若大于Interger.MAX_VALUE,则报异常,若小于等于0,则新数组大小4改为Interger.MAX_VALUE-8确定了新数组的值后,通过Arrays.copy(value,new原创 2021-01-14 11:45:17 · 1142 阅读 · 0 评论 -
java进程间通信的几种方式? 对比总结
管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。消息队列( message queu原创 2020-12-15 22:12:22 · 688 阅读 · 0 评论 -
HashMap为什么2倍扩容
向集合中添加元素时,会使用(n - 1) & hash的计算方法来得出该元素在集合中的位置,其中n是集合的容量,hash是添加的元素进过hash函数计算出来的hash值。HashMap的容量为什么是2的n次幂,和这个(n - 1) & hash的计算方法有着千丝万缕的关系,符号&是按位与的计算,这是位运算,计算机能直接运算,特别高效,按位与&的计算方法是,只有当对应位置的数据都为1时,运算结果也为1,当HashMap的容量是2的n次幂时,(n-1)的2进制也就是111111原创 2020-10-07 15:52:20 · 1931 阅读 · 0 评论