day02_第一个Java程序

在开发第一个Java程序之前,我们必须对计算机的一些基础知识进行了解。

常用DOS命令

  • Java语言的初学者,学习一些DOS命令,会非常有帮助。DOS是一个早期的操作系统,现在已经被Windows系统取代,对于我们开发人员,目前需要在DOS中完成一些事情,因此就需要掌握一些必要的命令。例如:在输入DOS命令可以创建文件夹,如下图所示

如何进入DOS操作窗口 

  • 按下Windows+R键盘,打开运行窗口,输入cmd回车,进入到DOS的操作窗口。

下面是键盘常用键位图

常用命令,如下图所示:

路径在windows系统上包括:相对路径和绝对路径。

  • 相对路径:相对路径一定是相对于当前所在“位置”而言的。相对路径是相对于当前而言,从当前所在的位置作为起点。
  • 绝对路径:在windows操作系统中凡是路径起点是盘符的都是绝对路径

Java 的加载与执行

  • 在编写第一个 Java 程序之前,我们应当对 Java 的加载与执行提前有一个简单的了解,请看下图:

通过上图,我们可以看到 Java 程序从开发到最终运行是这样进行的:

  • 第一步(写代码):在任意位置创建一个.java 结尾的文件,程序员在该文件中编写符合 Java语法的源代码,这个文件被称为Java 源文件。
  • 第二步(编译)使用“javac”命令对 java 源文件进行编译,如果 Java 源文件符合 Java语法规则,则编译生成 1 个或者多个以“.class”结尾的文件。“.class”结尾的文件我们称之为字节码文件,注意字节码文件不是普通文本文件,使用记事本等文本编辑器是无法打开的,但该文件内容也不是二进制,如果是二进制形式的话,操作系统是可以直接执行的,这个文件的内容我们称之为字节码。注意:这里有一个“类名”的概念,假设生成的文件是 A.class,则表示类名为 A,B.class 则表示类名为 B。
  • 第三步(运行)使用“java”命令运行已编译的 Java 程序,假设编译之后的字节码文件是 A.class,则在 dos 命令窗口中执行 java A命令,这个时候 Java 虚拟机(JVM)就启动了,Java 虚拟机通过“类装载器 ClassLoader”从硬盘中找到 A.class 文件并装载,字节码文件被装 载到 Java 虚拟机之后,Java 虚拟机解释器对字节码进行解释,最终解释为二进制码,然后操 作系统通过执行二进制指令来和硬件平台完成交互。 

以上则是 Java 程序加载与执行的过程,接下来总结一下 7 条规则

  1. Java 程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的操作系统中完成,例如在 windows 环境下进行编译,在 Linux 环境下运行,这是因为有 JVM 机制的存在,做到了一次编译到处运行(跨平台/可移植)。
  2. 编译阶段需要使用 javac.exe命令,运行阶段需要使用 java.exe命令。
  3.  一个 Java 源文件可能会编译生成多个 class 文件。
  4. Java 源文件中的源代码如果不符合 Java 的 语法 机制则编译时编译器会提示错误信息, 并且无法生成 class 文件。反之则生成 class 文件,而 class 文件才是最终要执行的程序,此时将 Java 源文件删除是不会影响 Java 程序运行的。
  5.  若生成的字节码文件名为 A.class,那么我们称 A为一个类的名字
  6. 当编译阶段完成之后,我们可以使用 JRE 中的 java.exe 命令运行程序,例如执行命令 “java A”,该命令执行后会启动类加载器,类加载器去硬盘上搜索 A.class 文件,找到该字节 码文件之后,将其加载到 JVM 当中,JVM 中的解释器会将 A.class 字节码文件解释为操作系 统可以执行的二进制码,然后操作系统通过执行二进制码和硬件平台交互。
  7. 运行 Java 程序的前提是当前操作系统上已经安装了对应版本的 JVM(JVM 不是单独 安装的,安装 JRE 即可,不同的操作系统需要安装不同版本的 JRE,不同版本的 JRE 对应不 同版本的 JVM)。

入门程序

  • 开发环境已经搭建完毕,可以开发我们第一个Java程序了。 HelloWorld案例是指在计算机屏幕上输出“HelloWorld”这行文字。Java程序开发三步骤:编写编译运行

具体如下图所示:

1:编写Java源程序

  • 在我们指定的目录下新建文本文件,完整的文件名修改为 HelloWorld.java ,其中文件名为 HelloWorld ,后缀名必须为 .java 。 在文件中键入文本并保存,代码如下:
package sgg.demo01;
/*问题1:错误: 编码GBK的不可映射字符,  当前编辑器采用的是utf-8编码   dos窗口采用的GBK编码 原因编码不统一解决方式:统一编码
问题2:错误: 找不到符号,程序包system不存在。可能原因书写错误,java中严格区分大小写。解决方式:大小字母完全保持一致
问题3:错误: 错误: 需要';'   原因:每一行语句的结束 都是 ; 且所有的标点符号都是英文半角解决方式:一行语句的结束 都加上 ;
问题4:错误: 需要')'解决方式:括号成对出现
注意:如果这个类不是public修饰,那么源文件名可以和类名不一致。如果这个类是public修饰,那么要求源文件名必须与类名一致。源文件的名字可以与类名不一致,每一个类在编译后 都会生成一个字节码文件。一个源文件中可以有多个类,编译后每个类都会独立生成一个.class字节码文件。建议不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。*///类名是Demo01HelloWorld后面有一对大括号{},此对大括号 限定了 类的范围
public class Demo01HelloWorld {//主方法  程序的入口  jvm调用 main 小括号后的大括号 限定了方法的范围public static void main(String[] args) {//打印输出一行语句 叫Hello WorldSystem.out.println("Hello World");}
}

第一个 HelloWord 源程序就编写完成了,Java源程序是程序员编写的,程序员自己可以看得懂得程序。本质就是一个文本文件,但是扩展名不是.txt,而是.java。JVM是看不懂的,也就不能运行,因此我们必须将编写好的 Java源文件编译成JVM可以看懂的字节码文件。 

2:编译Java源文件

  • JVM只能识别字节码文件(.class文件)。  如何把源文件(程序)翻译成JVM能够执行的字节码文件(程序)呢?在DOS命令行中,进入Java源文件的目录,使用 javac 命令进行编译。

  • 编译成功后,命令行没有任何提示。打开 源文件目录,发现产生了一个新的文件 HelloWorld.class ,该文件就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。

3:运行Java程序

  • 不管是源文件(程序)还是字节码文件(程序)都存储在硬盘中 ?不会自动执行,如何把字节码文件交给JVM执行呢 ?我们在DOS命令行中,进入Java源文件的目录,使用 java 命令进行运行。

当我们看见DOS的操作窗口打印出Hello World!,就代表我们第一个Java程序成功了。

HelloWorld案例详解

  • 类名后面的大括号限定了类体的范围,方法名后面的大括号限定了方法体的范围

建议:

  • 一个源文件中可以有多个类,每一个类中都可以存在main方法
  • 源文件中有多少个类,编译后会生成多少个.class字节码文件。
  • 建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。
  • 对代码进行修改后 一定要重写编译再运行才是修改的结果
  • java中使用大括号限定范围,例如:HelloWorld的后面有一对大括号{ },此对大括号 限定了类的范围。main方法的范围也是尤其后面的大括号来限定的。

在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。出现了bug:我们要多看,多思考,多查资料,多尝试,多总结。

HelloWorld案例常见问题如下所示:

HelloWorld案例常见错误总结:

  • 源文件扩展名被隐藏,文件名称的后缀必须是java结尾
  • 文件名称必须与代码的类名称一致。
  • 大小写错误,单词拼写错误
  • 存在中文符号,源文件中必须使用英文模式下的符号。
  • 括号不配对。
  • 编译或者执行命令使用不当。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180331.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix6.4监控centos

1、关闭防火墙 setenforce 0 #关闭SELinux sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #设置永久关闭SELinux systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service …

OPCUA 行业配套标准:机器人

OPC UA 定义了对象,对象类型,结构化组织能力和定义对象之间关系的能力,利用这些基础和衍生类型及对象,用户还可以搭建出更复杂的类型,关系和对象。 如果不同的厂商或者用户定义的信息模型不同,将会影响系统…

【蓝桥杯省赛真题41】Scratch电脑开关机 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch电脑开关机 一、题目要求 编程实现 二、案例分析 1、角色分析

CMU/MIT/清华/Umass提出生成式机器人智能体RoboGen

文章目录 导读1. Introduction2. 论文地址3. 项目主页4. 开源地址5. RoboGen Pipeline6. Experimental Results作者介绍Reference 导读 CMU/MIT/清华/Umass提出的全球首个生成式机器人智能体RoboGen,可以无限生成数据,让机器人7*24小时永不停歇地训练。…

STM32笔记-AD模数转换

目录 一、ADC介绍 二、ADC主要特征 三、ADC框图 1. ​​​​ 外部触发转换 ​ 2. 转换模式 3. 输入通道 4. 逻辑框图 四、校准 五、数据对齐 六、AD转换步骤 七、AD_Init(单通道AD转换)初始化函数配置 一、ADC介绍 1. 12位ADC是一种逐次逼近型模拟数字转换器。它有多达…

基于SSM的购物商城网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

HttpClient基本使用

十二、HttpClient 12.1 介绍 HttpClient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。 HttpClient作用: 发送HTTP请求接收响应数据 …

算法:Java构建二叉树并递归实现二叉树的前序、中序、后序遍历

先自定义一下二叉树的类: // Definition for a binary tree node. public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left…

Ubuntu20.04下安装Redis环境

apt安装Redis环境 更新apt-get安装镜像源 安装Redis sudo apt-get install -y redis-server设置密码 # 编辑Redis的配置文件redis.conf,如果不知道配置文件的位置可以执行whereis redis.conf查看 sudo vim /etc/redis/redis.conf取消文件中的requirepass注释&am…

Linux之管道

管道 管道什么是管道匿名管道readpipe 应用有名管道mkfifoopenunlinkcopy on write 管道 什么是管道 管道是Linux中最古老的进程间通信的方式 我们把一个进程连接到另一个进程的一个数据流称作 一个管道 注意:管道只能单向通信 你可以把他看做是一种特殊的文件&…

Prometheus+Node_exporter+Grafana实现监控主机

PrometheusNode_exporterGrafana实现监控主机 如果没有安装相关的配置,首先要进行安装配置,环境是基于Linux,虚拟机的相关环境配置在文末给出,现在先讲解PrometheusNode_exporterGrafana的安装和使用。 一.Prometheus安装 虽然…

详解RSA加密算法 | Java模拟实现RSA算法

目录 一.什么是RSA算法 二.RSA算法的算法原理 算法描述 三.RSA算法安全性 四.RSA算法的速度 五.用java实现RSA算法 一.什么是RSA算法 1976年,Diffie和Hellman在文章“密码学新方向(New Direction in Cryptography)”中首次提出了公开…

WSL安装Ubuntu

先安装wsl2 安装Ubuntu 打开windows商店,搜索对应版本的Ubuntu,点击获取进度跑完后,点击打开,就可以完成安装 删除Ubuntu版本 wsl --unregister Ubuntu-18.04安装位置迁移 正常情况下Ubuntu是被安装在C盘,我们需要…

【python基础】python切片—如何理解[-1:],[:-1],[::-1]的用法

文章目录 前言一、基本语法二、切片1.a[i:j]2.a[i:j:k] 总结:[-1] [:-1] [::-1] [n::-1] 前言 在python中,序列是python最基本的数据结构,包括有string,list,tuple等数据类型,切片对序列型对象的一种索引方…

Plist编辑软件 PlistEdit Pro mac中文版功能介绍

PlistEdit Pro mac是一款功能强大的Plist文件编辑软件。Plist文件是苹果公司开发的一种XML文件格式,用于存储应用程序的配置信息和数据。PlistEdit Pro可以帮助用户轻松地编辑和管理Plist文件。 PlistEdit Pro具有直观的用户界面和丰富的功能。用户可以使用该软件打…

C++ 多态 纯干货讲解 复制可调试(1)

💯 博客内容:多态 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准C后端工程师,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这里是CSD…

Leetcode—1588.所有奇数长度子数组的和【简单】

2023每日刷题&#xff08;十九&#xff09; Leetcode—1588.所有奇数长度子数组的和 直接法实现代码 int sumOddLengthSubarrays(int* arr, int arrSize){int i 1;int sum 0;int left 0, right;int k;int j 0;while(i < arrSize) {for(left 0; left < arrSize; lef…

[每周一更]-(第70期):常用的GIT操作命令

1、增删文件 # 添加当前目录的所有文件到暂存区 $ git add .# 添加指定文件到暂存区 $ git add <file1> <file2> ...# 添加指定目录到暂存区&#xff0c;包括其子目录 $ git add <dir># 删除工作区文件&#xff0c;并且将这次删除放入暂存区 $ git rm [file…

[计算机网络]认识“协议”

认识“协议” 文章目录 认识“协议”序列化和反序列化网络计算器引入Sock类设计协议编写服务端类启动服务端编写客户端类启动客户端程序测试 序列化和反序列化 在网络体系结构中&#xff0c;应用层的应用程序会产生数据&#xff0c;这个数据往往不是简单的一段字符串数据&…

Android Studio布局

线性布局 水平或竖直排列子元素的布局容器 相对布局 可针对容器内每个子元素设置相对位置&#xff08;相对于父容器或同级子元素的位置&#xff09; 网格布局 找了下面这篇文章连接可以参考&#xff08;不再赘述&#xff09; GridLayout(网格布局) | 菜鸟教程 (runoob.com) …