Java基本语法
2021/7/29 11:05:47
本文主要是介绍Java基本语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2. Java基本语法
2.1 关键字和保留字
关键字的定义和特点
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
保留字
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使 用。自己命名标识符时要避免使用这些保留字
2.2 标识符
标识符:Java 对各种变量、方法和类等要素命名时使用的字符序列。
定义规则
- 由26个英文字母大小写,0-9 ,_或 $ 组成
- 数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。
- 标识符不能包含空格。
Java中的名称命名规范
- 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
2.3 变量
变量的概念
- 内存中的一个存储区域
- 该区域的数据可以在同一类型范围内不断变化
- 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
变量的作用
- 用于在内存中保存数据
使用变量的注意事项
- Java中每个变量必须先声明,后使用
- 使用变量名来访问这块区域的数据
- 变量的作用域:其定义所在的一对{ }内
- 变量只有在其作用域内才有效 同一个作用域内,不能定义重名的变量
声明变量
语法:<数据类型> <变量名称>
变量的赋值
语法:<变量名称> = <值>
声明和赋值变量
语法: <数据类型> <变量名> = <初始化值>
变量的分类
-
按数据类型分
-
基本数据类型
-
数值型
-
整数类型(byte(1字节)、short(2字节)、int(4字节)、long(8字节))
注意事项
- java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
- java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
-
浮点类型(float(4字节)、double(8字节))
注意事项
- Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
-
-
字符型(char)
-
布尔型(boolean)
注意事项
- boolean类型数据只允许取值true和false,无null。
-
-
引用数据类型
- 类(class)
- 接口(interface)
- 数组([])
-
-
按声明位置分
- 成员变量
- 实例变量
- 类变量
- 局部变量
- 形式参数
- 方法局部变量
- 代码块局部变量
- 成员变量
基本数据类型的转换
-
自动类型转换:容量小的类型自动转换为容量大的数据类型。
char、byte、short —> int —> long —> float —> double
-
强制类型转换:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出。
进制
整型二进制形式
- 原码:直接将一个数值换成二进制数。最高位是符号位
- 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
- 负数的补码:其反码加1。
其他注意事项
- 正数的原码、反码、补码相同
- 计算机底层存储的是补码
2.4 运算符
分类
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
- 位运算符
- 三元运算符
2.4.1 算术运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | a=4;-a | -4 |
+ | 加 | 1+1 | 2 |
- | 减 | 1-1 | 0 |
* | 乘 | 1*2 | 2 |
/ | 除 | 2/1 | 2 |
% | 取余(取模) | 3%2 | 1 |
++ | 前自增:先自增,后运算 | a=3,b=3;b=a++ | a=4,b=3 |
++ | 后自增:先运算,后自增 | a=3,b=3;b=++a | a=4,b=4 |
– | 前自减:先自减,后运算 | a=3,b=3;b=a– | a=2,b=3 |
– | 后自减:先运算,后自减 | a=3,b=3;b=–a | a=2,b=2 |
+ | 字符串连接 | “Hello” + “World” | HelloWorld |
注意点
- 负数取模,符号跟被模数相同。
- 整数做除法运算,会舍弃小数部分。
2.4.2 赋值运算符
- 符号:=
- 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
- 支持连续赋值。
- 扩展赋值运算符: +=, -=, *=, /=, %=
2.4.3 比较运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等 | 4 == 3 | false |
!= | 不等 | 4 != 3 | true |
> | 大于 | 4 > 3 | true |
< | 小于 | 4 < 3 | false |
>= | 大于等于 | 4 >= 3 | true |
<= | 小于等于 | 4 <= 3 | false |
instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
2.4.4 逻辑运算符
分类
- &——逻辑与:都为真,则为真,无论左边真假,右边都运算
- &&——短路与:都为真,则为真,左边为假,右边不运算
- |——逻辑或:一个为真,则为真,无论左边真假,右边都运算
- ||——短路或:一个为真,则为真,左边为真,右边不运算
- !——逻辑非:对结果取反
- ^——逻辑异或:左右相同,则为假,左右不同,则为真
2.4.5 位运算符
运算符 | 运算 | 范例 | 结果 | 备注 |
---|---|---|---|---|
<< | 左移 | 3 << 2 | 12 | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 右移 | 3 >> 1 | 1 | 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1 |
>>> | 无符号右移 | 3 >>> 1 | 1 | 被移位二进制最高位无论是0或者是1,空缺位都用0补 |
& | 与运算 | 6 & 3 | 2 | 二进制位进行&运算,只有1&1时结果是1,否则是0 |
| | 或运算 | 6 | 3 | 7 | 二进制位进行 |运算,只有0 |0时结果是0,否则是1 |
^ | 异或运算 | 6 ^ 3 | 5 | 相同二进制位运算,结果是0;不相同二进制位运算结果是1 |
~ | 取反运算 | ~6 | -7 | 各二进制码按补码各位取反 |
2.4.6 三元运算符
格式:(条件表达式) ? 表达式1 : 表达式2;
注意事项
- 条件表达式为真则结果为表达式1,条件表达式为假,则结果为表达式2
- 表达式1和表达式2为同种类型
2.5 程序流程控制
概念
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
分类
-
顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
-
分支结构
根据条件,选择性地执行某段代码。
有if…else和switch-case两种分支语句。
-
循环结构
根据循环条件,重复性的执行某段代码。
有while、do…while、for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
2.5.1 顺序结构
Java中定义成员变量时采用合法的前向引用。即顺序结构是从上到下逐行地执行,不可反转。
2.5.2 分支结构
1.if-else结构
格式
-
if
if (条件表达式) { 执行代码块; }
-
if-else
if (条件表达式) { 执行代码块1; } else { 执行代码块2; }
-
if-else if-else
if (条件表达式1) { 执行代码块1; } else if (条件表达式2) { 执行代码块2; } …… else { 执行代码块n; }
使用说明
-
条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
-
语句块只有一条执行语句时,一对{}可以省略,但建议保留
-
if-else语句结构,根据需要可以嵌套使用
-
当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
-
当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
当多个条件是“包含”关系时,“小上大下 / 子上父下”
补充——Scanner类的使用
具体实现步骤
- 导包:import java.util.Scanner;
- Scanner的实例化:Scanner scan = new Scanner(System.in);
- 调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
注意事项
需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException导致程序终止。
2.switch-case结构
结构
switch (表达式) { case 常量1: 语句1; // break; case 常量2: 语句2; // break; … … case 常量N: 语句N; // break; default: 语句; // break; }
相关规则
- switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
- case子句中的值必须是常量,不能是变量名或不确定的表达式值;
- 同一个switch语句,所有case子句中的常量值互不相同;
- break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
- default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default
swithc和if语句的对比
- 如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
- 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。也就是说,使用switch-case的,都可以改写为if-else。反之不成立。
2.5.3 循环结构
在某些条件满足的情况下,反复执行特定代码的功能
循环语句分类
- for 循环
- while 循环
- do-while 循环
循环语句的四个组成部分
- 初始化部分(init_statement)
- 循环条件部分(test_exp)
- 循环体部分(body_statement)
- 迭代部分(alter_statement)
1.for循环
格式
for (①初始化部分; ②循环条件部分; ④迭代部分){ ③循环体部分; }
执行过程
①-②-③-④-②-③-④-②-③-④-…-②
说明
- ②循环条件部分为boolean类型表达式,当值为false时,退出循环
- ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
- ④可以有多个变量更新,用逗号分隔
2.while循环
格式
①初始化部分 while(②循环条件部分){ ③循环体部分; ④迭代部分; }
执行过程
①-②-③-④-②-③-④-②-③-④-…-②
说明
- 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。
- for循环和while循环可以相互转换
- 要避免出现死循环。
3.do-while循环
格式
①初始化部分; do{ ③循环体部分 ④迭代部分 }while(②循环条件部分);
执行过程
①-③-④-②-③-④-②-③-④-…②
说明
do-while循环至少执行一次循环体。
4.其他说明
- 最简单“无限” 循环格式:while(true) , for(;
这篇关于Java基本语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南