您的位置:首页 > 编程语言 > Java开发

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

2018-01-14 17:49 423 查看
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、子类实例化时,会首先初始化父类,初始化父类的变量和构造函数,完成之后才会初始化子类的变量和构造函数,先初始化静态变量再初始化构造函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息