Loading [MathJax]/jax/input/TeX/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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java程序运行原理分析
线程独占: 每个线程都会有它独立的空间,随线程的生命周期而创建和销毁 线程共享: 所有线程都能访问这块内存数据,随虚拟机或GC而创建和销毁 方法区
CodingDiray
2019/09/25
1.1K0
Java程序运行原理分析
JVM内存分析,以及一步步详解Java程序是如何运行的?
最终还是决定更加深入地学习下JVM,同时也用自己的理解详细地说明Java程序是如何运行的。
刘小爱
2020/07/30
9130
JVM内存分析,以及一步步详解Java程序是如何运行的?
1.2 我的第一个java程序---helloworld
上篇文章中我们主要介绍了java环境的搭建,也就是jdk的安装,如果对于jdk的安装有任何疑问的朋友,可以私信我。安装好了JDK以后呢,我们就可以使用java语言开发程序了,想想是不是很兴奋。那么好的,今天我们演示一下,使用java语言完成我们第一个java入门程序,helloworkd,其实就是使用java语言打印一句话。
一缕82年的清风
2022/01/10
4070
1.2 我的第一个java程序---helloworld
java虚拟机(JVM)
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
兮动人
2021/06/11
4800
java虚拟机(JVM)
Java程序概述
Java程序在编译执行过程中,首先把源文件(.java文件)编译成字节码文件,即类文件(.class);然后由解释器负责解释执行类文件。
全栈程序员站长
2022/09/08
8500
不要再问我Java程序是怎么执行的了!
可以看到,Java虚拟机是在原有计算机的基础上虚拟出来的抽象计算机,提供Java程序的运行环境。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM是Java平台无关的基础,使Java程序能够做到 “Write Once, Run Anywhere”。
编程大道
2019/07/19
2.1K1
不要再问我Java程序是怎么执行的了!
JAVA程序运行原理分析
PS:本次将JVM运行的核心逻辑进行了详细的解析,JVM运行原理中更底层实现,针对不同的操作系统或者处理器,会有不同的实现,说了运行时数据区,讲到了栈,指令码的执行过程。这也是JAVA能够实现【一定编写,处处运行】的原因。下次说下Java线程。
IT架构圈
2019/11/11
1.3K0
JAVA程序运行原理分析
java和javac编译运行java程序
但是在学习过程中,我想在命令行测试一些JVM参数的时候,发现自己脱离了IDE,竟然无法直接编译java程序!!
全栈程序员站长
2022/09/01
3.1K0
java和javac编译运行java程序
java编译和运行
一个java应用程序由若干个类组成,这些类可以在一个源文件,也可以分布在若干个源文件
全栈程序员站长
2022/07/01
1K0
java编译和运行
Java文件是如何编译成Dex文件的?如何执行Dex文件?「建议收藏」
Android系统中,一个App的所有代码都在一个Dex文件里面。Dex是一个类似Jar的存储了多有Java编译字节码的归档文件。
全栈程序员站长
2022/09/07
2.3K0
Java入门(基础篇一)
Java语言是Sun公司在1995年推出的高级编程语言,编程语言就是计算机语言,人们可以通过使用编程语言让计算机完成很多功能。
故里
2020/11/25
4700
Java入门(基础篇一)
Hello, Java!
Java概述 Java是一种可用于编写跨平台应用的面向对象的编程语言。 Java具有简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的特点。 Java被广泛的应用于各个方面,比如Android很大一部分就是用Java编写的。 Java的工作方式 编写并且执行一个Java程序,需要进行下面几步: 编写源代码,以.java为后缀名。 使用编译器进行编译,一般这个程序为javac。如果编译成功,则会生成字节码文件,字节码文件以.class为后缀名。 使用Java虚拟机(JVM)来
mwangblog
2018/07/04
4440
Java学习笔记第一篇:坦克大战游戏
一、Java学习笔记系列 笔者大学时候学的编程语言是C和汇编,毕业以后并未从事过开发工作,也没有接触过Java。但近两年的PaaS、CI/CD主要是以Java应用为主,同时本着活到老学到老的态度,笔者开始学习Java。对Java比较熟悉的读者,可以忽略本系列文章。 笔者学习资料来自网络,文后会列出参考链接。由于本文是读者的学习笔记,因此不会做很多赘述性文字,会以实验为主。在语言描述上,争取一针见血把事情说清楚。文章中,Java的语法本文不做详细解释,有其他语言基础也比较好理解Java的语法。 一、Jav
魏新宇
2018/03/22
2.3K0
Java学习笔记第一篇:坦克大战游戏
Java 基础教学:运行机制与环境配置
Java是一种高级编程语言,由Sun Microsystems公司于1995年发布。Java的设计原则是“一次编写,到处运行”,这意味着Java代码可以在任何支持Java的平台上运行,而不需要为每个平台编写特定的代码。为了实现这一点,Java有一个独特的运行机制和需要配置的环境。在本文中,我们将深入探讨Java的运行机制,并指导如何配置Java开发环境。
世间万物皆对象
2024/10/19
1850
Java程序是如何运行的「建议收藏」
当我们写完一个Java源程序的时候,他是怎么被计算机运行的呢?本篇文章就来介绍下Java程序是如何运行的。
全栈程序员站长
2022/09/08
6400
什么是classpath[通俗易懂]
在日常的开发中或者初学者中,都是直接使用工具进行Java的开发或学习,如eclipse,idea、myeclipse这类的开发工具,由于大部分操作都是由开发工具所完成,所以开发中并不关注classpath这个属性,日久之后就忘了这个属性到底是做什么的。
全栈程序员站长
2022/09/07
1.4K0
什么是classpath[通俗易懂]
Java小白翻身教程-包的作用
之前讲了打印数据的方法:System.out.println,写这么多字有点麻烦啊。那么我们不妨创建一个StringUtil,Util是工具的意思,里面设计一个newLine方法,用于字符串的打印。
剽悍一小兔
2021/07/14
3700
Java小白翻身教程-包的作用
Java_环境搭建、变量的使用
JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是 Java程序的运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上。 跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性(“一次编写,处处运行”)。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
咕咕星
2020/08/19
4290
Java_环境搭建、变量的使用
你写的 Java 代码是如何一步步输出结果的?
对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式。
用户1516716
2019/11/04
9670
JAVA-基础语法以及String的介绍
J2SE:Java 2 Platform Standard Edition(2005年之后更名为JAVA SE)。
诺谦
2019/05/24
3970
相关推荐
Java程序运行原理分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验