java基础语法(上)

Java 基本语法

1. 关键字与保留字

1.1 关键字 (keyword) 的定义和特点

定义：被 Java 语言赋予了特殊含义，用做专门用途的字符串（单词）

特点：关键字中所有字母都为小写

官方地址 (点击跳转)

1.2 保留字 (reserved word)

Java 保留字：现有 Java 版本尚未使用，但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字。goto 、const

1.3 标识符 (Identifier)

标识符：

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。

技巧：凡是自己可以起名字的地方都叫标识符。

定义合法标识符规则：

由 26 个英文字母大小写，0-9 ，_或 $ 组成

数字不可以开头。

不可以使用关键字和保留字，但能包含关键字和保留字。

Java 中严格区分大小写，长度无限制。

标识符不能包含空格。

1.4Java 中的名称命名规范：

包名：多单词组成时所有字母都小写：xxxyyyzzz

类名、接口名：多单词组成时，所有单词的首字母大写：XxxYyyZzz

变量名、方法名：多单词组成时，第一个单词首字母小写，第二个单词开始每个单词首字母大写：xxxYyyZzz

常量名：所有字母都大写。多单词时每个单词用下划线连接：XXX_YYY_ZZZ

2. 变量

2.1 变量的概念：

内存中的一个存储区域

该区域的数据可以在同一类型范围内不断变化

变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

2.2 变量的作用：

用于在内存中保存数据

2.3 使用变量注意：

Java 中每个变量必须先声明，后使用

使用变量名来访问这块区域的数据

变量的作用域：其定义所在的一对 { } 内

变量只有在其作用域内才有效

同一个作用域内，不能定义重名的变量

2.4 声明变量

语法：<数据类型> < 变量名称 >

例如：int var;

2.5 变量的赋值

语法：<变量名称> = < 值 >

例如：var = 10;

2.6 声明和赋值变量

语法： <数据类型> < 变量名 > = < 初始化值 >

例如：int var = 10;

2.7 变量的分类 - 按数据类型

对于每一种数据都定义了明确的具体数据类型（强类型语言），在内存中分配了不同大小的内存空间。

补充：变量的分类 - 按声明的位置的不同

在方法体外，类体内声明的变量称为成员变量。

在方法体内部声明的变量称为局部变量。

注意：二者在初始化值方面的异同

同：都有生命周期 异：局部变量除形参外，需显式初始化

2.8 整数类型：byte、short、int、long

Java 各整数类型有固定的表数范围和字段长度，不受具体 OS 的影响，以保证 java 程序的可移植性。

java 的整型常量默认为 int 型，声明 long 型常量须后加‘l’或‘L’

java 程序中变量通常声明为 int 型，除非不足以表示较大的数，才使用 long

Copy
public class VariableTest {
public static void main(String[] args) {
int number1;
number1 = 10;
int number2;
number2 = 20;
int number3;
number3 = number1 + number2;
System.out.println("Number3 = " + number3);
int number4 = 50;
int number5 = number4 - number3;
System.out.println("Number5 = " + number5);
}
}

2.9 浮点类型：float、double

与整数类型类似，Java 浮点类型也有固定的表数范围和字段长度，不受具体操作系统的影响。

浮点型常量有两种表示形式：

十进制数形式：如：5.12 512.0f .512 (必须有小数点）

科学计数法形式：如：5.12e2 512E2 100E-2

float: 单精度，尾数可以精确到 7 位有效数字。很多情况下，精度很难满 足需求。double: 双精度，精度是 float 的两倍。通常采用此类型。

Java 的浮点型常量默认为 double 型，声明 float 型常量，须后加‘f’或‘F’。

2.10 字符类型：char

char 型数据用来表示通常意义上 “字符”(2 字节)

Java 中的所有字符都使用 Unicode 编码，故一个字符可以存储一个字
母，一个汉字，或其他书面语的一个字符。

字符型变量的三种表现形式：

字符常量是用单引号 (‘ ’) 括起来的单个字符。例如：char c1 = 'a'; char c2= ' 中 '; char c3 = '9';

Java 中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。
例如：char c3 = ‘\n’; // '\n' 表示换行符

直接使用 Unicode 值来表示字符型常量：‘\uXXXX’。其中，XXXX 代表
一个十六进制整数。如：\u000a 表示 \n。

char 类型是可以进行运算的。因为它都对应有 Unicode 码。

2.11 布尔类型：boolean

boolean 类型用来判断逻辑条件，一般用于程序流程控制：

if 条件控制语句；
while 循环控制语句；
do-while 循环控制语句；
for 循环控制语句；

boolean 类型数据只允许取值 true 和 false，无 null。

不可以使用 0 或非 0 的整数替代 false 和 true，这点和 C 语言不同。

Java 虚拟机中没有任何供 boolean 值专用的字节码指令，Java 语言表达所操作的 boolean 值，在编译之后都使用 java 虚拟机中的 int 数据类型来代替：true 用 1 表示，false 用 0 表示。———《java 虚拟机规范 8 版》

2.12 基本数据类型转换

自动类型转换：容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为：
-

有多种类型的数据混合运算时，系统首先自动将所有数据转换成容量最大的那种数据类型，然后再进行计算。

byte,short,char 之间不会相互转换，他们三者在计算时首先转换为 int 类型。

boolean 类型不能与其它数据类型运算。

当把任何基本数据类型的值和字符串 (String) 进行连接运算时 (+)，基本数据类型的值将自动转化为字符串 (String) 类型。

2.13 字符串类型：String

String 不是基本数据类型，属于引用数据类型

使用方式与基本数据类型一致。例如：String str = “abcd”;

一个字符串可以串接另一个字符串，也可以直接串接其他类型的数据。例如：str = str + “xyz” ; int n = 100; str = str + n

Copy
public class StringTest {
public static void main(String[] args) {
int no = 10;
String str = "abcdef";
String str1 = str + “xyz” + no;
str1 = str1 + "123";
char c = '国';
double pi = 3.1416;
str1 = str1 + pi;
boolean b = false;
str1 = str1 + b;
str1 = str1 + c;

System.out.println("str1 = " + str1);
}
}

2.14 强制类型转换

自动类型转换的逆过程，将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符：()，但可能造成精度降低或溢出，格外要注意。

通常，字符串不能直接转换为基本类型，但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。

如： String a = “43”; int i = Integer.parseInt (a);

boolean 类型不可以转换为其它的数据类型。

3. 运算符

运算符是一种特殊的符号，用以表示数据的运算、赋值和比较等。

算术运算符
赋值运算符
比较运算符（关系运算符）
逻辑运算符
位运算符
三元运算符

3.1 运算符：算术运算符

算术运算符的注意问题

如果对负数取模，可以把模数负号忽略不记，如：5%-2=1。 但被模数是负数则不可忽略。此外，取模运算的结果不一定总是整数。

对于除号 “/”，它的整数除和小数除是有区别的：整数之间做除法时，只保留整数部分而舍弃小数部分。

“+” 除字符串相加功能外，还能把非字符串转换成字符串。

3.2 运算符：赋值运算符

符号：=
当 “=” 两侧数据类型不一致时，可以使用自动类型转换或使用强制
类型转换原则进行处理。
支持连续赋值。

扩展赋值运算符： +=, -=, *=, /=, %=

比较运算符的结果都是 boolean 型，也就是要么是 true，要么是 false。

比较运算符 “==” 不能误写成 “=” 。

3.3 运算符：逻辑运算符

&— 逻辑与 | — 逻辑或 ！— 逻辑非
&& — 短路与 || — 短路或 ^ — 逻辑异或

逻辑运算符用于连接布尔型表达式，在 Java 中不可以写成 3<x<6，应该写成 x>3 & x<6 。

“&” 和 “&&” 的区别：
单 & 时，左边无论真假，右边都进行运算；
双 & 时，如果左边为真，右边参与运算，如果左边为假，那么右边不参与运算。

“|” 和 “||” 的区别同理，|| 表示：当左边为真，右边不参与运算。

异或 (^) 与或 ( | ) 的不同之处是：当左右都为 true 时，结果为 false。

异或，追求的是 “异”!（相同为 0，不同为 1）

3.4 运算符：位运算符

位运算是直接对整数的二进制进行的运算

3.5 运算符：三元运算符

格式:
(条件表达式)? 表达式 1：表达式 2；
为 true，运算后的结果是表达式 1；
为 false，运算后的结果是表达式 2；
表达式 1 和表达式 2 为同种类型
三元运算符与 if-else 的联系与区别：
1）三元运算符可简化 if-else 语句
2）三元运算符要求必须返回一个结果。
3）if 后的代码块可有多个语句

运算符的优先级