一:输出语句中字符串的拼接问题
如下程序运行后输出为
public class MyJava {
public static void main(String[] args){
char m = 'a';
int n = 2;
System.out.println(m+n+"java"); //输出"99java"
System.out.println("java"+m+n); //输出"javaa2"
}
}
第一句输出"99java",由于前面是char和int,所以二者先做加法运算,然后和"java"拼接为字符串。
第二句输出为"javaa2",由于"java"字符串在前,故"java"先和char做字符串拼接,在和int做字符串拼接。
二:System.exit(1)和System.exit(0)的区别;
System.exit(1):是非正常退出
System.exit(0):是正常退出
二者在try ,catch中的应用
如下程序执行结果为:
public class MyJava {
public static void main(String[] args) {
try {
System.out.println("try run");
System.exit(1);
System.out.println("MyJava run");
return;
} catch (Exception e) {
System.out.println("catch run");
} finally {
System.out.println("finally run");
}
}
}
直接运行会报错,System.exit(1)表示jvm非正常退出,如果改成System.exit(0),那么只会输出"try run"
三:局部变量必须要赋值,成员变量有默认值,故不赋值编译也不会报错
如下程序执行的结果:
public class MyJava {
public static void main(String[] args) {
String s;
if(s instanceof String){
System.out.println("s is String");
}else{
System.out.println("s is not String");
}
}
}
这样编译会报错,因为局部变量s没有赋值,不能参与运算。
如果仅仅只是定义为没有运算,则不会报错。
如果将局部变量换成成员变量会如何:
public class MyJava {
private static String s;
public static void main(String[] args) {
if(s instanceof String){
System.out.println("s is String");
}else{
System.out.println("s is not String");
}
}
}
由于成员变量的字符串默认是null值,故输出"s is not String" ,注意:这里的s要使用static修饰,如果没有static还是会报错,因为main函数是static修饰的
五:如下代码执行的结果
public class MyJava {
public static void main(String[] args) {
try {
throw new Exception();
System.out.println("MyJava run");
} catch (Exception e) {
System.out.println("catch run");
} finally {
System.out.println("finally run");
}
}
}
结果:编译报错,因为抛出了异常,下面的输出语句根本执行不到。
六:break,continue,return的区别
break: 跳出上一层循环,结束当前循环体,离break最近的循环体。
continue : 跳出本次循环,继续执行下一次循环。
retrun :结束方法,不再执行下面的代码。
如下程序分别在循环体中采用break,continue,return后执行的结果是多少
public class MyClass {
public static void main(String[] args){
for(int i=0; i<2;i++){
System.out.println("i="+i);
for (int j=0;j<3;j++){
if (j==1){
break;//continue//return
}
System.out.println("j="+j);
}
}
}
}
break输出:i=0 j=0
i=1 j=0
这里的break离内循环更近,故结束的是内循环
continue输出:i=0 j=0 j=2
i=1 j=0 j=2
当j==1时,这里会跳出此次内循环,开始下一次内循环
return输出 :i=0 j =0
当循环到j==1时,直接结束此方法。