1qazwsx
2018-08-24 13:32
ublic class HelloWorld {
// 定义静态变量score1
static int score1 = 86;
// 定义静态变量score2
int score2 = 92;
// 定义静态方法sum,计算成绩总分,并返回总分
public static int sum() {
int num=score1+HelloWorld.score2;
return num;
}
public static void main(String[] args) {
// 调用静态方法sum并接收返回值
int allScore = sum;
System.out.println("总分:" + allScore);
}
}
首先, int score2 = 92; 和 int num=score1+HelloWorld.score2;矛盾,静态方法不能直接访问非静态变量,你的score2定义为非静态变量,但你的HelloWorld.score2却在直接访问score2,(注意,通过类名进行访问属于直接访问,非直接访问是指通过创建对象再调用对象的方式访问)。
其次,int allScore = sum(); 这句错了,你这是将‘sum()’作为一个变量直接赋给allScore。直接访问静态方法的意思是,不用通过创建对象的方式来访问,而是通过类名来访问,但是,不管是哪种方式访问方法,都要用上调用对象的基本格式,即“ 对象名或类名.方法名(); " , 所以正确的应该为 int allScore = HelloWorld.sum();
1,应该是
HelloWorld hellp=new HelloWorld();
int sum=score1+hello.score2;
非静态变量不能直接调用
2.int allScore = sum;这个不对,sum只是一个局部变量,他的作用域只在sum()这个方法中,所以应该是
int allScore=sum();
要求:定义静态变量score2为静态;
int allScore = sum;你这里是赋值,不是调用方法
静态变量
Java入门第二季 升级版
530655 学习 · 6091 问题
相似问题