当前位置: 首页 > 面试题库 >

Java理解Java逻辑的主要方法

蔚琦
2023-03-14
问题内容

关于启动应用程序作为入口点,主要方法是Java应用程序中最重要的方法。使用此方法之前会发生什么尚不清楚。请有人可以通过以下方法签名来纠正我的看法,从而帮助我理解/阐明使用该方法之前发生的情况:

  • JVM创建至少一个将访问您的主方法的对象。这个(假定的)对象尝试根据该API来访问Java应用程序,该API显然会将您绑定到已知的方法签名public static void main (String[] args){}

    • public 您是否不能限制JVM上的(假定的)单独对象访问包含主要方法的对象,而该方法仅主要查看逻辑而不是API /签名?

    • static根本没有启动和运行的对象来创建对象的任何其他实例(假定的JVM除外)来实例化或创建对象。静态修饰符表示访问此方法的唯一可能性,因为它没有绑定到实例,因此可以在没有实例的情况下访问。再有,这是逻辑,因为没有任何对象启动并运行(除了假定的JVM),还没有任何对象可以实例化任何其他对象吗?

    • args语言和应用程序/可执行文件的标准以提供自定义应用程序的功能?

这是接近和理解主要方法的正确且合乎逻辑的方法吗?


问题答案:

尚不清楚您真正要问的是什么,但是JVM规范5.2节至少涵盖了其中的一些内容:

Java虚拟机通过使用引导类加载器(第5.3.1节)创建一个初始类来启动,该类以与实现相关的方式指定。然后,Java虚拟机将链接初始类,对其进行初始化,然后调用公共类方法void
main(String
[])。该方法的调用将推动所有进一步的执行。构成主要方法的Java虚拟机指令的执行可能导致其他类和接口的链接(并因此创建),以及其他方法的调用。

在Java虚拟机的实现中,可以将初始类作为命令行参数提供。或者,该实现可以提供一个初始类,该初始类设置一个类加载器,该类加载器进而加载应用程序。初始类的其他选择是可能的,只要它们与上一段中给出的规范一致即可。

该JLS
12.1节
有一些其他的描述了。

JVM main直接调用该方法-无需创建新对象即可。尽管main方法本身必须是公共的,但声明它的类却不是。例如:

public class Test {
    private static class EntryPoint {        
        public static void main(String[] args) {
            System.out.println("Hi");
        }
    }
}

然后执行:

java 'Test$EntryPoint'

它按预期打印“ Hi”。

Test类外的任何代码都EntryPoint.main()不能通过特权反射进行访问,也不能通过JVM明确地进行直接访问。



 类似资料:
  • 环境:jdk18 前言 今天在看Java string类的equals源码,源码主要逻辑比较好理解:先判断是否是同一对象,是就直接返回true,否则判断类型是否是string类型,且每一个元素内容是否相同(先判断length,再判断内容) 问题描述 在使用断点debug时发现 问题1: 是循环运行的,且有的时候value与aString.value的数组长度就不一样(哪怕字符相等,如"a".equ

  • 此方法的任务是从数组中移除要移除的值。剩下的元素应该只向数组的开头移动。(数组的大小不会改变。)由于数组现在少了一个元素,最后一个元素的位置应该用0填充。如果数组中有多个toRemove的匹配项,则只应移除第一个匹配项。方法没有返回值,如果数组没有元素,它应该只是没有效果。 解决方案: 我不明白这个算法是如何工作的。boolean的使用让我感到困惑,我觉得我不完全理解原始数据类型是做什么的,我知道

  • 问题内容: 对于以下代码,为什么打印A,B?我希望它能打印B,B。而且,由JVM执行的方法调用是动态还是静态评估? 问题答案: 重载由编译器 静态 确定。 重写 是在执行时完成的,但这不是这里的因素。 的静态类型为A,因此第一个方法调用解析为。

  • 问题内容: 我们需要使用Java进行逻辑回归。我们在Python http://blog.smellthedata.com/2009/06/python- logistic-regression- with-l2.html中 使用了此代码,并且基本上希望在Java中使用相同的代码。我被定向到Weka,但许可是非商业性的。 我发现Omegahat API具有像Scipy这样的BFGS最小化器,但我无

  • 我已经有一段时间没有编程了,我正在努力回到事情的转折点,这就是我已经走了多远。我的问题是,我如何循环第二个问题,这样,如果回答不是肯定的,它会再次问这个问题。我曾尝试在if语句周围放置一个循环,但每当我尝试从用户那里获得另一个响应时,它告诉我无法使用变量response来执行此操作。我觉得这是一个简单的修复,因为我理解循环,但我有一个困难的时候围绕着这个具体的问题我的头,提前谢谢你。