Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何简单运行Java程序

如何简单运行Java程序

作者头像
剽悍一小兔
发布于 2021-04-09 07:38:02
发布于 2021-04-09 07:38:02
4.6K00
代码可运行
举报
运行总次数:0
代码可运行

本章开始,我们需要下苦功打基础,目标是完成一个会员管理系统哦!如何运行Java程序,用java命令即可,一定不要忘了写main方法哦,一个java文件里面可以写很多个class。

步骤 1 java文件等于java类吗

问大家一个问题,你认为java文件是java类吗?

你可以用记事本写一个Demo.java的文本文件,编码是ansi,如果你的windows系统是简体中文的,那么所谓的ansi,其实就和GBK是一样的。

在这个文件里,你可以写很多的class,但是声明为public的class只能有一个。

这就说明,java文件不等于java类。java文件可以是一大堆class的集合体,每一个class都可以通过new关键字,或者反射变成实例对象。所以,你也可以说,一个java文件就是一个程序,这个程序如果跑起来,就是一大堆对象的集合。

每一个对象可以互相通信,各司其职,共同完成程序的任务。

有点绕,反射又是什么鬼,看不懂?没关系,下面我们会一步一步,慢慢学习到的。现在,请放轻松。

步骤 2 java文件本质上就是txt文本

现在,我们找一个地方,比如 D:\java18 ,创建一个普通的文本文件,后缀名改成.java。如果不知道怎么改后缀名,文件框左上角点击组织,选择文件夹和搜索选项,把隐藏文件扩展名的选项去掉就可以啦。

image

然后,创建一个Demo.java。

image

这就是一个java文件了,如果到这一步没有问题,那么恭喜你,你已经向前迈进了一大步!

步骤 3 javac命令

java文件是无法直接执行的,我们需要借助Java虚拟机来执行java程序。而java虚拟机也无法直接运行运行.java的文件,我们需要把java文件编译成.class文件,这个编译的过程,就是用javac命令。之前已经安装好了环境变量,所以这边可以直接调用javac命令吧。

image

结果,文件夹里面啥也没发生?为什么,因为我的Demo.java文件本来就是一个空文件啊,里面啥也没有。

步骤 4 什么是Java虚拟机?

我们在上一节下载了JDK的安装包,解压后又配置了环境变量。这个时候,我们可以说,我们的电脑上已经安装了Java虚拟机,也叫做JVM。

说到底,Java虚拟机就是一个软件,和你电脑上的QQ是一回事。这个软件的作用,就是编译和运行某一个.java文件。

就是这么回事啦,虚拟机并不神秘,在操作系统的角度看来,它只是一个普通进程。

下面给出一张JVM的图:

image

步骤 5 java里面要写什么?

上面那张图有点复杂?没关系,现在我们只需要明白,JVM可以编译和运行某一个java文件,比如Demo.java。

刚才我们使用了javac命令,虽然啥也没发生,但是cmd窗口也没有报错,这是好事,这说明编译成功了。

java文件里面要写什么呢?答案是很简单的,那就是我们要写class,即java类。我们先考虑一下,做一个会员管理系统,需要什么?会员的前提是客户,会员就是VIP客户。这就引入了两个概念,分别是客户和会员。每一个客户都是潜在的会员,这就是业务需求。

不管是客户还是会员,都是我们日常生活的概念,现在我们要做的事情,把这两个概念都放到程序中去。我们用记事本打开Demo.java,输入

image

class是java的关键字,代表要声明一个类,右边紧跟着一个大小字母开头的单词,就是类名称,然后是一对{},这是java类的主体。现在,重复javac命令。

image

你会发现多了两个class文件,编译成功了,这个是java虚拟机的功劳。

步骤 6 怎么运行class文件?

我们要运行java程序,其实就是用java命令执行某一个class文件,运行的前提是,这个class文件的“前身” -- 即java文件,它里面的class有一个main方法。我们在Demo.java中再加一个App类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class App {
   public static void main(String[] args){
    System.out.println("程序启动了...");
   }
}

重新javac一下,****注意每次修改了Demo.java,都要重新编译,确保class文件是最新版本

这时候你会发现又多了一个App.class,我们用java命令去运行它。

image

这样就执行成功了!

步骤 7 javac的时候发生了什么?

javac的时候,JVM会启动java的编译器程序,对指定扩展名的.java文件进行解析,然后按照一定的规则编译成字节码,生成一个.class文件。这个class文件是可以被JVM的类加载器读取和执行的。至于内部的深层次原理,我们暂时不用关心,我们只需要知道java文件必须要编译成class文件,才可以被JVM执行,这就行了。

image

步骤 8 java的时候发生了什么?

刚才我们运行了App.class文件,用的命令是这样的,注意,不需要写class。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java App

那为什么不能写成 java App.class呢?这是因为,java规定如果执行的class文件名里面有 **“.” **号,就会认为是有文件夹嵌套,有一个包含关系。现在我们做一个证明。新建一个Test.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package my;
class Test
{
    public static void main(String[] args){
        System.out.println("Test");
    }
}

用javac编译,得到Test.class文件,然后创建一个文件夹my,把Test.class放进去。

image

回到java18文件夹,执行命令:

image

验证成功了,所以不写.class是有用意的,因为怕混淆啊!

回到最初的问题,java命令到底发生了什么?其实就是去那个类里面寻找 public static void main 方法,如果有,就去执行这个方法。

步骤 9 这个main方法是什么?

public是java语法中的访问权限修饰符,代表公共的,谁都可以访问。

static代表这个方法是静态的,静态的意思就是不需要实例化对象就可以直接访问,结合上面的JVM图,我们可以知道这个main方法在class被加载的时候,就会被存放到方法区,JVM想调用就调用。

void代表方法没有返回值,这是程序的主方法,不需要返回值,也没有谁可以去接收这个返回值。

main代表这是主入口,JVM会去寻找一个叫做main的方法去执行,这是规定。

综上,这个main()方法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。

如果不这么设置,执行就会报错,main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类型必须String[]。

步骤 10 System.out.println?

这个语句是java打印数据到控制台的方法,调试的时候我们可以经常使用,因为内部实现采用了同步代码块,会极大影响运行效率,所以如果项目要上线,请删除或者注释掉所有的System.out.println,转而采用异步的日志处理方案,比如logback。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
NASA:ASTER L2 表面辐射率(E(辐射率)和 T(地表温度)) V003数据集
ASTER L2 地表发射率是一种按需生成的产品((https://lpdaac.usgs.gov/documents/996/ASTER_Earthdata_Search_Order_Instructions.pdf)),利用 8 至 12 µm 光谱范围内的五个热红外(TIR)波段(白天或夜间获取)生成。 它包含 90 米空间分辨率的陆地表面发射率。 迄今为止,地表发射率的估算只能通过土地覆盖类型或植被指数等代用指标得出。 温度/辐射率分离(TES)算法用于得出 E(辐射率)和 T(地表温度)。 TES 算法的主要目标包括:恢复矿物基质的准确和精确的发射率,以及估算准确和精确的表面温度,尤其是植被、水和雪的表面温度。 每个像素的离地辐射度和下沉辐照度矢量都被考虑在内。 发射率采用归一化发射率法(NEM)估算,并对反射太阳光进行迭代补偿。 利用每个像素的平均发射率对发射率光谱进行归一化处理。 计算归一化光谱的最小-最大差值(MMD),并通过回归分析得出最小发射率的估计值。 这些估算值用于对归一化发射率进行缩放,并利用得出的细化发射率对反射天光进行补偿。 2020 年 5 月 27 日之后的 ASTER 2 级观测数据请求将恢复使用气候学臭氧输入。 更多信息可查阅 ASTER L2 处理选项更新(https://lpdaac.usgs.gov/news/aster-l2-processing-options-update/)。 V003 数据集发布日期:2002-05-03 自 2021 年 6 月 23 日起,辐射校准系数第 5 版(RCC V5)将应用于新观测到的 ASTER 数据和存档的 ASTER 数据产品。 有关 RCC V5 的详细信息,请参阅以下期刊文章。
此星光明
2024/09/07
1300
NASA:ASTER L2 表面辐射率(E(辐射率)和 T(地表温度)) V003数据集
NASA数据集:ASTER L2 地表辐射率 - VNIR 和串扰校正 SWIR V003
ASTER L2 Surface Radiance - VNIR and Crosstalk Corrected SWIR V003
此星光明
2024/09/13
1250
NASA数据集:ASTER L2 地表辐射率 - VNIR 和串扰校正 SWIR V003
ASTER L2 表面反射率 SWIR 和 ASTER L2 表面反射率 VNIR V003
ASTER L2 Surface Reflectance SWIR and ASTER L2 Surface Reflectance VNIR V003
此星光明
2024/09/07
990
ASTER L2 表面反射率 SWIR 和 ASTER L2 表面反射率 VNIR V003
NASA数据集:ASTER全球数字海拔模型(GTEM)V003
ASTER全球数字海拔模型(GTEM)第3版(ASTG TM)提供了地球陆地区域的全球数字海拔模型(TEM),空间分辨率为1角秒(赤道处水平位置约30米)。ASTER GTEM数据产品的开发是美国国家航空航天局(NASA)和日本经济产业省(METI)之间的合作成果。ASTER GTEM数据产品由东京的传感器信息实验室公司(SILC)创建。ASTER GTEM第3版数据产品是根据对整个ASTER 1A级(https://doi.org/10.5067/ASTER/ASTER/AST_L1A.003)档案的自动处理创建的,该档案是在2000年3月1日至2013年11月30日期间获取的场景。使用立体相关来生成超过一百万个基于单个场景的ASTER数字元,并对其应用了云掩蔽。所有云屏蔽的数字元和非云屏蔽的数字元都被堆叠。删除了剩余坏值和离群值。在数据堆叠有限的地区,使用了几个现有的参考数字元来补充ASTER数据以纠正剩余异常。对选定的数据进行平均以创建最终像素值,然后将数据分割为1度纬度乘1度经度的区块,并具有一个像素重叠。为了纠正水体表面的海拔值,还生成了ASTER全球水体数据库(ASTWBD)(https://doi.org/10.5067/ASTER/ASTWBD.001)第1版数据产品。ASTER GTEM的地理覆盖范围从北纬83°延伸到南纬83°。每个图块以GeoTivf格式分布,并投影在1984年世界大地测量系统(WGS 84)/1996年地球引力模型(EGM 96)大地水准面上。该系列中的22,912块瓷砖中的每一块都至少包含0.01%的土地面积。ASTER GTEM产品中提供了用于TEM和场景数(NUM)的层。
此星光明
2024/09/05
2700
NASA数据集:ASTER全球数字海拔模型(GTEM)V003
NASA数据集:高级星载热发射和反射辐射计(ASTER)1B 级快速传感器辐射度登记全球数据产品
ASTER L1B Registered Radiance at the Sensor V003
此星光明
2024/09/13
1480
NASA数据集:高级星载热发射和反射辐射计(ASTER)1B 级快速传感器辐射度登记全球数据产品
NASA:ASTER 1 级精确地形校正登记传感器辐射率 V003
高级星载热发射和反射辐射计(ASTER)1 级精确地形校正注册传感器辐射度(AST_L1T)数据包含校正传感器辐射度,与 ASTER 1B 级(AST_L1B)(https://doi.org/10.5067/ASTER/AST_L1B.003)相对应,经过几何校正,并旋转到 UTM 投影北上。 AST_L1T 由相应的 ASTER L1A (AST_L1A) (https://doi.org/10.5067/ASTER/AST_L1A.003) 产品的一次重新采样生成。 AST_L1T 中可用的波段取决于 AST_L1A 中的波段,最多可包括 3 个可见光和近红外(VNIR)波段、6 个短波红外(SWIR)波段和 5 个热红外(TIR)波段。 AST_L1T 数据集不包括后视 VNIR 波段 3。 精确地形校正过程将 GLS2000 数字高程数据与衍生的地面控制点(GCP)结合起来,以实现所有相关统计数据达到最小阈值的日间场景的地形精度。 对于夜间获取的场景或质量较差的地面图像(如云层),可采用其他级别的校正(系统地形、系统或精确)。 对于白天的图像,如果使用 VNIR 或 SWIR 望远镜采集数据并尝试进行精确校正,则每幅精确地形校正图像都将附带独立的质量评估。 它将包括可供分发的几何校正文本文件和叠加有效 GCP 的单波段浏览图像。 该多文件产品还包括地理坐标全分辨率浏览图像。 浏览图像的数量和图像的波段组合取决于相应 (AST_L1A) 数据集 (https://doi.org/10.5067/ASTER/AST_L1A.003) 中可用的波段。
此星光明
2024/09/17
1170
NASA:ASTER 1 级精确地形校正登记传感器辐射率 V003
NASA数据集——对流层二氧化碳垂直分辨率剖面图
AIRS/Aqua L2 CO2 support retrieval (AIRS+AMSU) V005 (AIRX2SPC) at GES DISC
此星光明
2024/05/24
920
NASA数据集——对流层二氧化碳垂直分辨率剖面图
NASA数据集——对流层中的 AIRS/Aqua L2 CO2 数据集
AIRS/Aqua L2 CO2 in the free troposphere (AIRS+AMSU) V005 (AIRX2STC)
此星光明
2024/05/24
1170
NASA数据集——对流层中的 AIRS/Aqua L2 CO2 数据集
GHRSST Level 3U 全球海面下温度第 8a 版,来自 GCOM-W 卫星上的高级微波扫描辐射计 2(GDS 第 2 版)和(AMSR2) 近地表实时温度8.2版本
GHRSST Level 3U Global Near-Real-Time Subskin Sea Surface Temperature version 8a from the Advanced Microwave Scanning Radiometer 2 on the GCOM-W satellite
此星光明
2024/07/12
1160
GHRSST Level 3U 全球海面下温度第 8a 版,来自 GCOM-W 卫星上的高级微波扫描辐射计 2(GDS 第 2 版)和(AMSR2) 近地表实时温度8.2版本
Google Earth Engine ——高级星载热辐射和反射辐射计全球发射率数据库(ASTER-GED)地表温度数据集
The Advanced Spaceborne Thermal Emission and Reflection Radiometer Global Emissivity Database (ASTER-GED) was developed by the National Aeronautics and Space Administration's (NASA) Jet Propulsion Laboratory (JPL), California Institute of Technology. This product includes the mean emissivity and standard deviation for all 5 ASTER Thermal Infrared bands, mean land surface temperature (LST) and standard deviation, a re-sampled ASTER GDEM, land-water mask, mean Normalized Difference Vegetation Index (NDVI) and standard deviation, and observation count.
此星光明
2024/02/02
3280
Google Earth Engine ——高级星载热辐射和反射辐射计全球发射率数据库(ASTER-GED)地表温度数据集
中科星图——Landsat8_C2_ST数据集是经大气校正的地表温度数据
Landsat8_C2_ST数据集是经大气校正的地表温度数据,属于Collection2的二级数据产品,以开尔文为单位测量地球表面温度,是全球能量平衡研究和水文模拟中的重要地球物理参数。地表温度数据还有助于监测作物和植被健康状况,以及极端高温事件,如自然灾害(如火山爆发、野火)和城市热岛效应。前言 – 人工智能教程
此星光明
2024/02/20
3530
中科星图——Landsat8_C2_ST数据集是经大气校正的地表温度数据
MODIS数据介绍——波段、产品
MODIS是搭载在terra和aqua卫星上的传感器,MODIS扫描周期为1.477秒,每条扫描线沿扫描方向有1354个Pixels,沿卫星轨道方向有10个1KMD的IFOV。在每个IFOV中,1KM分辨率波段有1个采样,500M分辨率波段有4个采样,250M波段有16个采样。通过网址进行下载:https://ladsweb.modaps.eosdis.nasa.gov/
全栈程序员站长
2022/08/25
5.4K0
MODIS数据介绍——波段、产品
利用热红外遥感影像提取地表温度的草垛
地表温度作为地球环境分析的重要指标,而遥感技术作为现代重要的观测手段,使得基于遥感图像的地表温度反演的研究越来越多。主要的地表温度反演方法有:大气校正法,单窗算法,单通道法等等。本文以2013年花溪区的遥感影像为基础,介绍用辐射传输方程法对地表温度进行反演。
陈南GISer
2021/08/19
3.1K0
利用热红外遥感影像提取地表温度的草垛
NASA数据集:大气红外探测器(AIRS)是第二个地球观测系统(EOS)极轨道平台 EOS Aqua 上表层温度(陆地和海洋表面)、表层气温、气温和水汽剖面、对流层顶特征、柱状可降水量等数据
AIRS/Aqua L3 8-day Standard Physical Retrieval (AIRS+AMSU) 1 degree x 1 degree V006 (AIRX3ST8) at GES DISC
此星光明
2024/05/26
2190
NASA数据集:大气红外探测器(AIRS)是第二个地球观测系统(EOS)极轨道平台 EOS Aqua 上表层温度(陆地和海洋表面)、表层气温、气温和水汽剖面、对流层顶特征、柱状可降水量等数据
基于ENVI与ERDAS的Landsat 7 ETM+单窗算法地表温度(LST)反演
更新:基于GEE的Landsat地表温度反演可以看这篇博客[1],自动批量操作,处理更快。
疯狂学习GIS
2021/07/22
1.7K0
Landsat8_C2_ST是经大气校正的地表温度数据
Landsat8_C2_ST数据集是经大气校正的地表温度数据,属于Collection2的二级数据产品,以开尔文为单位测量地球表面温度,是全球能量平衡研究和水文模拟中的重要地球物理参数。地表温度数据还有助于监测作物和植被健康状况,以及极端高温事件,如自然灾害(如火山爆发、野火)和城市热岛效应。前言 – 人工智能教程
此星光明
2024/02/13
2490
基于ENVI与ERDAS的Hyperion高光谱经验比值、一阶微分法叶绿素及地表参数反演
  前面几篇博客介绍了基于Landsat这一多光谱遥感图像数据的多种地表温度(LST)反演方法,大家可以参考博客1[1]、博客2[2]、博客3[3];那么接下来,我们就将基于比多光谱数据可以说是更进一步的高光谱卫星数据——大名鼎鼎的Hyperion数据,进行多种其他地表参数的反演。其中,在此之前可以先了解一下国内外主流的星载高光谱传感器及其平台的相关信息[4]。
疯狂学习GIS
2021/07/22
1.9K0
推荐阅读
NASA:ASTER L2 表面辐射率(E(辐射率)和 T(地表温度)) V003数据集
1300
NASA数据集:ASTER L2 地表辐射率 - VNIR 和串扰校正 SWIR V003
1250
ASTER L2 表面反射率 SWIR 和 ASTER L2 表面反射率 VNIR V003
990
NASA数据集:ASTER全球数字海拔模型(GTEM)V003
2700
NASA数据集:高级星载热发射和反射辐射计(ASTER)1B 级快速传感器辐射度登记全球数据产品
1480
NASA:ASTER 1 级精确地形校正登记传感器辐射率 V003
1170
NASA数据集——对流层二氧化碳垂直分辨率剖面图
920
NASA数据集——对流层中的 AIRS/Aqua L2 CO2 数据集
1170
GHRSST Level 3U 全球海面下温度第 8a 版,来自 GCOM-W 卫星上的高级微波扫描辐射计 2(GDS 第 2 版)和(AMSR2) 近地表实时温度8.2版本
1160
Google Earth Engine ——高级星载热辐射和反射辐射计全球发射率数据库(ASTER-GED)地表温度数据集
3280
中科星图——Landsat8_C2_ST数据集是经大气校正的地表温度数据
3530
MODIS数据介绍——波段、产品
5.4K0
利用热红外遥感影像提取地表温度的草垛
3.1K0
NASA数据集:大气红外探测器(AIRS)是第二个地球观测系统(EOS)极轨道平台 EOS Aqua 上表层温度(陆地和海洋表面)、表层气温、气温和水汽剖面、对流层顶特征、柱状可降水量等数据
2190
基于ENVI与ERDAS的Landsat 7 ETM+单窗算法地表温度(LST)反演
1.7K0
Landsat8_C2_ST是经大气校正的地表温度数据
2490
基于ENVI与ERDAS的Hyperion高光谱经验比值、一阶微分法叶绿素及地表参数反演
1.9K0
相关推荐
NASA:ASTER L2 表面辐射率(E(辐射率)和 T(地表温度)) V003数据集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验