JAVA定义问题
Java code
class Test{
String s1[] = new String[3];
s1[0] = "csdn"; //此处会出错
String s2[] = null;
s2[1] = "java"; //此处会出错
System.out.println(); //此处会出错
}
如果把代码改为以下这样就不会
Java code
class Test{
//就是让以上代码在代码块中
{
String s1[] = new String[3];
s1[0] = "csdn"; //此处不会出错
String s2[] = null;
s2[1] = "java"; //此处不会出错
System.out.println(); //此处不会出错
}
}
我想知道其中原理,就是为什么第一个会出错,而第二个不会。谢谢大家!!!
------解决方案--------------------
编译器做的工作只是把java文件编译为class文件;
所谓的编译就是翻译成JVM能识别运行的指令,JVM才根据这些指令去做 怎样初始化,怎样分配内存空间等工作。
Java code
String s1[] = new String[3];
s1[1] = "csdn";
------解决方案--------------------
------解决方案--------------------
呵呵,我初学java时也经常犯这个错误!
其实7楼已经很清楚地说明了问题的所在,楼主还不明白,以至于逼得16楼把反编译都写出来了^_^
Java类的语法格式说的很清楚了:
class 类名{
类属性定义或初始化;
类方法定义或初始化;
其它块语法;
}
s1[0] = "csdn"; //是赋值语法,不是定义或初始化语法,就这么简单!