Java编程的注意事项,持续更新

1、方法的返回值尽量不要出现null

public List<String> getStringList() {
	List<String> result = new ArrayList<>();
	/**
	 * 利用result 处理业务逻辑
	 * 
	 * 不要直接在开始
	 * List<String> result = null;
	 */
	return result;
}

2、对于较为复杂的业务逻辑,使用Java处理还是选用存储过程;

通常来说存错过程的处理性能是比Java处理更好的,但是存储过程不容易维护,因此通常对性能的要求不是特别苛刻的情况下建议使用Java处理即可,如果Java处理不能满足性能要求的情况下,可以考虑使用存储过程。

3、对象放在循环内还是循环外的问题

在循环内部定义满足局部变量最小作用域的理念,但是在循环内定义每次循环都会新创建一个局部变量,此时会申请栈帧的内存空间,因此会多使用内存空间。我们想一下多出来的内存被什么占用了,在循环外面声明的对象,每次循环可以重复使用,因此只有一个引用,重复使用,放在堆中的对象每次也是新的;而将对象放在循环内部,每次都要重新声明一个对象,该对象的引用也是新的,因此总的来说放在循环体内只是比放在循环体外的多了引用。同时每次循环执行完以后,引用都会标记为可回收状态。那么综合来看放在循环体内还循环体外其实差距并没有多大影响。

结论:对象放在循环体内还循环体外,根据个人习惯就好大笑

4、涉及计算可以使用BigDecimal。

5、clone方法,需要clone的时候可以通过构造方法生成,不建议使用clone方法(性能和实用都不好)

6、JVM虚拟机优化了整型数据的赋值,其中如果integer的范围在[-128,127]之间会直接在整型常量池中取数据,如果不在这个范围的数据会到重新new数据出来,因此在进行比较大小的时候需要注意,==在进行比较时,如果在范围内是可以进行判断的,如果不在范围内,都是新的对象因此两个对象是使用==比较大小永远都不会相等的。

7、JVM虚拟机优化了整型数据的赋值,其中如果integer的范围在[-128,127]之间会直接在整型常量池中取数据,如果不在这个范围的数据会到重新new数据出来,因此在进行比较大小的时候需要注意,==在进行比较时,如果在范围内是可以进行判断的,如果不在范围内,都是新的对象因此两个对象是使用==比较大小永远都不会相等的。

8、遵循先声明后使用,因为加载类的时候会进行类初始化工作,静态变量这个时候也会初始化其初始化的步骤是,先给变量分配空间,然后再进行赋值,因此静态变量是可以先使用后声明的,但是在进行赋值操作的时候,会按静态变量的赋值顺序进行赋值操作。

9、无论是静态变量还是静态方法,尽量不要使用示例化的对象进行访问,因为使用实例化的对象在进行访问时,其实会将实例化的对象找到对应的类,然后根据类来访问静态方法。但是实例化的对象可能是通过多态的形式生成的,那么实际中会使用父类进行访问,如:Parent a = new Child(),并且子类和父类中都存在静态方法getName(),a.getName()最终得到结果就是parent的name。

10、子类实例化时,会首先初始化父类,初始化父类的变量和构造函数,完成之后才会初始化子类的变量和构造函数,先初始化静态变量再初始化构造函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值