文章目录
引言
同为程序员,谁都希望能比别人更强,那么如何在当今这激烈的竞争环境中脱颖而出?咱们中国有句老话说得好,细节决定成败,接下来我就来给大家总结下Java中的一些小细节。
1、把字符串常量放在前面
相信大家平时使用equals()是基本都是像下面这样的写法,这样的写法没错
String text = "ppx";
if (text.equals("ppx")){
System.out.println("成功");
}else {
System.out.println("失败");
}
但是如果text为null就会报错NullPointerException
String text = null;
if (text.equals("ppx")){
System.out.println("成功");
}else {
System.out.println("失败");
}
但如果是下面这样的写法就不会报NullPointerException,而是直接失败
String text = null;
if ("ppx".equals(text)){
System.out.println("成功");
}else {
System.out.println("失败");
}
这样的细节在你眼中可能没什么,但是在工作中,你的代码是要交给别人,可能会有领导可拿到你的代码,他可能就会因为这样的细节从而关注你,这样的细节使我们必须所掌握的。
2、检查null和长度
不管什么时候你有一个集合、数组或者其他的,确保它存在并且不为空。
在学习前期这样的行为对你来说可能是多此一举,但对于已经工作或者做过项目的小伙伴来说,相信这样的代码对你来说不会陌生。
List list = new ArrayList();
if (list.size() > 0 && list != null) {
}
3、switch语句末尾总是加上default
int num = 4;
switch (num){
case 1:
System.out.println("值为1");
break;
case 2:
System.out.println("值为2");
break;
default:
System.out.println("无此值");
}
如果你没有写default,而刚好判断的值是你case没有的,其结果就是什么都没有,如下
4、字符串拼接使用 StringBuilder
一般的字符串拼接在编译期 java 会进行优化,但是在循环中字符串拼接,java 编译期无法做到优化,所以需要使用 StringBuilder 进行替换。
String str1 = "a";
String str2 = "b";
String str3 = "c";
String str = str1 + str2 + str3; //java会进行优化
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 3; i++) {
//循环中java无法优化,需使用StringBuilder
stringBuilder.append(i);
}
5、使用 String.valueOf(value) 代替 “”+value
当要把其它对象或类型转化为字符串时,使用 String.valueOf(value) 比 “”+value 的效率更高。
Integer num = 1;
String str = "" + num;
String string = String.valueOf(num);
System.out.println(str);
System.out.println(string);
6、注意 String.split(String regex)用法
字符串 String 的 split 方法,传入的分隔字符串是正则表达式!部分关键字(比如. , [] , () , |等)需要转义
String string = "aa.b.c.aa";
String[] split = string.split(".");
for (String s:split) {
System.out.println(s);
}
String string = "aa.b.c.aa";
//进行转义
String[] split = string.split("\\.");
for (String s:split) {
System.out.println(s);
}
7、长整型常量后添加大写 L
在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。
8、尽量使用基本数据类型代替对象
String str = “hello”;
上面这种方式会创建一个“hello”字符串,而且JVM的字符缓存池还会缓存这个字符串;
String str = new String(“hello”);
此时程序除创建字符串外,str所引用的String对象底层还包含一个char数组,这个char数组依次存放了h,e,l,l,o
9、公有静态常量应该通过类访问
虽然通过类的实例访问公有静态常量是允许的,但是容易让人它误认为每个类的实例都有一个公有静态常量。所以,公有静态常量应该直接通过类访问。
public class test01 {
public static final String STR = "ppx";
}
public class test{
public static void main(String[] args) {
//不推荐写法
test01 t = new test01();
System.out.println(t.STR);
//推荐写法
System.out.println(test01.STR);
}
}
10、不要用 NullPointerException进行空指针捕获
空指针异常应该用代码规避(比如检测不为空),而不是用捕获异常的方式处理。
String str = null;
try {
if (str.equals("ppx")){
System.out.println("皮皮虾");
}
}catch (NullPointerException e){
e.printStackTrace();
}
博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!