目录
一、语法格式
1、Java的基本语法格式
[修饰符] class 类名{
程序代码
}
➢编写Java程序代码时,需要特别注意几个关键点:
①Java中的程序可分为结构定义语句和功能执行语句。
②Java语言是严格区分大小写的。
③在编写Java代码时,为了便于阅读,通常会使用一种良好的格式进行排版。
public class HelloWorld {
public static void main(String[] args)
System.out.println("这是第一个Java程序!");
}
}
二、关键字
1、关键字的定义和特点
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写,JDK 8中有50个关键字,这些关键字都是小写的
用于定义数据类型的关键字
class | interface | enum | byte | short |
---|---|---|---|---|
int | long | float | double | char |
boolean | void |
用于定义数据类型值的关键字
true | false | null |
---|
用于定义流程控制的关键字
if | else | switch | case | default |
---|---|---|---|---|
while | do | for | break | continue |
return |
用于定义访问权限修饰符的关键字
private | protected | public |
---|
用于定义类,方法,变量修饰符的关键字
abstract | final | static | synchronized |
---|
用于定义类与类之间关系的关键字
extends | implements |
---|
用于定义建立实例及引用实例,判断实例的关键字
new | this | super | instanceof |
---|
用于异常处理的关键字
try | catch | finally | throw | throws |
---|
用于包的关键字
package | import |
---|
其他修饰符关键字
native | strictfp | transient | volatile | assert |
---|
三、标识符
1、Java中的标识符
定义:在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。
组成:标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,也不能是Java中的关键字。
➢合法标识符示例:
username
username123
user_name
_userName
➢非法标识符示例:
123username // 不能以数字开头
class // 不能是关键字
Hello W orld // 不能包含空格特殊字符
2、Java标识符-通用规范
-
包名所有字母一律小写。例如:com.hpe.example。
-
类名和接口名每个单词的首字母都要大写。例如:ArrayList、Iterator。
-
常量名所有字母都大写,单词之间用下划线连接。例如:DAY_OF_MONTH。
-
变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写。例如:lineNumber、getLineNumber。
-
在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用userName表示用户名,password表示密码。
四、变量
1、变量的定义
变量的概念:
- 内存中的一个存储区域
- 该区域有自己的名称(变量名)和类型(数据类型)
- Java中每个变量必须先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化
2、变量的语法格式
➢变量的基本语法格式如下:
变量类型 变量名 [= 初始值];
变量类型决定了变量的数据性质、范围、存储在内存中所占的字节数以及可以进行的合法操作;
变量名必须是一个合法的标识符;
[ ]中的内容是可选项,即在定义变量的同时,可以对该变量进行初始化赋值。
➢变量的定义示例:
int x = 0,y;
y = x+3;
➢变量x和y在内存中的状态变化图:
3、变量的分类
按被声明的位置划分:
- 成员变量:方法外部、类的内部定义的变量
- 局部变量:方法或语句块内部定义的变量
- 注意:类外面(类对应的大括号外面)不能有变量的声明
按所属的数据类型划分: - 基本数据类型变量
- 引用数据类型变量
Java是一门强类型的编程语言,Java对每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。
3.1、整数类型:byte、short、int、long
Java各整数类型有固定的表示范围和字段长度,不受具体操作系统的影响,以保证java 程序的可移植性。
Java 的整型常量默认为int型,声明long 型常量须后加‘l’(小写L) 或‘L’。
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -128 ~ 127 |
short | 2字节 | -215~215-1 |
int | 4字节 | -231~ 231-1 |
long | 8字节 | -263~ 263-1 |
3.2、浮点类型:float、double
与整数类型类似,Java 浮点类型也有固定的表示范围和字段长度,不受具体操作系统的影响。
Java 的浮点型常量默认为double 型,声明float 型常量,须后加‘f’ 或‘F’。
浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
类型 | 占用存储空间 | 表数范围 |
---|---|---|
单精度float | 4字节 | -3.403E38 ~ 3.403E38 |
双精度double | 8字节 | -1.798E308 ~ 1.798E308 |
3.3、字符类型:char
- 字符类型变量用于存储一个单一字符,在Java中用char表示。
- Java中每个char类型的字符变量都会占用2个字节。
- 在给char类型的变量赋值时,需要用一对英文半角格式的单引号(’ ‘)把字符括起来,如’a’,也可以将char类型的变量赋值为0~65535范围内的整数,计算机会自动将这些整数转化为所对应的字符,如数值97对应的字符为’a’。
char c = ‘a’; // 为一个char类型的变量赋值字符’a’
char ch= 97; // 为一个char类型的变量赋值整数97,相当于赋值字符
3.4、布尔类型:boolean
boolean类型适于逻辑运算,一般用于程序流程控制:
- if条件控制语句;
- while循环控制语句;
- do-while循环控制语句;
- for循环控制语句;
boolean类型数据只允许取值true和false,不可以0或非0的整数替代true和false,这点和C语言不同。
五、数据类型
1、变量的类型转换
1.1、自动类型转换
自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换。
自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
byte,short,char三者在计算时首先转换为int类型。
当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
1.2、强制类型转换
数据类型转换强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。
➢强制类型转换语法格式:
目标类型变量名 = (目标类型)值;
将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,要格外注意。
字符串转换为基本数据类型,需要通过基本类型对应的包装类提供的parseXXX方法。
2、常量
定义:Java中的常量,其实就是特殊的变量,也是固定不变的量,有且只能进行一次赋值。
语法:Java中定义常量的语法也非常简单,只需要在定义变量的语法基础上加上一个final关键字修饰即可。
➢Java中的常量的语法格式:
final 常量类型 常量名 [= 初始值];
➢Java中的常量的使用示例:
final int a=0, b; // 定义一个int类型的常量a和b
b= 1; // 后续为常量b赋值
3、转义字符
3.1、转义符——反斜杠(\)
定义:在字符常量中,反斜杠(\)是一个特殊的字符,被称为转义符,它的作用是用来转义紧随其后的一个字符。
说明:转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如“\n”表示换行。
3.2、常见转义字符
\r :表示回车,将光标定位到当前行的开头,不会跳到下一行。
\n :表示换行,换到下一行的开头。
\t :表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab键一样。
\\:表示反斜杠转义字符,由于在Java代码中的斜杠(\)是转义符,因此需要表示字面意义上的\,就需要使用双斜杠\。
六、运算符
所谓运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。
1、算术运算符
Java中的算术运算符就是用来处理四则运算的符号。也是最简单和最常用的运算符号。
算术运算符分类说明:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b; | -4 |
+ | 加 | 5+3 | 8 |
- | 减 | 9-3 | 6 |
* | 乘 | 2*6 | 12 |
/ | 除(即算数中整除的结果) | 7/5 | 1 |
% | 取模(即算术中的求余数) | 7%5 | 2 |
++ | 自增(前) | a=2;b=++a; | a=3;b=3; |
++ | 自增(后) | a=2;b=a++; | a=3;b=2; |
– | 自减(前) | a=2;b=–a; | a=1;b=1; |
– | 自减(后) | a=2;b=a–; | a=1;b=2; |
算术运算符的注意问题:
-
在进行自增(++)和自减(–)的运算时,如果运算符(++或–)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。
-
在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数;如果除法运算有小数参与,得到的结果会是一个小数。
-
在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
2、赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。它将运算符右边的值赋给左边的变量。
赋值运算符分类说明:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3;b=2; | a=3;b=2; |
+= | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
-= | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
注意事项:
-
在Java中可以通过一条赋值语句对多个变量进行赋值。
-
在赋值运算符中,除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。其余的-=、*=、/=、%=赋值运算符都可依此类推。
在使用+=、-=、*=、/=、%= 赋值运算符时,需要进行的强制类型转换会自动完成,程序不需要做任何显式地声明。
public class Demo {
public static void main(String[] args) {
short s = 3;
int i= 5;
s += i;
System.out.println("s = " + s);
}
}
3、比较运算符
用来对两个数值或变量进行比较。其结果是布尔类型的true或false。
比较运算符分类说明:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 等于 | 4==2 | false |
!= | 不等于 | 4!=2 | ture |
< | 小于 | 4<2 | false |
> | 大于 | 4>2 | ture |
<= | 小于等于 | 4<=2 | false |
>= | 大于等于 | 4>=2 | ture |
4、逻辑运算符
是用于对布尔类型的值或表达式进行逻辑判断的符号。其返回值类型是布尔类型。
逻辑运算符分类说明:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
& | 与 | a & b | a和b都为true,结果为true,否则为false |
I | 或 | a I b | a和b中只要有一个为true,则结果为true,否则为false |
^ | 异或 | A ^ b | a与b不同,结果为true,否则为false |
! | 非 | ! A | 若a为false,结果为true,否则相反 |
&& | 短路与 | a && b | a和b都为true,结果为true,否则为false |
II | 短路或 | a II b | a和b中只要有一个为true,则结果为true,否则为false |
注意事项:
-
逻辑运算符可以针对结果为布尔值的表达式进行逻辑运算。如:5 > 3 && 1 != 0的结果为true。
-
运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。
-
“&”和“&&”的区别:在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。
-
运算符“|”和“||”都表示或操作,当运算符任何一边的操作数或表达式为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。
-
运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。
5、条件运算符
条件运算符也称作三元运算符(或三目运算符),由符号“? :”组合构成。对布尔类型的表达式判断,如果为true,就执行冒号“:”前面的表达式,否者执行后面的表达式。
➢条件运算符的语法格式:
(boolean_expr) ? true_statement : false_statement;
规则:先判断boolean_expr的值,如果为true,就执行表达式true_statement,否者执行表达式false_statement。
➢条件运算符的使用示例:
int store = 5;
System.out.println(store <=0 ? "没有库存啦" : "库存量为:"+store);// 输出结果为“库存量为:5”
6、运算符优先级
运算符的优先级——优先级列表
优先级 | 运算符 |
---|---|
1 | . [] () |
2 | ++ – ~ ! |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | I |
11 | && |
12 | II |
13 | ? : |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= |