1.Java语法基础
1.1 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注释
注释规约:
- 类、字段、方法必须使用文档注释,不能使用单行注释和多行注释。
- 所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
- 所有的类都必须添加创建者和创建日期。
- 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
- 代码修改的同时,注释也要进行相应的修改。
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数据类型
数据类型分类
比特和字节
- 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类型互转
- 可以通过强制类型转换将整型 int 转换为字符 char。
- 可以使用 Character.forDigit() 方法将整型 int 转换为字符 char,参数 radix 为基数,十进制为 10,十六进制为 16。
- 可以使用 int 的包装器类型 Integer 的 toString() 方法+String 的 charAt() 方法转成 char。
- char 转 int,如果只是简单的 char 转 int,直接赋值就可以了。
1.3 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 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被跳过)
|