计算机。编程java,不明白哪里出问题了,间接的用this也不行?

public class A { public static void main(String[] args){ test(); } public void test() { String str="test"; System.out.println(this.str); }}
最新回答
|欧巴桑_

2024-11-30 17:35:34

首先,在主方法main中调用类中的方法,如果是用static修饰的静态方法,可以直接调用,

如果是没有用static修饰的动态方法,则只能创建类的对象,由类的对象调用.

其次,this是指代当前类的关键字,你的str变量是方法中的局部变量,不是类的属性,也就是说不是类变量,

也就不能用this.str去访问str变量.其实str是test方法的局部变量,直接访问就可以了.

改正后的A类如下(改动的地方见注释)

public class A { 

 public static void main(String[] args){

  A a=new A();//这里创建A类的对象a

  a.test();//这里用对象a调用test方法

 }

 public void test(){

  String str="test";

  System.out.println(str);//这里去掉this

 }

}

玖歌

2024-11-30 10:07:11

为何不能用this,因为this表示的是当前对象。所以:this.str表示A对象的str字段/属性。而你的str都是函数变量。所以根本访问不到。如果你把str提升为A的字段/属性,就可以了
错在情深

2024-11-30 10:11:22

主要是两个知识点

  1. 静态/实例方法变量

  2. 变量的作用域

另类收藏者

2024-11-30 14:52:38

静态方法中不能使用非静态方法
需要创建对象后才可以调用非静态方法
通过
A a = new A();
a.test();
调用
枕头说它不想醒

2024-11-30 15:49:31

问题是语法错误。this调用的是类对象,你这个str是局部变量,不需要用this。