Java 正在通过对象调用静态方法。。。!
我在某个地方读到过,对象不能调用静态方法…但根据下面的代码Java 正在通过对象调用静态方法。。。!,java,static,static-methods,Java,Static,Static Methods,我在某个地方读到过,对象不能调用静态方法…但根据下面的代码mm对象正在调用publicstaticvoidmain1(字符串args[]){}静态方法并显示输出..有人能解释一下原因吗 public class Mainmultiple{ public static void main(String args[]) { System.out.println("hello"); Mainmultiple mm = new Mainmultiple(
mm
对象正在调用publicstaticvoidmain1(字符串args[]){}
静态方法并显示输出..有人能解释一下原因吗
public class Mainmultiple{
public static void main(String args[])
{
System.out.println("hello");
Mainmultiple mm = new Mainmultiple();
mm.main1(args);//here object mm is calling static main1 method..??
}
public static void main1(String args[]){
System.out.println("Bye");
}
}
当我运行并执行上面的代码时,我只得到一条警告消息,要么将static方法的访问权限更改为classname.staticMethod()代码>或从main1()
但是仍然需要显示输出..因此请解释这种方法的工作原理我们可以在任何地方使用该类的类名和该类的对象访问静态方法。
因为当我们创建一个类的对象(您要调用它的静态方法)来创建对象时,首先类加载器将.class文件加载到方法区域的JVM内存中(在JVM内存中,它创建一个类对象并存储它)。所以在创建对象之前,它对我们的类是可用的。创建对象时,将在中创建与该内存关联的对象。因此,您可以使用对象轻松访问静态方法。
你有没有注意到课堂参考的o/p
For ex A is a class
class A{
.......
.......
}
A a1=new A();
s.o.p(a1);
o/p是这样的-
A@12f2312
在该哈希代码中有两部分(A,12f2321),一部分表示类,另一部分表示对象。因此,我们可以使用object访问静态方法,而我可以粗略了解这是什么编程语言(很可能是java),这不是将其添加为标记的关键信息吗?@Xorifelse是的,它的java…很抱歉没有添加,谢谢你指出..你在哪里读到了这篇废话?它是另一种方式-不能在静态方法中调用非静态方法。你能详细说明类引用的O/p吗?。这是一个为什么主要方法是静态的问题。?通过阅读问题,我怀疑jvm将如何首先创建对象,然后调用main();方法,它最终将导致额外的内存分配。@shashimishra这是关于三个额外的问题,但是main()
是静态的,这一事实消除了JVM首先创建对象的需要。要调用main(),我们不需要对象。因为这是一个静态的方法。我们可以在没有类的对象的情况下调用静态方法,但是jvm能够调用main方法,因为当jvm指示类加载器将类加载到jvm内存时,第一个jvm创建一个类类型的类对象,并使用该对象jvm调用main()a线程而不是函数。