Java——执行流程

news2024/11/18 5:59:03

一、执行流程

1、示例

//第一个Java程序
public class Hello{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

编译:

执行:

我们可以看到这里的是类名,而不是字节码文件名 Hello.class ,这是因为对于java 命令是用于启动 Java 虚拟机(JVM)并执行编译后的 Java 应用程序的,Java 虚拟机(JVM)在运行时期待的是一个类的名称,而不是文件名或文件路径。

运行结果:

2、编译

使用 javac 工具将 java 源文件编译成 JVM 可以识别的字节码文件,即为 .class 文件。

如果源文件中没有错误,最终编译完成会出现一个 Hello.class 文件。

上面的指令时在 Hello.java 文件所在的目录下使用的,如果不是在源文件的目录下,要加上具体路径。使用 javac 可以直接在源文件上加上路径:

如果使用java指令的话,要配合 -classpath 选项来指定类的路径,或者使用 -cp 作为 -classpath 的简写:

也可以在系统环境变量中设置 CLASSPATH 环境变量,这样 Java 类加载器如果在当前的路径下找不到,则使用系统变量中的路径来查找类文件。

3、执行

我们通过使用 java 这个指令运行 Hello.class 文件,它的本质就是 java.exe 将这个字节码文件装载在 JVM 中执行。

当我们对源文件更改之后,需要再次编译,才能使 .class 文件更新,然后再运行,才能使执行后的结果更新。

二、一些知识点

1、每个源文件中只能有一个 public 类

Java 中每个源文件中只能有一个 public 类,而且这个 public 类的类名必须和源文件文件名相同,也就是说,如果你的一个源文件中的 public 类的类名为 Hello ,那你的源文件名就要是Hello.java。

其他的非 public 类个数不限。

2、对一个 Java 源文件编译,会产生一个对应的 .class 文件

在对一个 Java 源文件编译时,每一个类都会产生一个对应的 .class 文件。

//第一个Java程序
public class Hello{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

//非public类
class Dog {

}

//非public类
class Tiger {

}

当我们对以上的代码进行编译后,会发现产生了对应的 .class 文件:

3、可以将 main 方法放到非 public 类中

我们还可以将 main 方法放到非 public 类中,然后指定运行这个非 public 类,这样入口方法就变成了非 public 类的 main 方法。

//第一个Java程序
public class Hello{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

//非public类
class Dog {
	public static void main(String[] args) {
		System.out.println("This is Dog.");
	}
}

//非public类
class Tiger {
	public static void main(String[] args) {
		System.out.println("This is Tiger.");
	}
}

我们可以对上面的代码编译后,然后指定运行特定的类:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1713370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从tensorflow导入EarlyStopping能运行但是一直提示未解析

在pycharm中导入早停机的库时,碰上一个问题 from tensorflow.keras.callbacks import EarlyStopping这一条代码中,EarlyStopping一直有个红色波浪线,代表着找不到这个库,提示未解析啥的。 但是运行是可以运行的,虽然可…

Android Context 详解

一、什么是Context? Context是一个抽象基类。在翻译为上下文,是提供一些程序的运行环境基础信息。 Context下有两个子类,ContextWrapper是上下文功能的封装类(起到方法传递的作用,主要实现还是ContextImpl&#xff0…

[oeasy]python019_ 如何在github仓库中进入目录_找到程序代码_找到代码

继续运行 🥋 回忆上次内容 上上次 真写了万行代码 这 万行代码 都是写在明面上的 这次 使用git命令 下载了 github上面的仓库 下载仓库 之后 又该 怎么办呢?🤔 进入目录 首先看看 目前 在哪个目录 pwd present working directory 当前目…

在全志H616核桃派开发板上进行音频配置的方法详解

耳机口​ 核桃派板载的3.5mm音频输出口,该接口有一定的输出功率,可以使用耳机或者带功放的扬声器都可以播放声音。 查看音频设备​ 可以使用下面指令来查看音频信息: aplay -l音频播放测试​ 播放系统自带wav音频文件测试, 下面指令的au…

【wiki知识库】03.前后端的初步交互(展现所有的电子书)

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂前端配置文件补充 三、🌏前端Vue的改造 四、💡总结 一、🔥今日目标 在上一篇文章当中,我已带大家把后端的一些基本工…

脑图工具 在学习系统架构中的使用

系统,有人把它比作一个黑盒,有人比作一个树洞。呃,其实二者都隐含的表达了一个意思,盘根错节,一言难尽,欲说还休,说了又像是隔靴搔痒,感觉没说透。 学习,理解和展示一个…

信创操作系统生态

信创操作系统生态 中标麒麟 官网https://www.cs2c.com.cn/scheme/product/7.html 银河麒麟 官网 https://www.kylinos.cn/ 中科方德 官网 https://www.nfschina.com/index.php?catid30 中兴新支点(中兴公司自研的linux操作系统) 官网 http:/…

Facebook开户 | Facebook的CTR是什么?

在当今数字化的营销领域,了解和利用各种指标是成功的关键。其中一个关键指标是CTR,即点击率(Click-Through Rate)。 在Facebook广告中,CTR是一个至关重要的度量标准,它不仅可以衡量广告的效果,还…

男士内裤哪种款式舒服?五条实用技巧让你轻松挑选

对于很多男生来说,依然很难挑到真正舒适的内裤。比如卡臀卡裆,走路时不时还得提拉一下,真的很尴尬。又紧又闷的内裤!尤其是炎热的夏天,黏糊糊的贼难受!到底有没有一款舒适透气男士内裤呢?那今天…

LeetCode516:最长回文子序列

题目描述 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 代码 /*dp[i][j]:[i,j]的回文子序列长度为d…

Remix IDE 创建和部署第一个合约HelloWorld

Remix IDE 地址 https://remix.ethereum.org/ 流程步骤: 创建一个新文件 输入文件名保存 在文件资源管理器中,点击新建文件图标创建一个新文件,并给它命名。在 Remix 中,默认的文件扩展名是 .sol ,如果文件名没有…

Spring MVC 工作流程源码分析

前言: 我们知道 Spring MVC 的核心是前端控制器 DispatcherServlet,客户端所有的请求都会交给 DispatcherServlet 来处理,本篇我我们来分析 Spring MVC 处理客户端请求的流程,也就是工作流程。 Sping MVC 只是储备传送门&#x…

HTTPS单双向认证流程详解与联想

HTTPS单向认证 HTTPS在单向认证传输的过程中会涉及到三个密钥: 服务端的公钥和私钥,用来进行非对称加密交换密钥 客户端生成的随机密钥,用来进行对称加密传输数据 认证过程 1.客户端向服务器发起HTTPS请求,连接到服务器的443端…

JS-06 原型式继承借用构造函数实现继承

目录 1 原型式继承 场景 前置问题 实现方法 2 借用构造函数实现继承 前置问题 错误的实现方式 正确的实现方式 1 原型式继承 场景 a、创建一个纯洁的对象:对象在控制台打印什么属性都没有 b、创建一个继承自某个父对象的子对象 前置问题 一个对象里有很…

基于Vue uni-app的自定义列表表格信息展示组件

摘要:随着软件技术的不断发展,前端开发面临着越来越多的挑战。特别是在业务场景复杂多变的情况下,如何提高开发效率和降低维护成本成为了关键。本文旨在探讨组件化开发在前端应用中的重要性,并以Vue uni-app自定义列表表格为例&am…

韶音、南卡、Oladance开放式耳机哪个好?深度测评告诉你答案!

作为一名资深数码博主,五年来我有幸试用了众多蓝牙耳机,涵盖了市场上的大小品牌。品牌方常邀请我进行产品评测,而我的粉丝也常在私信中求教如何挑选开放式蓝牙耳机。近期,我细致比对了市面上备受关注的三款开放式耳机:…

Linux中常见的基本指令(上)

目录 一、ls指令 1. ls 2. ls -l 3. ls -a 4.ls -F 二、qwd指令 三、cd指令 1. cd .. 2. cd / / / 3. cd ../ / / 4. cd ~ 5. cd - 五、mkdir指令 六、rmdir指令和rm指令 一、ls指令 语法 : ls [ 选项 ][ 目录或文件 ] 。 功能 :对于目录…

Python词法和语法分析工具库之ply使用详解

概要 在编程语言的开发、编译器的实现和数据解析等领域,词法分析和语法分析是关键的技术。Python的ply库是一个功能强大的词法和语法分析工具,基于经典的Lex和Yacc工具实现。ply库为开发者提供了一种简单且高效的方法,用于定义词法规则和语法规则,从而实现对自定义语言和数…

HNU-计算机体系结构-实验2-Tomasulo算法

计算机体系结构 实验2 计科210X 甘晴void 202108010XXX 1 实验目的 熟悉Tomasulo模拟器同时加深对Tomasulo算法的理解,从而理解指令级并行的一种方式-动态指令调度。 掌握Tomasulo算法在指令流出、执行、写结果各阶段对浮点操作指令以及load和store指令进行什么…

自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计

自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计 在数据分析和机器学习中,参数估计是一个关键步骤。最小二乘估计(LSE)、加权最小二乘估计(WLS&…