这里列出10条JAVA编程经验

1 字符串常量放在前面

  把字符串常量放在equals()比较项的左侧来防止偶然的NullPointerException。

// Bad
if (variable.equals("literal")) { ... } // Good
if ("literal".equals(variable)) { ... }

2 不要相信-1

// Bad
if (string.indexOf(character) != -1) { ... }
// Good
if (string.indexOf(character) >= 0) { ... }

3 避免意外的赋值

如果你的表达式中有常量,将它放在等式左边。这样当你打算再添加一个 = 时,不容易出错。

// Ooops
if (variable = 5) { ... }
// Better (because causes an error)
if (5 = variable) { ... }
// Intent (remember. Paranoid JavaScript: ===)
if (5 === variable) { ... }

4 检查NULL和长度

不管什么时候你有一个集合、数组或者其他的,确保它存在并且不为空

// Bad
if (array.length > 0) { ... }
// Good
if (array != null && array.length > 0) { ... }

当然也可以用Collections.isEmpty() 判断

5 所有的方法都用final声明

你可以告诉我任何你想要的开闭原则,不过那都是胡说八道。我不相信你(可以正确继承我的类),也不相信我自己(不会意外地继承我的类)。因此除了接口(专门用于继承)都应该是严格的 final

// Bad
public void boom() { ... } // Good. Don't touch.
public final void dontTouch() { ... }

6 所有的变量和参数都用final声明

// Bad
void input(String importantMessage) {
String answer = "..."; answer = importantMessage = "LOL accident";
} // Good
final void input(final String importantMessage) {
final String answer = "...";
}

7 重载的时候不要相信泛型

// Bad
<T> void bad(T value) {
bad(Collections.singletonList(value));
} <T> void bad(List<T> values) {
...
} // Good
final <T> void good(final T value) {
if (value instanceof List)
good((List<?>) value);
else
good(Collections.singletonList(value));
} final <T> void good(final List<T> values) {
...
}

8 总是在switch语句里加上default

// Bad
switch (value) {
case 1: foo(); break;
case 2: bar(); break;
} // Good
switch (value) {
case 1: foo(); break;
case 2: bar(); break;
default:
throw new ThreadDeath("That'll teach them");
}

9 用大括号隔开switch的每一个case块

// Bad, doesn't compile
switch (value) {
case 1: int j = 1; break;
case 2: int j = 2; break; // j重复定义
} // Good
switch (value) {
case 1: {
final int j = 1;
break;
}
case 2: {
final int j = 2;
break;
} // Remember:
default:
throw new ThreadDeath("That'll teach them");
}

JAVA面试(5)的更多相关文章

  1. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结

    我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...

  2. 转:最近5年133个Java面试问题列表

    最近5年133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来 ...

  3. java面试宝典(蓝桥学院)

    Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围 ...

  4. JAVA面试精选【Java基础第一部分】

    这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对于那些正打算找工作JAVA软件开发工作的童 ...

  5. Java面试必备知识

    JAVA面试必备知识 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可 ...

  6. java面试和笔试大全 分类: 面试 2015-07-10 22:07 10人阅读 评论(0) 收藏

    2.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型 ...

  7. 近5年133个Java面试问题列表

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...

  8. java 面试

        115个Java面试题和答案——终极列表(上) 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一 ...

  9. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  10. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

    hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加 ...

随机推荐

  1. CentOS下安装mysql及配置使用

    最近一直使用的是CentOS,平时用的最多的数据库是Sql Server,对于mysql还停留在上学的时候,早已忘得一干二净,写这篇内容目的是,重新学习如何安装使用mysql. 一.安装mysql 操 ...

  2. CMD控制台下的JAVAC就是“不是内部或外部命令

    [Path] 添加 %JAVA_HOME%\bin [JAVA_HOME] D:\Program Files\Java\jdk1.7.0_02 [CLASSPATH] .;%JAVA_HOME%\li ...

  3. shell基础复习笔记

    变量的设置 以等号连接,等号两边不能有空格 变量名首个字符必须是英文,可以使用下划线,不能使用标点符号,不能使用bash里的关键字 可以使用转义字符\将特殊符号(如Enter.$.空格.!等)变成一般 ...

  4. Centos7安装maven过程

    下载地址 http://maven.apache.org/download.cgi 版本 apache-maven-3.3.9 -bin.tar.gz tar -xvf apache-maven-3. ...

  5. 2017.2.9日总结--外网IP和内网IP

    Linux自己不能通过自己的外网访问自己必须通过内网访问自己

  6. python考试

    py4测试题 1.8<<2等于?322.通过内置函数计算5除以2的余数 divmod(5,2)3.s=[1,"h",2,"e",[1,2,3],&q ...

  7. 解析XML文件的几种方式及其比较

    解析xml文件目前比较流行的主要有四种方式: 1. DOM(Document Object Model)它把整个XML文档当成一个对象加载到内  存,不管文档有多大.它一般处理小文件 2.SAX(Si ...

  8. QA,敢问路在何方?听听微软资深QA怎么说~

    转载地址:http://blog.csdn.net/ocean1ee/article/details/8905031 我已经从事测试工作超过7年,从测试员(SDET)成长为高级测试员(SDET II) ...

  9. zoj-3963 Heap Partition(贪心+二分+树状数组)

    题目链接: Heap Partition Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge A sequence ...

  10. Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development

    Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development If you are consi ...