JAVA新手,请TX帮看看以下代码有什么问题?

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:33:06
public class Var
{
int a=10;
int b=21;
public static void main(String[] args)
{
Var V=new Var();
System.out.println("这个是全局变量a="+V.a);
Var.print();
}
void print()
{
int c=20;
System.out.println("这个是全局变量a="+V.a);
}
}

以上代码编译时,提示以下错误:
Var.java:9: 无法从静态上下文中引用非静态 方法 print()
Var.print();
^
Var.java:14: 找不到符号
符号: 变量 V
位置: 类 Var
System.out.println("这个是全局变量a="+V.a);
^
2 错误
==================================================================
各位TX帮看看问题出在哪?

public class Var
{
int a=10;
int b=21;
public static void main(String[] args)
{
Var V=new Var();
System.out.println("这个是全局变量a="+V.a);
Var.print(); //应该写成V.print();
}
void print()
{
int c=20;
System.out.println("这个是全局变量a="+V.a); // V.a 应该直接写成a 或this.a
}

使用Var.print(); 即 类名.方法名()表示引用该类的静态方法
如果想这样用,应该把print声明为静态的static

使用V.print(); 即 对象.方法名()表示引用类中的一个普通的方法,虽然也可以引用静态的方法,编译器不会出错,但不推荐使用对象.方法名()来引用静态方法。
在一个普通方法中引用本类的类变量,直接写变量名即可,如果在本方法中存在同名的局部变量,则用this.类变量名来引用,如
void print()
{
int a=20;
System.out.println("这个是全局变量a="+this.a); //输出10
System.out.println("这个是局部变量a="+a); //输出20
}

看不明白你写的是什么。

Var.print(); 改为V.print();

第一个错误要用对象名调用。也就是V
第二个错误是因为超出了a的作用域,在方法中找不到类对象,你改成this.a就可以了.