java源程序文件_JDK11 | 第五篇 : 启动单个Java源代码文件的程序

一、简介

JEP330-启动单文件代码程序(Launch Single-File Source-Code Programs),是JDK11中一个很不错的功能。这个功能允许你直接使用java解析器运行java代码,java文件会在内存中执行编译并且直接执行。唯一的约束在于所有相关的类必须定义在东一个java文件中。

二、实例

案例1

创建一个 Test.java 文件 ,代码如下:

public class Test {

public static void main(String[] args) {

System.out.println("Test ...");

}

}

执行上面的代码

jdk11之前 :

javac Test.java

java Test

jdk11:

java Test.java

结论:jdk11中,通过 java xxx.java 命令,就可直接运行源码文件程序,而且不会产生.class 文件。

案例2

问题:如果一个java文件中存在多个类 ,通过 java xxx.java 运行源码文件,会执行哪一个main方法 ?

创建一个 Test1.java 文件,代码如下:

class Test2 {

public static void main(String[] args) {

System.out.println("Test2");

}

}

public class Test {

public static void main(String[] args) {

System.out.println("Test");

}

}

通过 java Test.java 运行后输出 "Test2"。

下面我们颠倒 Test Test2 两个类的位置:

public class Test {

public static void main(String[] args) {

System.out.println("Test");

}

}

class Test2 {

public static void main(String[] args) {

System.out.println("Test2");

}

}

通过 java Test.java 运行后输出 "Test"。

结论:一个java文件中包含多个类时,java xxx.java 执行排在最上面的一个类的main方法。

案例3

问题:如果一个java文件中类的方法中调用了另一个java文件中类的方法,通过 java xxx.java 运行源码文件,能运行通过吗 ?

创建两个java文件 Student.java 、Teacher.java。

Student.java:

public class Student {

public static void main(String[] args) {

Teacher teacher = new Teacher();

teacher.toString();

}

}

Student.java:

public class Teacher {

private String name;

private String subject;

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setSubject(String subject){

this.subject = subject;

}

public String getSubject(){

return subject;

}

}

执行 java Student.java 报错 :

Student.java:4: 错误: 找不到符号

Teacher teacher = new Teacher();

^

符号: 类 Teacher

位置: 类 Student

Student.java:4: 错误: 找不到符号

Teacher teacher = new Teacher();

^

符号: 类 Teacher

位置: 类 Student

2 个错误

把 Student 和 Teacher 连个类 放在一个java文件中 ,重新运行,运行通过。

结论:java xxx.java 启动单个Java源代码文件的程序时,相关个类必须定义在同一个java文件中。

三、结论

通过上面的三个案例,我得出以下结论:

jdk11中,通过 java xxx.java 命令,就可直接运行源码文件程序,而且不会产生.class 文件。

一个java文件中包含多个类时,java xxx.java 执行排在最上面的一个类的main方法。

java xxx.java 启动单个Java源代码文件的程序时,相关个类必须定义在同一个java文件中。

关注我

欢迎扫码或微信搜索公众号《程序员果果》关注我,更多精彩内容不能错过 ~~

(转载本站文章请注明作者和出处 程序员果果的博客)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值