代码优化
ZixiangLi
再牛逼的梦想,也抵不住你傻逼似的坚持!
展开
-
java代码优化(一)——创建和销毁对象
用静态工厂方法代替构造器准备知识自动装箱:从基本数据类型转换成包装类型。自动拆箱:从包装类型转换成基本数据类型。包装类:number(数字类型)Byte(byte) Short(short) Integer(int) Long(long) Double(double) Float(float)Character(字符类型) Boolean(布尔值)利用静态工厂...原创 2018-10-26 20:23:50 · 802 阅读 · 0 评论 -
java代码优化(八)——异常
只针对异常的情况才使用异常不要将它用在普通的控制流上,比如遍历数组请不要使用以下方式: try { int a[] = {1,2,34,5}; int i = 0; while(true){ System.out.println(a[i++]); } } catch (ArrayIndexOutOfBoundsException e) { e....原创 2019-01-16 14:23:15 · 343 阅读 · 0 评论 -
java代码优化(九)——并发
同步访问共享的可变数据①关键字synchronized可以保证同一时刻只有一个线程执行一个方法或者一段代码块。②同步的意义:同步不仅可以阻止一个线程看到对象处于不一致的状态之中,它还可以保证进入每个同步代码块或者同步方法的线程都可以看到由同一个锁保护的之前的修改效果。③java语言规范保证读写一个变量是原子的,换句话说,读取一个非long或者非double类型的变量时,可以保证返回的值...原创 2019-01-24 09:53:10 · 249 阅读 · 0 评论 -
java代码优化——方法
检查方法中参数的有效性请在编写方法时考虑参数的有效性,一般的需要在方法体的开头校验参数的有效性。例如ArrayList的get方法中参数i是一个非负数,如果输入一个负数将会报错:ArrayIndexOutOfBoundsException,这是因为在get方法体首先对i做了检查:/** * Returns the element at the specified positio...原创 2019-01-01 18:16:25 · 402 阅读 · 0 评论 -
java代码优化(七)——通用程序设计
将局部变量的作用域最小化在方法的一开头就声明一个局部变量这样的做法是不正确的,请在第一次使用该变量的地方声明局部变量。for循环优先于while循环,因为while循环将会在while循环体外声明局部变量,而for循环只会在循环体内声明局部变量,这样局部变量的作用域就限定在了循环体内。 for-each循环优先于传统的for循环for-each不仅可以遍历数组、集合还可以遍历任...原创 2019-01-10 17:35:17 · 245 阅读 · 0 评论 -
java代码优化(四)——泛型
请不要在新代码中使用原生态类型首先原生态类型是指List,区别于List<String>、List<Object>,原生态类型没有经过类型检查,并且在代码中会出现请使用List<E>来替代List。其次原生态类型是不安全的,因为所有类型的值都可以放到原生态类型中,这很容易破坏集合的类型约束条件。无限制通配类型:在Set后面加上<?>,这...原创 2018-12-18 11:35:36 · 517 阅读 · 0 评论 -
java代码优化(五)——枚举和注解
枚举和注解用enum代替int常量java枚举的本质是int值,枚举类型的常量事实上是公有的静态final域修饰的,所以每个常量都是不可被修改的,只有在类加载时实例化一次,另外枚举类型是自动序列化的,防止反序列化攻击,可以保证常量一定是单例的。枚举类型中可以增加成员变量、方法、构造器、接口、抽象类。public enum Computer { APPLE, DELL, LE...原创 2018-12-27 17:21:50 · 355 阅读 · 0 评论 -
java代码优化(三)——类和接口
使类和成员的可访问性最小化当我们设计类的时候,应该将公共的api设置为共有的,而其它的实现调用类的访问修饰符(private、protected、public)则不应该是共有的,每一层调用的类只需要能让它的上一次访问即可,而不需要被其它无关的类访问到。对于成员的访问修饰符(private、default、protected、public)尽可能的设置为private,而通过setter、g...原创 2018-12-05 17:38:43 · 324 阅读 · 0 评论 -
java代码优化(二)——如何覆盖Object的公用方法(equals、hashcode、compareTo、toString)
覆盖equals方法时请遵守通用约定什么情况需要覆盖equals方法?当需要比较的类有自己的逻辑特点时,而Object的equals方法不能达到预期的效果时,就需要覆盖equals比较类的属性值。覆盖equals方法的通用约定自反性——对于任何非null的对象x,都满足x.equals(x)返回true。也就是说对象必须等于自身。对称性——对于任何非null的对象x和y,当且仅...原创 2018-11-02 17:42:51 · 417 阅读 · 0 评论 -
java代码优化(十)——序列化
谨慎地实现序列化接口实现序列化接口的利与弊:坏处一是一旦被序列化的类发布,就大大降低类的灵活性。坏处二是它增增加了bug和安全漏洞的可能性。坏处三是随着发行版本的增加,相关的测试任务急剧增加。好处就是将一个对象加入到框架中,当该框架需要依靠序列化来实现对象传输或持久化时,让该对象实现序列化是非常有必要的。例如Date、BigInteger、集合等应该实现serializable...原创 2019-01-29 10:36:54 · 601 阅读 · 0 评论