如何简单运行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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图解SQL的Join

    图解SQL的Join

    2022年2月18日
    40
  • matlab解常微分方程组数值解法(二元常微分方程组的解法)

    上篇博客介绍了Matlab求解常微分方程组解析解的方法:博客地址微分方程组复杂时,无法求出解析解时,就需要求其数值解,这里来介绍。以下内容按照Matlab官方文档提供的方程来展开(提议多看官方文档)介绍一下核心函数ode45()一般形式:[t,y]=ode45(odefun,tspan,y0) 其中tspan=[t0tf]功能介绍:求微分方程组y′=f(t,y)从t0…

    2022年4月18日
    655
  • jdk卸载不干净解决办法

    jdk卸载不干净解决办法Win7系统下安装jdk报错;错误信息:“ WindowsInstaller程序包有问题。此安装需要的DLL不能运行。请与您的支持人员或程序包开发商联系”。造成该问题的原因是系统以前安装过jdk,重新安装需要彻底卸载旧的jdk,这样重新安装才能成功。但是,打开控制面板——卸载程序,卸来卸去总是报错错误还是“ WindowsInstaller程序包有问题。此安装需要的DLL不能运行。…

    2022年6月29日
    87
  • ubuntu安装完pycharm找不到了怎么办_pycharm安装numpy失败

    ubuntu安装完pycharm找不到了怎么办_pycharm安装numpy失败按常用方法(下载安装包再./pycharm.sh)安装失败,报warn:keymap“visualstudio”notfound,keymap“eclipse”notfound想不通为什么和这些ide有关,查了也没解决最后直接到Ubuntu自带的Ubuntusoftware下搜索pycharm下载,一次成功,不知道为什么这么简单有效的方法大家都不优先推荐。。。…

    2022年8月29日
    2
  • 关于opacity属性的探究

    关于opacity属性的探究关于opacity属性的探究上问题!!在前一段时间我朋友和我讨论到了opcaity的属性问题问题如下:代码如下清重点关注opcaity<!–css样式–><style>.boxfather{width:500px;height:500px;background-color:blue;text-align:cen

    2022年5月26日
    35
  • Springboot源码结构预览「建议收藏」

    Springboot源码结构预览「建议收藏」系列文章目录Springboot学习系列一、Springboot源码结构预览二、Springboot运行原理三、Springboot源码流程构造分析四、Springboot运行流程构造分析五、SpringbootWeb应用源码解析文章目录系列文章目录概述二、Springboot源码1.源码获取2.源码调试3.目录结构3.目录结构总结学习目标:学习内容:学习时间:学习产出:概述Springboot源码获取、调试、目录结构、设计理念、整体架构。二、Springboot源码1.源

    2022年6月3日
    34

发表回复

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

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