1、请判断下面程序的运行结果
public static void main(String[] args) {
for(int i = 0;i<3;i++) {
System.out.println(i);
}
System.out.println(i);
}
答案:编译时错误
解析:i是for循环中的局部变量,在循环外检测不到此变量
2、请判断下面程序运行时会出现什么类型的异常
public static void main(String[] args) {
String s = null;
s.concat(“abc”); //运行异常:java.lang.NullPointerException
}
答案:NullPointerException
解析:String的初始化问题和string的concat连接字符串的方法
涉及的知识点很多:
(1)、首先理解String abc=null;String abc="";String abc;三种写法有什么区别?
String abc=null:创建一个空字符串对象,即创建了对象,但里面什么也没有,所以不能调用String中的任何方法
String abc="":创建一个字符串为空的字符串对象。 即创建了对象,对象中有字符串,单字符串为空,与上边的区别是他一应为对象赋值;
String abc:声明一个字符串对象,但并没有分配内存,而1,2已经分配了内存。 如果没有给abc赋过值,判断条件abc=="“会导致异常
对于最后一种表示,你不能if(abc==null),或者 int length = abc.length();编译的时候会提示可能没有初始化. String str=“aaa”; //于栈上分配内存
String str=new String(“aaa”); //于堆上分配内存
null是用来判断引用类型是否分配了存储空间 ,”"是