不到断气不罢休 发表于 2024-6-15 02:16:37

2024年软件测试最新程序人生——Java中根本类型利用建议(2),2024年最新软

https://img-blog.csdnimg.cn/img_convert/8373319bac58235b71920e2c0ee7c019.png
https://img-blog.csdnimg.cn/img_convert/1e9e608b06b890821dae18e31e85d525.png
https://img-blog.csdnimg.cn/img_convert/e6e6242c6b2424107405e3298ef88d06.png
既有适合小白学习的零底子资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目次截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、解说视频,并且后续会连续更新
必要这份系统化的资料的朋友,可以戳这里获取
Java中根本类型利用建议

建议21:用偶判断,不用奇判断



[*]不要利用奇判断(i%2 == 1 ? “奇数” : “偶数”),利用偶判断(i%2 == 0 ? “偶数” : “奇数”)。缘故原由Java中的取余(%标识符)算法:测试数据输入1 2 0 -1 -2,奇判断的时候,当输入-1时,也会返回偶数。
// 模拟取余计算,dividend被除数,divisor除数
public static int remainder(int dividend, int divisor) {   
        return dividend - dividend / divisor \* divisor;}

建议22:用整数类型处理货币



[*]不要利用float或者double盘算货币,由于在盘算机中浮点数“有可能”是禁绝确的,它只能无穷接近准确值,而不能完全准确。不能利用盘算机中的二进制位来表示如0.4等的浮点数。

[*]解决方案:
[*]1、利用BigDecimal(优先利用)
[*]2、利用整型

建议23:不要让类型默默转换



[*]根本类型转换时,利用主动声明方式镌汰不必要的Bug
public static final int LIGHT_SPEED = 30 * 10000 * 1000;long dis2 = LIGHT_SPEED * 60 * 8;



[*]以上两句在参与运算时会溢出,由于Java是先运算后再进行类型转换的。由于dis2的三个运算参数都是int类型,三者相乘的效果也是int类型,但是已经高出了int的最大值,以是越界了。解决方法,在运算参数60后加L即可。
建议24:边界、边界、还是边界



[*]数字越界是检验条件失效,边界测试;检验条件if(order>0 && order+cur<=LIMIT),输入的数大于0,加上cur的值之后溢出为负值,小于LIMIT,以是满足条件,但不符合要求
建议25:不要让四舍五入亏了一方



[*]Math.round(10.5)输出效果11;Math.round(-10.5)输出效果-10。这是由于Math.round采取的舍入规则所决定的(采取的是正无穷方向舍入规则),根据不同的场景,慎重选择不同的舍入模式,以进步项目标精准度,镌汰算法损失
建议26:防范包装类型的null值



[*]泛型中不能利用根本类型,只能利用包装类型,null执行主动拆箱操纵会抛NullPointerException非常,由于主动拆箱是通过调用包装对象的intValue方法来实现的,而访问null的intValue方法会报空指针非常。服膺一点:包装类参与运算时,要做null值校验,即(i!=null ? i : 0)
建议27:谨慎包装类型的大小比较



[*]大于>或者小于<比较时,包装类型会调用intValue方法,执行主动拆箱比较。而==等号用来判断两个操纵数是否有相等关系的,如果是根本类型则判断数值是否相等,如果是对象则判断是否是一个对象的两个引用,也就是地点是否相等。通过两次new操纵产生的两个包装类型,地点肯定不相等
建议28:优先利用整型池



[*]主动装箱是通过调用valueOf方法来实现的,包装类的valueOf生成包装实例可以显著进步空间和时间性能)valueOf方法实现源码:
public static Integer valueOf(int i) {    final int offset = 128;                                    if (i >= -128 && i <=127) {                                          return IntegerCache.cache;                                    }                                          return new Integer(i);                                     }class IntegerCache {      static final Integer cache[] = new Integer[-(-128) + 127 + 1];      static {                for (int i = 0; i < cache.length; i++)            cache = new Integer(i - 128);      }}



[*]cache是IntegerCache内部类的一个静态数组,容纳的是**-128到127**之间的Integer对象。通过valueOf产生包装对象时,如果int参数在-128到127之间,则直接从整型池中得到对象,不在该范围的int类型则通过new生成包装对象。在判断对象是否相等的时候,最好是利用equals方法,克制“==”产生非预期效果。
建议29:优先选择根本类型



[*]int参数先加宽转酿成long型,然后主动转换成Long型。Integer.valueOf(i)参数先主动拆箱转变为int类型,与之前类似
建议30:不要随便设置随机种子



[*]若非必要,不要设置随机数种子)(Random r = new Random(1000);该代码中1000即为随机种子。在同一台机器上,不管运行多少次,所打印的随机数都是雷同的。在Java中,随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:1、种子不同,产生不同的随机数;2、种子雷同,即使实例不同也产生雷同的随机数。Random类默认种子(无参构造)是System.nanoTime()的返回值,这个值是隔断某一个固定时间点的纳秒数,以是可以产生随机数。java.util.Random类与Math.random方法原理雷同
深入认识JVM

JVM内存分配,类加载

Java进阶(1)——JVM的内存分配 & 反射Class类的类对象 & 创建对象的几种方式 & 类加载(何时进入内存JVM)& 注解 & 反射+注解的案例
https://img-blog.csdnimg.cn/2117b24a590d4033a418a2ec9363e6f4.png
创建对象的4种方法总结

Java进阶(4)——联合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
https://img-blog.csdnimg.cn/1169c52d34fe4d06b861f6558ac2dcc1.png
垃圾回收GC

https://img-blog.csdnimg.cn/ddd39783039647a78c079ba05243f233.png
Java进阶(垃圾回收GC)——理论篇:JVM内存模子 & 垃圾回收定位清除算法 & JVM中的垃圾回收器
简介:本篇博客介绍JVM的内存模子,对比了1.7和1.8的内存模子的变革;介绍了垃圾回收的语言发展;论述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾清除算法;然后介绍了Java中的垃圾回收器,由串行、到并行再到并发,最后到G1的演变;最后给出了垃圾回收器的对比和利用指引。
JVM调优,Arthas利用



[*]Java进阶(JVM调优)——阿里云的Arthas的利用 & 安装和利用 & 死锁查找案例,重新加载案例,慢调用分析
[*]Java进阶(JVM调优)——JVM调优参数 & JDK自带工具利用 & 内存溢出和死锁题目案例 & GC垃圾回收
https://img-blog.csdnimg.cn/3aaaf686f0c645d9882292494053605c.png
https://img-blog.csdnimg.cn/8ed33fdc7e274bae8922604965834bc9.png
https://img-blog.csdnimg.cn/img_convert/8f7861ded12275f5c1a19e9310486623.png
https://img-blog.csdnimg.cn/img_convert/4fbfbed6cb7cd5d9073f41b9a445746e.png
https://img-blog.csdnimg.cn/img_convert/cebd98cfbd2d8fef5202991116f1e121.png
既有适合小白学习的零底子资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目次截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、解说视频,并且后续会连续更新
必要这份系统化的资料的朋友,可以戳这里获取
盖了95%以上软件测试知识点,真正体系化!**
由于文件比较多,这里只是将部分目次截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、解说视频,并且后续会连续更新
必要这份系统化的资料的朋友,可以戳这里获取

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 2024年软件测试最新程序人生——Java中根本类型利用建议(2),2024年最新软