JAVA中 在static方法内部能否调用非静态方法

如题所述

static方法内部不能直接调用非静态方法,
可以在调用之前实例化非静态方法所在的类,再用类点方法来调用。
例:非静态方法是className类里面的method();
className cn=new className();
cn.method();
这样就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-03
不可以,因为静态方法是不需要实例化,非静态方法是必须实例化的。所以,静态方法调用非静态方法不能用this.方法名()来调用。必须先实例化一个对象,然后用对象名.方法名()。
第2个回答  2010-03-04
小小的盗贼正解。

JAVA中 在static方法内部能否调用非静态方法?
static方法内部不能直接调用非静态方法,可以在调用之前实例化非静态方法所在的类,再用类点方法来调用。例:非静态方法是className类里面的method();className cn=new className();cn.method();这样就可以了。希望能帮助你。

用static修饰的方法能不能调用非static方法,能不能访问非static变量...
不能,因为静态方法在类装载的时候就分配了内存块,而非静态的方法和变量在new这个类的对象的时候才分配内存块, 他们内存分配的时间不一样 静态区域访问非静态区域是没有任何意义的 本回答由提问者推荐 举报| 答案纠错 | 评论 33 1 497455993 采纳率:27% 来自团队:Java老馆 擅长: JAVA相关 数据库DB 手机使用...

Java中 无法从静态上下文引用非静态方法
静态方法中无法直接调用非静态方法的。 你可以先new出来circle 对象。class hauptprogramm { public static void main ( String [] args){ circle kr = new circle(); circle.readCircle(); System.out.println( kr ); }}还有 记得以后类名都要大写 ...

【新面试题】Java中的静态方法为什么不能调用非静态方法
首先,你可能会说静态方法是属于类的,而非静态方法属于实例对象。这没错,但答案其实只差一句话。JVM是如何调用Java方法的呢?构建运行环境,调用Java方法。构建运行环境会多做一步给this指针赋值,这是关键。非静态方法会,静态方法不会。如果你能理解这段话,并从我手写的JVM中找到对应的代码,你就...

为什么static修饰的方法能不能调用非static方法和属性,请讲详细点...
1、首先当一个方法或者变量需要初始化加载,或者是经常被调用的时候,可以加上static。2、类中被static修饰的变量在类的方法中可以使用类名调用、self调用、static调用。4、类中被static修饰的方法,同样可以使用类名调用、self调用、static调用。3、类中被static修饰的方法,在外部可以直接使用类名进行调用...

java为什么不能在静态方法中使用非静态变量
静态方法是不用创建对象就直接调用,所以在静态方法中没有this指针,不能访问所属类的非静态变量和方法,只能访问方法体内的局部变量、自己的参数和静态变量,而非静态变量是给一个类的实例化对象调用的,一个是类调用,一个是类对象调用,所有在静态方法中是不能使用非静态变量的。实例:上面出错的原因...

“无法从静态上下文中引用非静态方法”这个问题怎么解决?
静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。比如常见的main方法都是静态的,必须由static修饰,因此在main方法里调用类的其他非静态...

static上下文不能调用其他的非静态方法和静态方法不能调用其他非静态方...
没歧义啊,静态方法就是不能调用非静态方法。静态方法属于类,非静态方法属于对象,你在静态方法中没有实例化对象的话怎么能调用到他的方法。

java ,为什么无法从静态上下文中引用非静态方法
因为编译器不知道那个方法在哪,两种解决办法,一种加static修饰,这样在程序运行时就会被加载入内存,另一种创建对象,然后调用对象的方法,如 public static void main(String args[]){ TextLinerSearch t = new TextLinerSearch ();t.linearSearch(list,-3);} ...

java static作用
import static com…..ClassName.*;这里的多了个static,还有就是类名ClassName后面多了个.* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名的方式来调用。

相似回答