美文网首页
前车之鉴,后车之师。

前车之鉴,后车之师。

作者: yht_humble | 来源:发表于2017-06-08 15:03 被阅读0次
各个地方引用过来的前人的经验,持续不断更新中。。。
常量类定义(《Effective Java》)

定义私有的构造方法,使其不可被实例化
注:常量接口模式是对接口的不良使用

public class Util {

    private Util() {
    }

    /**
     * 登陆时 手机号未注册
     */
    public static final String MOBILE_NOT_REGISTER = "手机号未注册!";

    /**
     * 手机号码错误
     */
    public static final String MOBILE_IS_ERROR = "请填写正确的手机号码!";

    /**
     * 验证码错误
     */
    public static final String AUTHCODE_IS_ERROR = "验证码错误!";

    /**
     * 手机号码已经被注册
     */
    public static final String MOBILE_IS_REGISTER = "该手机号码已被注册!";

    /**
     * ...........................
     */
}
获取整数类型的随机数

不推荐使用

Math.random();//然后乘以N倍获取整数

使用

new Random().nextInt(101);//输出0~100之间的随机数,包含0和100
所有相同类型的包装类对象比较值统一使用equals();

使用

"test" .equals(object);

替换

object.equals("test");

Object的equals方法容易抛空指针异常,应使用常量或确定有值得对象来调用equals
推荐使用java.util.Objects#equals (JDK7引入的工具类)

获取系统时间

使用:

System.currentTimeMillis();

替换:

new Date().getTime();

以提高性能

for循环设值

避免每次循环都会取值跟赋值,以提高性能。

List<String> list = new ArrayList<Stirng>();
for (int i = 0; i < list.size(); i++) {
        // 循环操作
}

建议改为:

List<String> list = new ArrayList<Stirng>();
for (int i = 0, n = list.size(); i < n; i++) {
        // 循环操作
}

或者:

List<String> list = new ArrayList<Stirng>();
int n = list.size();
for (int i = 0; i < n; i++) {
        // 循环操作
}
乘法和除法使用移位操作

用移位操作可以极大地提高性能,因为在计算机底层,对位的操作是最方便、最快的.

例如:

for (itn i = 0,n = 10; i < n ; i++){
    a = a * 8;  
    b = b / 2;
}

建议改为:

for (itn i = 0,n = 10; i < n ; i++){
    a = a << 3;  
    b = b >> 1;
}
  • 左移运算符( << ),num << 1,相当于num乘以2
  • 右移运算符( >> ),num >> 1,相当于num除以2
判断两个对象是否equal

使用Objects.equals()方法,可以避免空指针异常

String str1 =  null,str2 = "test"; 
str1.equals(str2);// 空指针异常
Objects.equals(str1,str2);// OK

Objects.equals的实现为

public static boolean equals(Objecta,Objectb){
    return (a == b) || (a != null && a.equals(b));
}
避免创建不必要的对象(《Effective Java》)

一个极端的例子:

String s  =  new String("string"); // Don't do this

该语句每次执行的时候都会创建一个新的String实例,但是这写创建对象的动作全都是不必要的,传递个String构造器的参数(“string”)本身就是一个实例,功能方面等同于构造器创建的所有对象。

改进:

String s  = "string"; // Do this

相关文章

  • 前车之鉴,后车之师。

    各个地方引用过来的前人的经验,持续不断更新中。。。 常量类定义(《Effective Java》) 定义私有的构造...

  • 前车之鉴,后车之师。

    还是之前的质量论坛会,这场会议的主要内容是,一个刚刚发生的案例,对其分析、总结输出每组的感想。 在这场会议中每组的...

  • 趁年轻多走点儿弯路,没什么不好

    从小,我们就被教导,“前车之鉴,后车之师”,“不听老人言,吃亏在眼前”,所有的告诫,所有的劝慰,说到底,无非是为了...

  • 如何搞砸一个面试?

    A「我又搞砸了一个面试!」 S「怎么搞砸了,来,赶紧分享经验,前车之鉴,后车之师。」 A「对方问我在平台这么久,再...

  • iOS UIViewKeyframeAnimationOptio

    前车之鉴,后车之师。 前言 动画在App中还是比较常见,iOS上的动画流畅度以及效果还是很哇塞的。所以,动画是iO...

  • 国庆的旋转木马

    国庆复至,难料世事, 出疆决心不留边区赴职, 转眼藏区作茧自织, 薛源语文不好也知道说, “前车之鉴,后车之师…”...

  • 对面向对象的理解

    ————前车之鉴,后车之师:对面向对象的理解 1.考虑问题的过程和思想的转变: 在对问题的考虑时人的主观思维起到重...

  • 你如何看待前去看演唱会的那些人?

    前车之鉴,后车之师。看过好多软文都曾这么写:不要和价值观不同的人在一起。 你想去看演唱会,他说费钱不...

  • 彻底爱上了!京东核心手册,亿级流量并发系统的架构设计实战(400

    前车之鉴,后车之师 面对亿级以上的并发量,如果保证自己的系统不崩溃成了大家一个永恒讨论的话题,那么如果站在巨人的肩...

  • 5条给大学生新生的建议,让你超越90%的人!

    90%的大学生犯过的错误,其实前人们都已经犯过,都是同样的错误在无数次的重复。前车之鉴,后车之师,希望你能避过那9...

网友评论

      本文标题:前车之鉴,后车之师。

      本文链接:https://www.haomeiwen.com/subject/sqqtqxtx.html