请教码农这是怎回事?你们应该一看就会。。。。JAVA

  • c
    crc8
    我也不知道怎么描述啊,看图吧。为啥要重新编译结果才对?
    java version "1.8.0_65"
    Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
    Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)


    1.png


    2.png


    3.png


    4.png
  • s
    slimx
    指定不同的包名 就没事了
  • c
    crc8
    回复2#slimx


    哦,谢谢。这是什么原理?还没学到包。。。
  • f
    flyingforce
    你用java命令的时候,后面的这个文件名实际上是省略了后缀名.class 而javac的作用是把.JAVA文件编译成.CLASS文件
    所以在你使用javac编译之前,每次java运行都是原来的class 而不是你修改过的java文件。 你可以做个简单的试验,在运行java之前,DEL *.CLASS 然后看java还能运行么。

    这个是java当年的最大创新之一,在java之前的编程语言编译完都是直接根据当前操作系统生成可执行文件,所以在dos下编译的程序是没办法拿到unix下去用的,java引入了虚拟机概念,编译出来的都是中间态文件.CLASS, 然后用java虚拟机来执行这个class,这样每次换个操作系统,换个虚拟机就行了。
  • c
    crc8
    感谢,解释通俗易懂。
  • h
    happyd8699
    编译型语言和解释型语言的区别