2301_78651928 2023-10-01 16:46 采纳率: 54.5%
浏览 5

JAVA为什么运行不了

img


帮我看看哪里出问题了 真的不会 麻烦回答的详细一点 已经提了很多次没有解决了😭

  • 写回答

2条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-01 18:19
    关注

    【相关推荐】



    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7671413
    • 你也可以参考下这篇文章:java通过键盘不断输入某门课程的成绩(利用异常处理解决当输入非法数字或非数字的字符串时提示输入不正确)
    • 同时,你还可以查看手册:java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-泛型是Java编程语言的一个强大功能。它们提高了代码的类型安全性,使更多的错误可以在编译时发现。-野生动物 中的内容
    • 您还可以看一下 汪翠老师的java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码课程中的 给扑克牌绑定鼠标事件实现单击可以选择出牌列表小节, 巩固相关知识点
    • 除此之外, 这篇博客: Java虚拟机类加载器与虚拟机字节码执行引擎中的 基于栈的字节码解释执行引擎 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      java虚拟机的执行引擎在执行java代码时候都有解释执行和编译执行的选择,解释执行,例如早期的java虚拟机通过字节码解释的方式运行,编译执行如当下的JIT编译,将本地某些热点代码便以为本机执行的二进制代码,提高代码的运行效率,在这里扯一下Java虚拟机两种模式,Client模式能够较快的启动,进行一些必要的优化,但是不会在后台进行深度的优化。Server模式则启动较慢,但是长时间运行性能要比Client模式高。这里其是最大的区别就在于后台编译执行的区别,Java虚拟机有三个编译的层次,第一次纯的字节码解释,在古老的java版本中使用较多,普通情况下默认c1级别的编译,解释字节码以及进行一些必要的一定程度的优化,而C2模式则会对代码进行深度的优化,比较适合于Server模式。

      解释执行:

      java出生的JDK1.0时代这种定义时比较准确的,当虚拟机中包含了即时编译器之后,Class文件中的代码到底会被解释执行还是编译执行这就成了虚拟机自己做选择的事情。再后来也有了直接生成本地代码的编译器,如GCJ,而C/C++也有了解释执行器的版本,如CINT,这时候笼统的说解释执行则对整个Java来说几乎成了没有意义的概念,只有确定了谈论对象是某种具体的Java实现版本和执行引擎的运行模式后,编译执行和解释执行的讨论才有意义。大部分的程序代码在物理机的目标代码或者是虚拟机能执行的指令集之前,都需要经过下图的过程:

      大多数物理机或者是java虚拟机都会遵循现代经典编译原理的思路,在执行前都会对程序源码进行词法分析和语法分析,把源码抽象称为抽象的语法树。而对于c/c++而言,词法分析和语法分析以至于后面的优化器和目标代码生成器都可以选择独立与执行引擎。当然也可以把其中的一部分实现为一个半独立的编译器,这类的代表就是Java语言,又或者将这些都全部集中封装,如JavaScript执行器。对于Java而言,词法分析,语法分析然后抽象称为语法树这些工作都是在虚拟机之外进行的,二姐时期在虚拟机的内部,所以Java程序的编译就是半独立的实现。

      基于栈的指令集和基于寄存器的指令集:

      java基本上是一种基于栈的指令集架构,指令流中的指令大部分为零地址指令,他们依赖操作数栈进行工作。而另一种基于寄存器的指令集如上面提到的典型的X86的二地址指令集,举个1+1计算的例子看下不一样的地方:

      #Java的单字节指令
      iconst_1
      iconst_1
      iadd
      istore_0
      
      #x86的而地址指令集
      mov eax, 1
      add eax, 1

      可以看到,java是进行出栈和入栈的操作,遇到iadd指令则计算然后将结果进行放到局部变量表的第0个slot中。而x86指令则使用mov指令将eax寄存器设置为1,然后利用add进行加法计算,然后将结果保存在eax寄存器中。基于栈的指令集优势在于有较好的可移植性,不太受到硬件的约束,编译器实现简单。而基于寄存器的指令则相比基于栈的指令中频繁的入栈出栈性能损失要小的多。相对于处理器来说,内存始终是执行速度的瓶颈。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月1日