1.Java语法基础

1.1 Java关键字和保留字

Java关键字表

Java关键字

  • abstract 表明类或者成员方法具有抽象属性
  • assert 用来进行程序调试
  • boolean 基本数据类型之一,布尔类型
  • break 提前跳出一个块
  • byte 基本数据类型之一,字节类型
  • case 用在switch语句之中,表示其中的一个分支
  • catch 用在异常处理中,用来捕捉异常
  • char 基本数据类型之一,字符类型
  • class 类
  • const 保留关键字,没有具体含义
  • continue 回到一个块的开始处
  • default 默认,例如,用在switch语句中,表明一个默认的分支
  • 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 用在循环结构中

Java保留字

「保留字」在现有 Java版本尚未使用,但以后版本可能会作为关键字使用,命名时要避免。

  • byValue
  • cast
  • future
  • generic
  • inner
  • operator
  • outer
  • rest
  • var
  • goto
  • const

1.2 Java注释

注释规约:

  1. 类、字段、方法必须使用文档注释,不能使用单行注释和多行注释。
  2. 所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
  3. 所有的类都必须添加创建者和创建日期。
  4. 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
  5. 代码修改的同时,注释也要进行相应的修改。
1
2
3
4
5
单行注释通常用于解释方法内某单行代码的作用。
public void method() {
// age 用于表示年龄
int age = 18;
}
1
2
3
4
5
6
7
/*
age 用于表示年纪
name 用于表示姓名
*/
int age = 18;
String name = "LixHui";
以 /* 开始,以 */ 结束
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
文档注释可用在三个地方,类、字段和方法,用来解释它们是干嘛的。
/**
* Java基础语法
*/
public class Demo {
/**
* 姓名
*/
private int age;

/**
* main 方法作为程序的入口
*
* @param args 参数
*/
public static void main(String[] args) {

}
}

1.2 Java数据类型

数据类型分类

Java数据类型
  • 基本数据类型是 Java 语言操作数据的基础,包括 boolean、char、byte、short、int、long、float 和 double,共 8 种。

  • 除了基本数据类型以外的类型,都是所谓的引用类型。常见的有数组(对,没错,数组是引用类型,后面我们会讲)、class(也就是类),以及接口(指向的是实现接口的类的对象)。

比特和字节

  • bit(比特):作为信息技术的最基本存储单位,简写为小写字母“b”。
  • Byte(字节):通常来说,一个英文字符是一个字节,一个中文字符是两个字节。字节与比特的换算关系是:1 字节 = 8 比特。

基本数据类型

  • boolean:仅用于存储两个值:true 和 false,也就是真和假,通常用于条件的判断。
  • byte:一个字节可以表示 2^8 = 256 个不同的值。由于 byte 是有符号的,它的值可以是负数或正数,其取值范围是 -128 到 127(包括 -128 和 127)。
  • short:取值范围在 -32,768 和 32,767 之间,包含 32,767。
  • int:取值范围在 -2,147,483,648(-2 ^ 31)和 2,147,483,647(2 ^ 31 -1)(含)之间。
  • long:取值范围在 -9,223,372,036,854,775,808(-2^63) 和 9,223,372,036,854,775,807(2^63 -1)(含)之间。
  • float:单精度的浮点数(单精度浮点数的有效数字大约为 6 到 7 位),32 位(4 字节),遵循 IEEE 754(二进制浮点数算术标准),取值范围为 1.4E-45 到 3.4E+38。float 不适合用于精确的数值,比如说金额。
  • double:双精度浮点数(双精度浮点数的有效数字大约为 15 到 17 位),占 64 位(8 字节),也遵循 IEEE 754 标准,取值范围大约 ±4.9E-324 到 ±1.7976931348623157E308。double 同样不适合用于精确的数值,比如说金额。
  • char:用于表示 Unicode 字符,占 16 位(2 字节)的存储空间,取值范围为 0 到 65,535。

单精度和双精度

单精度(single-precision)和双精度(double-precision)是指两种不同精度的浮点数表示方法。

  • 单精度是这样的格式,1 位符号,8 位指数,23 位小数。单精度浮点数通常占用 32 位(4 字节)存储空间。数值范围大约是 ±1.4E-45 到 ±3.4028235E38,精度大约为 6 到 9 位有效数字。
  • 双精度是这样的格式,1 位符号,11 位指数,52 为小数。双精度浮点数通常占用 64 位(8 字节)存储空间,数值范围大约是 ±4.9E-324 到 ±1.7976931348623157E308,精度大约为 15 到 17 位有效数字。

int和char类型互转

  1. 可以通过强制类型转换将整型 int 转换为字符 char。
  2. 可以使用 Character.forDigit() 方法将整型 int 转换为字符 char,参数 radix 为基数,十进制为 10,十六进制为 16。
  3. 可以使用 int 的包装器类型 Integer 的 toString() 方法+String 的 charAt() 方法转成 char。
  4. char 转 int,如果只是简单的 char 转 int,直接赋值就可以了。

1.3 Java运算符

Java运算符

算术运算符

  • “+”,“-”,“*”,“/”,“%”

关系运算符

关系运算符

位运算符

关系运算符

逻辑运算符

  • 逻辑与运算符(&&):多个条件中只要有一个为 false 结果就为 false。
  • 逻辑或运算符(||):多个条件只要有一个为 true 结果就为 true。
  • 逻辑非运算符(!):用来反转条件的结果,如果条件为 true,则逻辑非运算符将得到 false。
  • 单逻辑与运算符(&):很少用,因为不管第一个条件为 true 还是 false,依然会检查第二个。
  • 单逻辑或运算符(|):也会检查第二个条件。

赋值运算符

  • int a=10;
  • int b=20;
  • a+=4; //a=a+4 (a=10+4)
  • b-=4; //b=b-4 (b=20-4)

三元运算符

三元运算符用于替代 if-else,可以使用一行代码完成条件判断的要求。

1
2
3
4
int a=2;
int b=5;
int min=(a<b)?a:b;
// 如果 ? 前面的条件为 true,则结果为 : 前的值,否则为 : 后的值。

1.4 Java流控制语句

if-else相关

1
2
3
if(布尔表达式){  
// 如果条件为 true,则执行这块代码
}
1
2
3
4
5
if(布尔表达式){  
// 条件为 true 时执行的代码块
}else{
// 条件为 false 时执行的代码块
}
1
2
3
4
5
6
7
8
9
10
11
12
if(条件1){  
// 条件1 为 true 时执行的代码
}else if(条件2){
// 条件2 为 true 时执行的代码
}
else if(条件3){
// 条件3 为 true 时执行的代码
}
...
else{
// 以上条件均为 false 时执行的代码
}
1
2
3
4
5
6
if(外侧条件){    
// 外侧条件为 true 时执行的代码
if(内侧条件){
// 内侧条件为 true 时执行的代码
}
}

switch语句

1
2
3
4
5
6
7
8
9
10
11
12
switch(变量) {    
case 可选值1:
// 可选值1匹配后执行的代码;
break; // 该关键字是可选项
case 可选值2:
// 可选值2匹配后执行的代码;
break; // 该关键字是可选项
......

default: // 该关键字是可选项
// 所有可选值都不匹配后执行的代码
}

for循环

1
2
3
for(初始变量;条件;自增/自减){  
// 循环体
}
1
2
3
for(元素类型 元素 : 数组或集合){  
// 要执行的代码
}
1
2
3
for(;;){
System.out.println("停不下来。。。。");
}

while循环

1
2
3
while(条件){  
//循环体
}
1
2
3
4
5
do{  
// 循环体
}while(提交);

do-while循环至少执行一次

break && continue

1
2
3
4
5
6
7
8
9
break 关键字通常用于中断循环或 switch 语句,它在指定条件下中断程序的当前流程。如果是内部循环,则仅中断内部循环。
可以将 break 关键字用于所有类型循环语句中,比如说 for 循环、while 循环,以及 do-while 循环。

for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
1
2
3
4
5
6
7
8
9
10
11
当我们需要在 for 循环或者 (do)while 循环中立即跳转到下一个循环时,就可以使用 continue 关键字,通常用于跳过指定条件下的循环体,如果循环是嵌套的,仅跳过当前循环。

for (int i = 1; i <= 10; i++) {
if (i == 5) {
// 使用 continue 关键字
continue;// 5 将会被跳过
}
System.out.println(i);
}

输出:1 2 3 4 6 7 8 9 10 (5被跳过)