public class TEST {
static String str ;
public static void main(String[] args) {
System.out.println("s=" + str);
}
}
静态的String 对象,默认初值为null
所以得出结果是
s = null
public class TEST {
public static void main(String[] args) {
String str;
System.out.println("s=" + str);
}
}
编译报错,非静态变量必须初始化
public class TEST {
public static void main(String[] args) {
String str = new String("hello");
char[] arr = {'a','b','c'};
TEST test = new TEST();
test.change(str,arr);
System.out.print(str);
System.out.print(arr);
}
public void change(String str,char[] arr){
str = "test OK";
arr[0] = 'g';
}
}
输出结果:
hellogbc
原因,String字符串存储在常量池中,一旦初始化就不能改变,所以str的值一直是 hello
而 字符串数组,char[] 不在字符串常量池中,通过数组名传递,相当于地址传递,改变是可以映射到char[]数据本身的。