我写了这个测试代码:
class MyProgram
{
int count = 0;
public static void main(String[] args)
{
System.out.println(count);
}
}
Run Code Online (Sandbox Code Playgroud)
但它给出了以下错误:
Main.java:6: error: non-static variable count cannot be referenced from a static context
System.out.println(count);
^
Run Code Online (Sandbox Code Playgroud)
如何让我的方法识别我的类变量?
通常,我this只在构造函数中使用.
我知道它用于识别参数变量(通过使用this.something),如果它与全局变量具有相同的名称.
但是,我不知道thisJava 的真正含义是什么,如果我this不使用dot(.)会发生什么.
我是一个Java新手,我正试图通过递归函数部署斐波那契线,然后计算运行时间.这是我设法编写的代码:
class nanoTime{
int fib(int n){
if(n==0) return 0;
if(n==1) return 1;
return this.fib(n-1)+this.fib(n-2);
}
public static void main(String[] args){
double beginTime,endTime,runTime;
int n=10;
beginTime = System.nanoTime();
n = this.fib(n);
endTime = System.nanoTime();
runTime = endTime-beginTime;
System.out.println("Run Time:" + runTime);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我试图将其变为字节码时,我收到以下错误:
nanoTime.java:11: non-static variable this cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)
我想知道这是什么问题?!
我明白这是指当前的对象.所以不使用objectname.fun(objectname.nonstaticmember),为什么我不能使用objectname.fun(this.nonstaticmember)
请参考下面的示例,并在最后看到最后两条评论.
public class Question
{
int data;
void myfun(int data)
{
System.out.println("data=="+data);
}
public Question(int data)
{
this.data = data;
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
Question question = new Question(10);
//question.myfun(question.data);//WORKS
question.myfun(this.data);//DOES NOT WORK
}
}
Run Code Online (Sandbox Code Playgroud)