概述
试题分析
A中第4行代码会导致NPE;
B中第3行代码始终会返回true;
D中第三行的contains方法实际调用的是containsValue方法,而非查找键值。
试题分析
“Y”用于时间格式化时,表示当前时刻对应的星期所在的年份,即week-year,通常需要表示当前时刻对应的自然年时,应当使用“y”;
“D”用于时间格式化时,表示当前时刻在所在自然年中的日期数,即当前日期是本年度的第几天,通常需要表示当前时刻在所在的自然月对应的日期时,应当使用“d”;
“hh”用于表示当前时刻对应的小时数,但是以12小时制表示,若需要使用24小时制表示,应当使用“HH”。
试题分析
Integer类的缓存机制取决于具体JVM的实现,并非所有实现均缓存(-128, 128)范围的值,因此使用“==”比较包装类的行为是未知的,应当使用equals方法替代。
试题分析
java.util.Map的get方法接受的参数类型为Object,这意味着即使传入了完全不匹配的类型,也只会返回null而不会抛出异常。因此在使用get方法时要留意传入的类型是否匹配以避免潜在的错误。
试题分析
粘贴三个场景对应的使用手册
试题分析
A选项中的REGEX_PATTERN应当预处理为Pattern类,避免每次调用都要构建匹配树;B选项在方法中使用了双大括号初始化创建了额外的临时类,导致性能损失;C选项构建了一个Date类实例来获取时间戳,造成无谓的性能损失,应当直接使用System.currentTimeMillis()方法获取;D选项使用try-with-resource语法,不存在性能问题。
试题分析
java.lang.Math.random()返回的随机浮点数范围在0.0~1.0之间,对其取整返回的结果始终为0.
试题分析
可参见《Effective Java》及Java的Object类中equals方法的注释,重写equals方法需要满足上述所有要求。
试题分析
由于finally块中的代码始终会执行,因此finally块中的return语句会覆盖正常的return语句返回。
试题分析
在进行整数乘法时,需要时刻留意计算过程的中间值是否超出了当前类型的表示范围,int及其包装类的表示范围为-2147483648~2147483647,约为10的9次方,long及其包装类的表示范围为-9223372036854775808~9223372036854775807,约为10的18次方,超出long表示范围的整数,应当用BigInteger表示。 在上述代码中,虽然在第11行我们使用了Long.valueOf方法将结果转换为Long类型,但运算“10 * 365 * 24 * 60 * 60 * 1000”的中间类型为int,已经超出了Java默认整数类型int能表示的范围,导致结果溢出。我们期望的计算结果应当为“315360000000”,而由于溢出导致最终得到的结果为“1827387392”,使得Cookie的有效时间从原来的大约10年缩短为约21天。此外,Java中进行时间相关运算时建议通过java.time包下的类,而非手动进行计算。
最后
以上就是文静柜子为你收集整理的阿里巴巴JAVA代码规范三【考题】 试题分析试题分析试题分析 试题分析试题分析试题分析 试题分析试题分析试题分析试题分析的全部内容,希望文章能够帮你解决阿里巴巴JAVA代码规范三【考题】 试题分析试题分析试题分析 试题分析试题分析试题分析 试题分析试题分析试题分析试题分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复