先上代码
package p1;
public class Second {
/*
本代码的错误在什么地方?
注意代码运行的顺序
主方法调用类的其他方法?
*/
int[]a = new int[100];
a[1] = 1;
int fib(int n){
if(n ==0){
return 0;//递归到0
}
else if(a[n] !=0){//n值已经写入了
return a[n];
}
else{//计算N值写入
a[n] = fib(n-1)+fib(n-2);
return a[n] ;
}
}
public static void main(String[] args) {
//a[1] = 1;//为什么初始化只能放在这里面
//System.out.println(new Second().fib(5));
System.out.println(new Second().fib(6));
}
}
代码的第二行报错了,本意是想初始化这个数组的第二项,提示
Syntax error on token ";", { expected after this tokenJava(1610612967)
我的猜测是,考虑程序的执行顺序,从入口main进入, 接着调用fib,在fib中会对数列的值进行读取和写入,但第二行是一个可执行的操作,应该放在方法里?
实验一下
public class Student{
int a =1;
a = a+1;
public void xxx(){
System.out.println(a+1);//不传参数直接使用
}
public static void main(String[] args) {
new Student().xxx();
}
}
果然,继续报错,错误稳定,原因只是猜测,欢迎探讨。
2022.4.22
另一个解决办法:使用static关键字定义变量,然后使用static{}进行初始化,这里可以看出new 以及static的”可执行性“
一个问题,在一个java文件中,可以定义多个类吗?
尝试一下
package TEST.TEST;
public class Qidong {
static int a = 1;
a = a+1;
public static void main(String[] args) {
System.out.println(new Qidong().a);
}
}
public class Qidong1{
}
提示:
TEST.TEST.Qidong1
The public type Qidong1 must be defined in its own file
也就是说:一个Java文件只能定义一个类(内部类除外)
构造方法是用来初始化的。但是例如我只想初始化数组里的某个值呢?当然以上已解决。