杂物间
遗忘,远比想象要快的多
这里记录一些零碎的,易错的知识点
try_catch_return
public static void main(String[] args) {
System.out.println(getNum(0)); //-1
System.out.println(getNum(1)); //2
}
执行结果:
catch
finally1
-1
try
finally2 2
finally3 99999
2
private static int getNum(int num){
int i = -9999;
try {
i = 2/ num;
System.out.println("try");
return i;
} catch (Exception e){
System.out.println("catch");
return 0;
} finally {
if (num == 0){
System.out.println("finally1");
return -1;
} else {
System.out.println("finally2 " + i);
i = 99999;
System.out.println("finally3 " + i);
//return i;
}
}
}
总结:执行try,catch的return之前,会先执行finally中的代码,且finally中的return会被立即执行,但在finally中修改要return的变量,不会影响return结果。
2019-02-21
三目运算符
-
System.out.println(false?10.0:9) 输出结果为9.0。 三目运算中,java会进行类型自动转换,因为其中包含double10.0,故9会被转为9.0。
-
int i = 10; char x = 'x'; System.out.println(false?i:x); System.out.println(false?10:x); 输出结果为: 120 x 第一个输出语句中,i为int变量,故char类型的x变量被转为int,字符'x'的ascii为120 第二个输出语句中,10虽为int,但java规定,当int为字面量时,char不需类型转化,故为字符‘x’
问题的由来:
FileInputStream的构造方法
2019-03-07