Java容易遗忘的细节知识点

1、在主方法中加入System.exit(0);直接退出程序,如果参数非0,则表示非正常退出;

2、在jdk1.7以后,输入0b00001,二进制输出则会自动转换为十进制数;

3、多线程操控HashMap不单纯的会出现线程脏读的原因,更多的是会出现Modcount++的问题,实际长度与检查长度不一致;

4、C/C++中数据类型的大小是与平台有关系的,而Java是与平台无关的;

5、sout(2.0-1.1);本来应该是0.9,但是程序输出0.8999999999999999,是因为程序计算是二进制的,二进制程序无法精确到1/10,就像十进制无法精确到1/3一样,精确计算请使用BigDecimal;

6、char值输出为确定的数值,则会出现指定的字符;

7、intern()方法,会将地址不同的两个字符串,变为相等,将其注册进常量池;

String s = "1";
String s1 = new String(s);
Assert.equals(true, s1.intern() == s);

8、内存泄漏,程序占用内存导致内存得不到释放,需要排查多次执行到的对象;

9、用str.codePointAt(index),可以看对应的代码点哦;

(char)21490+":"+(char)30355+":"+(char)29123    史皓燃

10、jdk1.8的新写法中String多了两个方法一个是 IntStream codePoints();将字符串返回一个流通过toArray(),方法将其存入一个数组,而一个新的构造方法 String(int[] arr, int index, int num),则为用户提供了将数组里的代码点通过指定下标与数目进行创建;

11、for循环禁用浮点数,防止无限循环;

12、BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算;

13、增加数组的长度用Arrays.copy(arr,int newLength)l,底层是native源码;

14、Arrays.sort();是一个优化好的快排;jdk方法 timsort

猜你喜欢

转载自blog.csdn.net/qq_42046342/article/details/86287820