如何简单运行Java程序

如何简单运行Java程序本章开始,我们需要下苦功打基础,目标是完成一个会员管理系统哦!如何运行Java程序,用java命令即可,一定不要忘了写main方法哦,一个java文件里面可以写很多个class。步骤1java文件等于java类吗问大家一个问题,你认为java文件是java类吗?你可以用记事本写一个Demo.java的文本文件,编码是ansi,如果你的windows系统是简体中文的,那么所谓的ansi,其实就和GBK是一样的。在这个文件里,你可以写很多的class,但是声明为public的class只能有一个。

大家好,又见面了,我是你们的朋友全栈君。

本章开始,我们需要下苦功打基础,目标是完成一个会员管理系统哦!如何运行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类。

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。

java App

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

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。

转载自:java小白翻身

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156409.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月7日 上午10:00
下一篇 2022年7月7日 上午10:00


相关推荐

  • linux:ubantu中pycharm专业版安装

    linux:ubantu中pycharm专业版安装1 下载 linux 版本安装包 2 解压压缩包查找到文件名以后复制 输入进下面的命令 进入 PyCharm 文件的 bin 目录 cd bin 最后 通过运行下面的命令来运行 PyCharm 安装程序 shpycharm sh amp 或者 sh pycharm sh 有这个界面即是解压成功的 pycharm 可用 软件的运行文件为 sh 激活程序激活成功教程 下

    2026年3月27日
    2
  • 前端页面跳转的几种方法「建议收藏」

    前端页面跳转的几种方法「建议收藏」onclick跳转设置window的location.href属性onclick=”window.location.href=’URL’”onclick=”location=’URL’”调用window的open方法onclick=”window.open(‘URL’,’_blank’);”//在新窗口打开onclick=”window.open(‘URL’,’_…

    2025年7月29日
    5
  • 一款全能型 AI 设计修图工具实测:椒图 AI,Nano Banana Pro 加持,电商 ⼩图 ⼩计一站式解决

    一款全能型 AI 设计修图工具实测:椒图 AI,Nano Banana Pro 加持,电商 ⼩图 ⼩计一站式解决

    2026年3月12日
    3
  • 磁道 扇区 图解

    磁道 扇区 图解在下图中 我们可以看到一圈圈被分成 18 假设 等分的同心圆 这些同心圆就是磁道 见图 不过真打开硬盘你可看不到 它实际上是被磁头磁化的同心圆 如图可以说是被放大了的磁盘片 那么扇区就是每一个磁道中被分成若干等分的区域 相邻磁道是有间隔的 这是因为磁化单元太近会产生干扰 一个小软盘有 80 个磁道 硬盘嘛要远远大于此值 有成千上万的磁道 每个柱面包括 512 个字节 那么什么是柱面呢 看下图

    2026年3月18日
    1
  • 但是生活总不是完美的

    但是生活总不是完美的里。为细水停留,为蔷薇伫足。水色清韵,一品天香,末指的时间,却觉不出暗香盈袖。输细水一分色,逊琼雪一段香。以晴翠为笔,以琼雪为墨。逸岭千城,踏雪无痕,末指的空间,却砌不出烟火人间。输晴翠一分情,逊琼雪只不过在寻求一种温暖的生存方式,可最后得到的并不是答案。高级别墅,奢华名车,并不是每一个进去的人都能快乐的,或许有了这些物质做依靠,总比什么都没有好许多,生活有时也仅仅只是一种形式,往往看到的只是外在

    2022年5月28日
    47
  • 面试之SpringMVC

    面试之SpringMVC面试之SpringMVC

    2022年4月23日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号