【JavaSE】第一个Java程序

前提引入

在JavaSE的系列中,将从第一个Java程序开始叙述,系统的把JavaSE的内容总结一次。毕竟这是第二次学习JavaSE的内容,因此感触也相对比较深一些。在JavaSE的初步计划中,大概有十一到十三篇文章,大致有:第一个Java程序、数据类型与运算符流程控制数组、面向对象(类和对象封装继承以及多态)、抽象类和接口、枚举和注解、异常、泛型、IO、反射以及等。

Java开发环境

在第一个Java程序引入之前,先对Java的开发环境进行一个简单的介绍,毕竟有了开发环境,才可以进行代码的书写:

JDK:Java开发者工具;

JRE:Java运行时环境;

JVM:Java虚拟机。

上述表明,JDK是程序员开发时需要的工具,因此要先安装一下JDK。JDK现在是每半年发行一个版本,因为刚开始学习不必要使用最新版本,可以使用11或者17甚至8也是可以的。

JDK = JRE + 开发者工具集 (例如Java编译工具等);

JRE = JVM + JavaSE标准类库。

即三者具有如图关系:

Java核心机制:JVM

在Java开发环境中,最重要的组成部分就是JVM了。如果是第一次接触Java的同学可能对此没啥感觉,但是当对编程有了一定的了解之后,再回来重新学习,那么就会认识到JVM的重要性。

JVM,即Java Virtual Machine,Java虚拟机;它是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行命令、管理数据、内存以及寄存器等。

功能一

实现Java程序的跨平台性

指令集

Java语言属于高级编程语言,要经过编译器编译成可执行程序,而对于最底层来说,即机器指令序列,也就是大家所熟知的二进制编码;也就是说,软件最终都会成为机器熟悉的一些指令,而这些指令又形成了一个集合,自然又会出现不同的指令集。

假若现在有n种语言,m种指令集;如果再出现一种语言,那么势必要有m种对应关系去对应m种指令集;如果新出现一种指令集,那么势必要有n种对应关系去对应n种语言。但是,JVM的出现,大大减少这种关系的存在,如果出现一种新的语言,JVM直接去进行对应;如果出现一种新的指令集,那么也是JVM直接去进行对应,本来m * n的关系现在变成了m + n的关系,如下图:

功能二

实现内存管理(内存分配,内存回收)

内存泄漏和内存溢出

内存泄漏:所谓内存泄漏,即某块内存,在使用完成之后,本该进行回收,但是确并没有回收走,依旧处在被使用的状态中。

内存溢出:所谓内存溢出,即某程序约定的只有2G的内存空间,但是在运行过程中,使用的内存超过2G,也就是超过规定的内存空间,导致程序被挂掉。

  • Java程序在运行过程中,涉及到运算数据的分配、存储等都由JVM来完成;
  • Java消除了程序员回收无用内存空间的职责,提供了一种系统级线程跟踪存储空间的分配情况,在存储空间达到相应阈值时,检查并释放可被释放的存储器空间;
  • GC的自动回收,提供了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而引起的内存泄漏。

Java程序开发步骤

  1. 编写程序:将Java代码编写到以.java为扩展名的源文件中;
  2. 编译:使用javac命令对该java程序进行编译,生成一个或者多个字节码文件;
  3. 运行:使用java命令对生成的.class文件进行运行。

第一个Java程序

在学习编程的过程中,无论是哪一种语言,一般都是先编写一段“hello world”程序,以此来入门某种语言,Java当然也不例外。

a. 编写代码

创建一个后缀为.java的文件,将Java代码编写到文件中。

如果创建好的文件中没有发现后缀名,那么就点击“查看”中的“文件扩展名”进行勾选即可,如图:

 上述操作完成之后,将后缀名修改,改成如图所示即可(由于我的电脑上安装了一个插件,因而图标进行了转换,但是不安装也无伤大雅,最后都会使用IDEA等进行代码书写):

上述操作全部完成之后,进行代码书写:

public class helloworld {
	
	public static void main(String[] args) {
		System.out.println("hello world");
	}
	
}

 在上述代码中,public是一种限定符,使用大白话就好像你的日记只能给自己看,其他人不能看,而获得一个好成绩之后所有人都可以看的这种情况,而public表示的就是所有代码都可以用public包含的所有代码。

class表示一个类,这个是在面向对象中会仔细讲解,大致和C语言中的结构体类似。

helloworld就是类名。

其中的就算main函数,和C语言的main函数相同,表示程序的入口,在main函数前面的public、static以及void等都是一些修饰符,在后续学习中会慢慢接触到。

b. 编译

当代码书写完成之后,使用javac命令进行编译,就会生成.class字节码文件。

上述图中可以发现,当使用javac命令之后,就会生成一个.class文件。

生成.class文件之后,只要电脑上安装有JVM,那么就可以运行该java程序,无需再次编译,这就是java的口号:一次编译,到处运行。

c. 运行

当生成.class文件,使用java命令就可以对java程序进行运行。

注意

1. 一个java文件中可以声明多个类,但是最多只能有一个类使用public进行声明,且要求声明的类名与文件名相同。

2. 在使用javac命令时,注意后面跟着的是该程序的文件名,而非类名;当一个java程序中有多个类时,就会生成多个字节码文件。

如上图所示,java程序的文件名是helloworld,因而javac命令后面跟着的就是该名字;而编译完成之后,该文件会生成两个.class文件,而.class文件的名字则是跟java程序中的类名相同。

3. 编译完成之后,使用java程序进行运行时,就不再是以前的文件名,而是.class对应的文件名,但是也有例外,第四条中进行叙述。

4. 在Java中是严格区分大小写的,而windows并不具体区分大小写,因此如果两个类名相同咋办?请看如下例子:

上述例子表明,在windows系统中,如果一个java文件中有大小写不同但字母相同的程序,最后编译时只会生成一个字节码文件,并且文件名是以第一个类名命名的;但是通过java命令发现,使用helloworld是无法运行的,只有使用HelloWorld才可以运行,因此表明了如果存在两个命名相同的类,那么生成的字节码文件名是以第一个类命名,但是其中的内容确是第二个类的内容。

在本篇文章中,是第一个java程序的书写,下篇文章是对变量与运算符的简单介绍;刚入门时,建议大家可以配合视频观看,而并非只看一些书籍,毕竟书籍虽然深度比较深,但还是比较晦涩难懂,这篇文章到这里就结束了,感谢各位的观看。

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我可以为您提供一些建议来帮助您开发图书管理系统:1.使用Java SE中的类来存储图书信息;2.使用Java SE中的API来实现数据库功能;3.使用Java SE中的Swing类来创建图形用户界面;4.使用Java SE中的JOptionPane类来创建弹出式对话框;5.使用第三方库来实现其他功能,如报表和报告功能。 ### 回答2: 图书管理系统是一个用于管理图书馆或书店中图书信息的软件系统。它可以帮助管理员和读者更有效地管理图书资源,提高借阅书籍的效率。以下是使用Java SE编写一个简单的图书管理系统的步骤: 1. 创建图书类:首先,定义一个图书类,包括书名、作者、ISBN、出版社等属性,并提供相应的getter和setter方法。 2. 创建用户类:创建一个用户类来表示读者和管理员,其中包括用户名、密码、角色等属性。 3. 创建图书管理类:创建一个图书管理类来处理图书的借阅、归还、查询等功能。该类应包含以下方法: - 添加图书:允许管理员根据图书信息添加新的图书到系统中。 - 删除图书:管理员可以根据书名或ISBN删除不再需要的图书。 - 借阅图书:用户可以根据书名或ISBN借阅图书,并更新图书的借阅状态。 - 归还图书:用户可以根据书名或ISBN归还已借阅的图书,并更新图书的借阅状态。 - 查询图书:用户可以根据书名、作者或ISBN查询符合条件的图书并显示在界面上。 4. 创建用户管理类:创建一个用户管理类来处理用户的注册、登录等功能。该类应包含以下方法: - 注册用户:允许新用户向系统注册,包括用户名、密码、角色等信息。 - 登录验证:验证用户输入的用户名和密码是否正确,并返回对应的用户角色。 5. 创建主类:创建一个主类作为程序入口,提供图书管理系统的用户界面和操作菜单。用户可以通过菜单选择所需功能,并提供相应的输入。 6. 实现系统功能:根据需求,在主类中调用图书管理类和用户管理类的方法,实现相应的功能。 7. 运行程序:运行主类,即可启动图书管理系统,并通过用户界面进行图书的管理操作。 以上是一个简单的图书管理系统的编写过程,可以根据实际需求在此基础上增加其他功能,如图书推荐,借阅历史记录等,以满足更多的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王彬泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值