import java.io.*;
public class myapp3
{
int balance =9;
public static void main(String[] args)
{
getB();
}
int getB()
{
return this.balance;
}}
编译报错:
myapp3.java:8: non-static method getB() cannot be referenced from a static conte
xt
getB();
public class myapp3
{
int balance =9;
public static void main(String[] args)
{
getB();
}
int getB()
{
return this.balance;
}}
编译报错:
myapp3.java:8: non-static method getB() cannot be referenced from a static conte
xt
getB();
解决方案 »
- 我MyEclipse那个运行main方法的菜单不见了,谁知道哪里可以设置回来吗?
- resultset
- 面试题:声明一个委托public int myCallBack(int x),则该委托产生的回调方法的原型是?
- java中获得系统当前字体列表的机制(原理)是什么?
- 高分求教!!关于 PreparedStatement,想将表名也作为变量输入
- 多态(真的搞不明白!)
- 关于byte 型的数据提问
- j2se中可以用jdbc么?在哪里下在驱动程序?下载完了安装到哪里?
- 能帮忙看看么?
- 请问从屏幕上输入字符时,能显示别人看不出的原字符,也就是怎么实现加密。这程序该怎么写,谢谢。
- jdbc如何更改表结构 在线等!
- 用单例好还是静态方法好呢?有没有个标准?
或者把
public static void main(String[] args)
{
getB();
}
里的调用改成:
public static void main(String[] args)
{
myapp3 myapp=new myapp3();
myapp.getB();
}
必须是static 才能在 static void main()中调用,这是基本基本基本概念
import java.io.*;
public class myapp3
{
int balance =9;
public static void main(String[] args)
{
getB();
}
int static getB()
{
return this.balance;
}
}
编译还是报错:
myapp3.java:9: <identifier> expected
int static getB()
^
myapp3.java:13: ';' expected
程序里是不是不可以定义那么多静态方法呀?
import java.io.*;
public class myapp3
{
int balance =9;
public static void main(String[] args)
{
myapp3 myapp=new myapp3();
myapp.getB();
}
int static getB()
{
return this.balance;
}
}
import java.io.*;
public class myapp3
{
int balance =9; public static void main(String[] args)
{
num2 num = new num2();
num.print();
}
int getB()
{
return this.balance;
}
}class num2
{
num2()
{
System.out.println("执行构造函数");
}
void print()
{
System.out.println("*");
}
}
static int getB()
{
....
}
myapp3.java:14: non-static variable this cannot be referenced from a static cont
ext
return this.balance;
1、按照99%的人的标准想法来改,要调用一个类的一个方法,先要创造一个类的实例,所以需要加上Myapp3 shili = new Myapp3();这句,然后调用shili这个实例的getB()方法。
public class Myapp3 {
int balance = 9; public static void main(String[] args) {
Myapp3 myapp3 = new Myapp3();
myapp3.getB();
} int getB() {
return this.balance;
}
}
2、非要保持调用静态方法getB(),而静态方法不允许使用this,所以去掉this,会发现一个静态方法不能访问一个非静态的域balance,所以还要把balance变成静态的。最后如下
public class Myapp3 {
static int balance = 9; public static void main(String[] args) {
getB();
} static int getB() {
return balance;
}
}
public class myapp3
{
int balance =9;public static void main(String[] args)
{
num2 num = new num2();
num.print();
}
int getB()
{
return this.balance;
}
}class num2
{
num2()
{
System.out.println("执行构造函数");
}
void print()
{
System.out.println("*");
}
}
自学能力也忒弱了吧。
三楼的兄弟,不一定“必须是static 才能在 static void main()中调用”,以下的调用也可以阿:
import java.io.*;
public class myapp3
{
int balance =9; public static void main(String[] args)
{
num2 num = new num2();
num.print();
}
int getB()
{
return this.balance;
}
}class num2
{
num2()
{
System.out.println("执行构造函数");
}
void print()
{
System.out.println("*");
}
}
================================================
num2 num = new num2();
num.print();
你这里是通过对象num 调用的print();方法,当然可以。
public static void main(String[] args) {
getB();
}
但是你这里的写发相当于
public static void main(String[] args) {
this.getB();
}
而这里的this相当于类本身,而不是这个类的实例对象,所以不能调用。因为静态资源是属于类本身所有,它是在类被加载进内存的时候就已经创建的资源,它永远只有一份,也就是属于类本身的那一份资源;而非静态资源是在类被实例化的时候才创建的资源,它是属于类的实例对象,所以类有多少个实例对象,就有多少份非静态资源。所以静态资源可以被类本身,或是类的实例对象访问。但是非静态资源(如这里的getB()方法)是只能通过类的实例对象来访问的。