java小白零基础学习记录2:基础知识二与HelloWorld程序
这里先介绍编译运行相关知识,然后解释一下程序。初学Java,随手记录所学。希望各位大佬帮忙指点。谢谢。
1、编译运行与相关知识介绍
(1)编译文件
编译文件使用的是使用javac命令,我们要先打开DOS命令窗口,测试javac命令是否可以使用。如果无法使用,可能是环境变量没有配置,或者配置进了用户变量里面。
环境变量包括系统变量和用户变量:
系统变量:范围比较大,系统变量会让计算机所有用户都起作用
用户变量:范围比较小,这个变量只作用于当前用户
我们使用下面两个命令测试是否配置完成环境变量:
javac -version:查看编译器版本
Java -version:查看虚拟机版本
javac命令使用方法:javac Java源文件的路径
在java文件目录下,直接选上路径然后cmd回车,可以直接将DOS命令窗口定位到当前目录。
(2)文件的运行
前提:class文件已经生成
Java命令的用法:java 类名(Java HelloWorld.class这种写法是错误的)
这里介绍一下类名,一般Xxx.class文件,我们就叫它Xxx类。(具体后面讲解程序的时候说)
例如:Java HelloWorld
步骤:先使用cd命令切换到Xxx.class文件所在的路径→执行Java
Xxx(或者:在class文件目录下,直接选上路径然后cmd回车→执行Java Xxx)
(3)"Java.HelloWorld"的执行过程以及原理
启动JVM------>JVM启动"类加载器classoader"------->类加载器找到对应的字节码文件(如果找不到会报 错误: 找不到或无法加载主类)装载到JVM中,JVM启动"解释器"将字节码解释为 二进制码---->操作系统执行二进制码与硬件交互。
类加载器的作用:加载类。本质是类加载器去硬盘上找"类"对应的"字节码"文件。这里有些人操作是正确的,但是无法得到结果。可能是因为配置了claspath环境变量。
classpath环境变量:classpath环境变量隶属于Java,而path环境变量隶属于系统。Classpath环境变量一般表现为:classpath=A路径;B路径;C路径…
A路径;B路径;C路径…是变量值。配置了之后只会在配置的路径下寻找,不会在当前路径下寻找。这个时候我们只需要在classpath里面加上当前目录这路径即可。当前 目录这个路径是一个“.”上一篇博客有介绍。
让我们看一下运行结果:

2、HelloWorld程序的解释
详细见程序注释(见图):
介绍一**释种类的用法与用法
//单行注释:只注释两个斜杠后面的信息(从//开始算起,//前面的都不算注释)
----------------------------分割线----------------------------------------------------------
/*
这是多行注释,这个区域内的信息都是注释。(从第一个/*一直到*/之间的内容都是注释,无论写了几行)
*/
----------------------------分割线---------------------------------------------------------
/**
*类的注释信息(javadoc注释)
*@version 1.0
*@author ycy
*…
*(javadoc注释可以被javadoc命令识别,识别之后会把注释内容生成到帮助文档里)
*(特点是,每行的开头必须有*)
*/
3、相关书写规则与规范介绍
1、标识符
在java源代码中,凡是程序员有权利命名的单词都是标识符
详细解释见“identifier.java”文件(如图):
2、标识符命名规则
规则1:标识符只能由数字、字母(包括中文)、下划线、美元符号$组成。
规则2:标识符不能以数字开头
规则3:关键字不能做标识符(例如:public、class…)
规则4:标识符是严格区分大小写的(但是对于类名来说,如果一个源文件中同时定义了A和a那么只生成一个。见“text2.java”见下图):
规则5:理论上无长度限制
3、标识符命名规范
规则与规范的区别:规则(法律)必须遵守;规范(道德)可以不遵守,但一般不允许。
规范1:见名知意
规范2:遵循驼峰命名方式(有利于单词与单词之间进行分隔,例如:HelloWorld)
规范3:类名、接口名有特殊要求(首字母大写,后面每个单词首字母大写,例如:UserText)
规范4:变量名、方法名有特殊要求(首字母小写,后面每个单词首字母大写,例如:mingZi)
规范5:所有常量名全部大写,并且单词之间采用下划线连接(USER_AGE)
4、关键字
关键字的定义:sun公司开发Java语言时定义好的一些具有特殊含义的单词,全部是小写。不能用作标识符。下图是Java语言中的关键字:
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
5、public class与class的区别
5.1、public的类可以没有,但如果有,public修饰的类名必须与源文件名保持一致。且只能有一个。(如果没有按照要求书写会出现下面的情况):
5.2 一个Java源文件中可以定义多个class,一个class的定义会生成一个class文件。
5.3 每个类都可以编写入口(一般不这么写)(这种情况和上面的一起实验)如图:
下一篇博客会写数据的相关知识,下周大概会更新三到四篇。欢迎各位大佬前来指点与教学!