8 个解决方案
#1
代码贴出来看看
#2
是啊,让我们看看代码啊
#3
你不会是在static方法中调用变量和方法吧。
在static方法中只能调用static变量和方法。
在static方法中只能调用static变量和方法。
#4
我的建议是,尽量少用不必要的公共变量,一个类中,如果有静态方法,那他所调用的所用公共变量和方法都必须是静态的,静态主方法(public static void mian)也一样要满足这个条件
#5
你不会是在static方法中调用变量和方法吧。
在static方法中只能调用static变量和方法。
同意ffee(短袖)的观点
在static方法中只能调用static变量和方法。
同意ffee(短袖)的观点
#6
哦,请恕在下冒昧,不过具我估计楼主可能是在main函数中直接调用class field or method了吧?
不过不是最清楚楼主的问题,帖段代码模拟一下在下认为楼主可能遇到的情况:
class Test {
int i = 10;
// Print i to console
public void print() {
System.out.println("This object's variable i is " + i);
}
// Main thread
public static void main(String[] args) {
print(); // That's wrong, because the method is non-static.
}
}
不知楼主是否是此意思,之所以会这么想是因为看楼主把static field or method 说成是公共变量和方法,static的含义是静态的,不依托于某一类型的单一实体,可以说其在某一类型中是公共的(不过在对象的世界里,实体都有一个界,以说明其归属,所以一般不会使用“公共”之类的词语来描述,这更像是过程开发世界里对全局变量的定义。)
然后楼主发现将所有的field or method变换成static就可以顺利编译了,代码如下:
class Test {
static int i = 10;
public static void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
print(); // That's right, because the method is static.
}
}
修改上述代码使之正确不难,问题出在楼主完全搞混了对象的真正含义,并用过程化的思维编写程序。(如果我的猜测是正确的话)
事实上,如果你理解了JAVA中的一切都是对象,就像刚才我所说的,所有的实体(对象)必有其界,所以如果使用non-static field or method时,他们必定是属于某一实体,而非公共(欧,原谅我用这个词吧,这里引用他只是为了叙述方便)存在的,要修改其只需在main()中初始化一个对象即可,
修正代码如下:
class Test {
int i = 10; // non-static field
public void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
// First, initialized one object, when non-static method called.
Test t = new Test();
t.print(); // That's right, because the non-static method is bound to one object
}
}
以上代码(修正版)运行通过,非常希望我正确的理解了楼主所遇到的麻烦,并且给出的实例也能帮助楼主解决问题。
@.@||~
不过不是最清楚楼主的问题,帖段代码模拟一下在下认为楼主可能遇到的情况:
class Test {
int i = 10;
// Print i to console
public void print() {
System.out.println("This object's variable i is " + i);
}
// Main thread
public static void main(String[] args) {
print(); // That's wrong, because the method is non-static.
}
}
不知楼主是否是此意思,之所以会这么想是因为看楼主把static field or method 说成是公共变量和方法,static的含义是静态的,不依托于某一类型的单一实体,可以说其在某一类型中是公共的(不过在对象的世界里,实体都有一个界,以说明其归属,所以一般不会使用“公共”之类的词语来描述,这更像是过程开发世界里对全局变量的定义。)
然后楼主发现将所有的field or method变换成static就可以顺利编译了,代码如下:
class Test {
static int i = 10;
public static void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
print(); // That's right, because the method is static.
}
}
修改上述代码使之正确不难,问题出在楼主完全搞混了对象的真正含义,并用过程化的思维编写程序。(如果我的猜测是正确的话)
事实上,如果你理解了JAVA中的一切都是对象,就像刚才我所说的,所有的实体(对象)必有其界,所以如果使用non-static field or method时,他们必定是属于某一实体,而非公共(欧,原谅我用这个词吧,这里引用他只是为了叙述方便)存在的,要修改其只需在main()中初始化一个对象即可,
修正代码如下:
class Test {
int i = 10; // non-static field
public void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
// First, initialized one object, when non-static method called.
Test t = new Test();
t.print(); // That's right, because the non-static method is bound to one object
}
}
以上代码(修正版)运行通过,非常希望我正确的理解了楼主所遇到的麻烦,并且给出的实例也能帮助楼主解决问题。
@.@||~
#7
大概楼主的问题在,在使用类中变量的时候没有生成类的实例而直接想用其中变量。因为我也是初学者,遇到过相似的问题。
比如: class a{
}
比如: class a{
}
#8
比如:
class a {
public abc;
...
}
你想用其中abc变量,但是发现无法引用,就在abc前加上了static,原因就是需要生成对象,
a x=new a() 这时候你在用x.abc就可以引用了。
^_^
class a {
public abc;
...
}
你想用其中abc变量,但是发现无法引用,就在abc前加上了static,原因就是需要生成对象,
a x=new a() 这时候你在用x.abc就可以引用了。
^_^
#1
代码贴出来看看
#2
是啊,让我们看看代码啊
#3
你不会是在static方法中调用变量和方法吧。
在static方法中只能调用static变量和方法。
在static方法中只能调用static变量和方法。
#4
我的建议是,尽量少用不必要的公共变量,一个类中,如果有静态方法,那他所调用的所用公共变量和方法都必须是静态的,静态主方法(public static void mian)也一样要满足这个条件
#5
你不会是在static方法中调用变量和方法吧。
在static方法中只能调用static变量和方法。
同意ffee(短袖)的观点
在static方法中只能调用static变量和方法。
同意ffee(短袖)的观点
#6
哦,请恕在下冒昧,不过具我估计楼主可能是在main函数中直接调用class field or method了吧?
不过不是最清楚楼主的问题,帖段代码模拟一下在下认为楼主可能遇到的情况:
class Test {
int i = 10;
// Print i to console
public void print() {
System.out.println("This object's variable i is " + i);
}
// Main thread
public static void main(String[] args) {
print(); // That's wrong, because the method is non-static.
}
}
不知楼主是否是此意思,之所以会这么想是因为看楼主把static field or method 说成是公共变量和方法,static的含义是静态的,不依托于某一类型的单一实体,可以说其在某一类型中是公共的(不过在对象的世界里,实体都有一个界,以说明其归属,所以一般不会使用“公共”之类的词语来描述,这更像是过程开发世界里对全局变量的定义。)
然后楼主发现将所有的field or method变换成static就可以顺利编译了,代码如下:
class Test {
static int i = 10;
public static void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
print(); // That's right, because the method is static.
}
}
修改上述代码使之正确不难,问题出在楼主完全搞混了对象的真正含义,并用过程化的思维编写程序。(如果我的猜测是正确的话)
事实上,如果你理解了JAVA中的一切都是对象,就像刚才我所说的,所有的实体(对象)必有其界,所以如果使用non-static field or method时,他们必定是属于某一实体,而非公共(欧,原谅我用这个词吧,这里引用他只是为了叙述方便)存在的,要修改其只需在main()中初始化一个对象即可,
修正代码如下:
class Test {
int i = 10; // non-static field
public void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
// First, initialized one object, when non-static method called.
Test t = new Test();
t.print(); // That's right, because the non-static method is bound to one object
}
}
以上代码(修正版)运行通过,非常希望我正确的理解了楼主所遇到的麻烦,并且给出的实例也能帮助楼主解决问题。
@.@||~
不过不是最清楚楼主的问题,帖段代码模拟一下在下认为楼主可能遇到的情况:
class Test {
int i = 10;
// Print i to console
public void print() {
System.out.println("This object's variable i is " + i);
}
// Main thread
public static void main(String[] args) {
print(); // That's wrong, because the method is non-static.
}
}
不知楼主是否是此意思,之所以会这么想是因为看楼主把static field or method 说成是公共变量和方法,static的含义是静态的,不依托于某一类型的单一实体,可以说其在某一类型中是公共的(不过在对象的世界里,实体都有一个界,以说明其归属,所以一般不会使用“公共”之类的词语来描述,这更像是过程开发世界里对全局变量的定义。)
然后楼主发现将所有的field or method变换成static就可以顺利编译了,代码如下:
class Test {
static int i = 10;
public static void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
print(); // That's right, because the method is static.
}
}
修改上述代码使之正确不难,问题出在楼主完全搞混了对象的真正含义,并用过程化的思维编写程序。(如果我的猜测是正确的话)
事实上,如果你理解了JAVA中的一切都是对象,就像刚才我所说的,所有的实体(对象)必有其界,所以如果使用non-static field or method时,他们必定是属于某一实体,而非公共(欧,原谅我用这个词吧,这里引用他只是为了叙述方便)存在的,要修改其只需在main()中初始化一个对象即可,
修正代码如下:
class Test {
int i = 10; // non-static field
public void print() {
System.out.println("This object's variable i is " + i);
}
public static void main(String[] args) {
// First, initialized one object, when non-static method called.
Test t = new Test();
t.print(); // That's right, because the non-static method is bound to one object
}
}
以上代码(修正版)运行通过,非常希望我正确的理解了楼主所遇到的麻烦,并且给出的实例也能帮助楼主解决问题。
@.@||~
#7
大概楼主的问题在,在使用类中变量的时候没有生成类的实例而直接想用其中变量。因为我也是初学者,遇到过相似的问题。
比如: class a{
}
比如: class a{
}
#8
比如:
class a {
public abc;
...
}
你想用其中abc变量,但是发现无法引用,就在abc前加上了static,原因就是需要生成对象,
a x=new a() 这时候你在用x.abc就可以引用了。
^_^
class a {
public abc;
...
}
你想用其中abc变量,但是发现无法引用,就在abc前加上了static,原因就是需要生成对象,
a x=new a() 这时候你在用x.abc就可以引用了。
^_^