当前位置: 首页 > 科技观察

Java语言中的这10个功能总是被新手吐槽

时间:2023-03-12 02:30:33 科技观察

Java语言因其简单易用、功能强大而受到IT界的追捧,相关从业者的薪水也相当可观。虽然是这样,但这并不意味着Java是完美的。它还有很多让人不爽的功能,常常让技术不够熟练的程序员一脚踏入坑中,甚至失去信心。今天我们就整理一下Java中的10大。“作弊”,一个违反常识的功能。1、switch必须加breaktoend。breakinswitch的作用是结束switch循环。如果不加,执行完一条case语句后,会进入下一条case语句,继续switch循环。对于多个分支选择,一系列的if-else-if语句会降低代码的可读性。初学者经常在这方面犯错误。2、逻辑运算符的“短路”现象一旦整个表达式的值可以确定,剩下的就不用计算了。这就是我们在使用逻辑运算符时会遇到的“短路”现象。倒不是说这个功能好,而是对新手不太友好。比如上面的代码输出false和1,因为逻辑与&&的前半部分是false,不管后半部分是true还是false,整个表达式都会返回。错误的。3、数组下标从零开始。Java程序员虽然知道数组下标从零开始,但是总觉得这有点违背我们的日常生活,因为很多人认为从第一个元素开始计数很正常。当然,设计者之所以这样做,是考虑到了内存偏移的因素。新手程序员需要习惯它。4、ArrayList遍历删除报错。就像上面的代码一样,会抛出IndexOutOfBoundsException,因为ArrayList删除元素后会重新计算数量,将list.size放在for循环中会有问题。用迭代器删除元素比较合适。这对于新手程序员来说是非常容易“掉坑”的。5.字符转数字的坑比如上面代码中,我们要将字符按类型转为整数。本来是数字8,结果输出的是56,参考ASCII的知识就知道原因了,写代码的时候要多加小心。6、while循环体的“晦涩法”,比如下面两种语法,不加花括号,输出的是AAAB而不是想要的三个A和三个B。所以即使只有一条语句,也建议加上大括号。新手在这上面有很多陷阱。7.Integer类有缓存。上面代码的输出是真假。是不是很意外?要知道Integer里面有一个静态的内部类IntegerCache。类加载时,会把[-128,127]之间的值Integera=100的值缓存起来,Integera=100的赋值方法会先调用Integer类中的staticvalueOf方法。此方法将尝试从缓存中获取值。如果在这个范围内,就不需要新建对象了!8.空方法体导致无限循环。上面的代码在方法体上没有大括号。很容易不小心在while的末尾加了一个分号。会发生什么?代码可以正常编译运行,但是卡死了for循环死循环也有类似的情况。这种情况并不少见。9.神奇的=+看下面这行代码,a=a+b这样的赋值语句可以写成a+=b,但是如果顺序写错了,写成这样就不行了a=+b会报错,却输出了一个我们完全没有想到的结果。10、Java注释可以识别Unicode。上面这行代码被注释掉,不会输出任何东西,只有HelloWorld。因为unicode解码发生在代码编译之前,编译器text-escapes\u-style代码,甚至注释,然后\u000a转换为\n换行,所以println代码正常执行。很容易出错。以上总结的10个Java语言函数中,比较“坑爹”的地方,你是不是也有同感呢?那么你认为Java语言比较“坑爹”的地方有哪些呢?