目录
背景
前几天看到了一个类似这样的代码
class Test{
public static void main(String[] args){
Integer x=1;
if(1==x){
System.out.println(x);
}
}
}
唉,对于写习惯Java的人来说有点不适应,为啥常量写在比较运算符的左边嘞?
据说是C++党的习惯写法?抛开这点不谈,那么在Java中,这样写推荐吗?
我发现了比较有意思的点,往下看吧
实践
其一,这样写的好处是,对于新手或者比较粗心的老手,一旦你在进行==比较时,如果错写成了=
编译器会用飘红提醒你。特别是以下这种情况:
class Test{
public static void main(String[] args){
boolean x=false;
if(x=true){
System.out.println(x);
}
}
}
这段代码运行起来没有问题,但是却不是你想要的结果。
看看你有没有中招。
其二,就是我觉得比较有趣的,看代码:
class Test{
public static void main(String[] args){
Boolean x=true;
if(x=null){
System.out.println(x);
}
}
}
这样做,编译器不会报错,但是运行会抛出异常。如果你因为粗心大意,在一大段代码中夹杂这个问题,那排查也是比较辛苦的。虽然概率小,但是还是可能发生。
和这个类似问题是字符串的equals比较,很多人习惯这样做:
class Test{
private static String NAME="YOU";
public static void main(String[] args){
String name=null;
compare(name);
}
public static boolean compare(String name){
if(name.equals(NAME)){
return true;
}
return false;
}
}
当name为null时,就会报空指针异常。所以推荐这样写:
class Test{
private static String NAME="YOU";
public static void main(String[] args){
String name=null;
compare(name);
}
public static boolean compare(String name){
if(NAME.equals(name)){
return true;
}
return false;
}
}
结论
所以得出的结论是常量最好还是写在比较运算符的左边,这样编译器能够帮你避免一些低级错误哦
开发入门中,欢迎指教~