java考试圈套
java考试陷阱
结果是这个,这样弄到switch的运行机制了,switch无论怎么样写,都是先判断case中的数字,所以无论default写在哪里都是先执行判断case语句。
这样直接使用会出现空指针异常。
个人觉得C和java真的是博大精深呀,东西太多了。值得好好研究。
今天偶尔做了一个java题,直接被鄙视了。
贴代码
package 考试; public class Demo { public static void main(String[] args) { int i = 10; switch (i) { default: System.out.println("default"); case 0: System.out.println("0"); break; case 1: System.out.println("1"); case 2: System.out.println("2"); } } }
default 0
结果是这个,这样弄到switch的运行机制了,switch无论怎么样写,都是先判断case中的数字,所以无论default写在哪里都是先执行判断case语句。
重点在后面,如果case中有这个值,那么直接执行这个case中的语句。如果没有这个值,系统才会找default。执行default,一直执行到遇到break。所以很不幸我C语言没学好呀。。。太悲剧了,寒假回去恶补一下。
还有一个陷阱是&&,||与&,|,前者具有短路功能,后者没有。我记反了,所以考试也出错了。。
还有一个陷阱是java字符串数组,虽然String是一个类,但是这个类比较特殊,可以这样使用
String a[] = { "", "", "", "", "" };//正确 String aa[] = new String[5];//也是正确的 aa[0] = "123"; System.out.println(aa[0]);但是对于自定义的类的话,与String类就有很大不同
package 考试; import b.Student; public class Demo { public static void main(String[] args) { Student s[] = new Student[5]; s[0].setName("aaa"); System.out.println(s[0].getName()); } }
这样直接使用会出现空指针异常。
Exception in thread "main" java.lang.NullPointerException at 考试.Demo.main(Demo.java:8)
个人觉得C和java真的是博大精深呀,东西太多了。值得好好研究。
还有一个小陷阱
数组的长度,都是.length
字符串的长度都是.length()
list的大小是.size()