Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在第一个类中访问另一个类的方法,而不使用main方法或任何其他方法(直接在类内部)_Java - Fatal编程技术网

Java 在第一个类中访问另一个类的方法,而不使用main方法或任何其他方法(直接在类内部)

Java 在第一个类中访问另一个类的方法,而不使用main方法或任何其他方法(直接在类内部),java,Java,我只是好奇,如果我们在方法中创建一个对象并调用类a的方法,那么下面的代码为什么不起作用呢 class Main { A a=new A(); a.method(); public static void main(String[] args) { } } class A{ public void method(){ } } 静态方法保存在Java的“堆栈内存”中,而其他方法将存储在“堆内

我只是好奇,如果我们在方法中创建一个对象并调用类a的方法,那么下面的代码为什么不起作用呢

 class Main {
     A a=new A();
     a.method();
     public static void main(String[] args) {

    
     }
     
}

class A{
     public void method(){
         
     }
}

静态方法保存在Java的“堆栈内存”中,而其他方法将存储在“堆内存”中。 在开始运行java代码时,它首先引用静态内存。由于.method()位于“堆内存”中,因此无法解析

因此,请运行此命令以解决此问题:

 class Main {
     public static void main(String[] args) {
     A a=new A();
     a.method();
    
     }
     
}

class A{
     public void method(){
         
     }
}

如果一个类中有一个main方法,并且它是您想要运行的类,那么java总是查看
main
方法内部以开始执行

比如说这个案例,

public class Test {
    public static void main(String[] args) {
        A a = new A();
        a.method();
    }
    public static void method() {
        System.out.println("method() in class Test");
    }
}

class A {
    public static void main(String[] args) {
        Test.method();
    }
    public void method() {
        System.out.println("method() in class A");
    }
}
若我运行Test.java,那个么测试类的main方法将首先执行,反之亦然

现在有一种方法可以让java在查看类的主要方法之前运行代码。看看下面的代码

public class Test {
    static {
        A a = new A();
        a.method();
    }
    public static void main(String[] args) {
        System.out.println("main() of Test executing");
    }
}

class A {
    public void method() {
        System.out.println("method() in class A");
    }
}
在类中使用
static{…}
使得首先在静态块中执行代码,然后在主块中执行代码。它被称为静态初始值设定项是java类中的一个静态{}代码块,并且 在调用构造函数或main方法之前只运行一次

它是任何java类中的一个静态代码块{…},在调用该类时由虚拟机执行

  • 不支持返回语句
  • 不支持任何参数。 -不支持此选项或超级选项
通常这可以在任何地方使用。但我看到大多数情况下,它都是在进行数据库连接、API初始化、日志记录等操作时使用的。

请提供工作和非工作案例的详细信息。请比“不工作”更具体。请阅读。