Java - 基础语法
一、注释
- 单行注释:以
//开头,以换行结束
1 | // 注释内容 |
- 多行注释:以
/*开头,以*/结束
1 | /* |
文档注释:以
/**开头,以*/结束,Java特有的注释@author标明开发该类模块的作者,多个作者之间使用,分割@version标明该类模块的版本@see参考转向,也就是相关主题@since从哪个版本开始增加的- 只用于方法的注释:
@param 形参名 形参类型 形参说明对方法中某参数的说明,可并列多个@return 返回值类型 返回值说明对方法返回值的说明@exception 异常类型 异常说明/@throws 异常类型 异常说明对方法可能抛出的异常进行说明,可并列多个
- 使用javadoc工具可以基于文档注释生成API文档:
javadoc [options] [packagenames] [sourcefiles] [@files](例:javadoc -author -d doc Comments.java)
- 使用javadoc工具可以基于文档注释生成API文档:
1 | /** |
二、关键字
- 关键字:Java已经定义好的单词,具有特殊含义
- 关键字全部都是小写字母
- 关键字一共50个,其中
const和goto是保留字

三、标识符
- 标识符:给类、变量、方法、包等命名的字符序列
1、标识符的命名规则
(1)Java的标识符只能使用26个英文字母大小写,0-9的数字,下划线_,美元符号$
(2)不能使用Java的关键字(包含保留字)和特殊值
(3)数字不能开头
(4)不能包含空格
(5)严格区分大小写
2、标识符的命名规范
(1)见名知意
(2)类名、接口名等:每个单词的首字母都大写,形式:XxxYyyZzz
(3)变量、方法名等:从第二个单词开始首字母大写,其余字母小写,形式:xxxYyyZzz
(4)包名等:每一个单词都小写,单词之间使用点.分割,形式:xxx.yyy.zzz
(5)常量名等:每一个单词都大写,单词之间使用下划线_分割,形式:XXX_YYY_ZZZ
四、数据类型
基本数据类型:包括
整数、浮点数、字符、布尔- float:单精度浮点型,精度:科学记数法的小数点后6~7位
- double:双精度浮点型,精度:科学记数法的小数点后15~16位

- 引用数据类型:包括
数组、类、接口、枚举、注解

五、常量值
- 常量值:在程序执行的过程中,其值不可以发生改变
Java中的输入的整数常量值默认为int类型,浮点常量值默认为double类型
| 类型 | 规则 | 举例 |
|---|---|---|
| 整数常量值 | 要表示long类型,必须加L或l |
12,-23, 1567844444557L |
| 浮点常量值 | 要表示float类型,必须加F或f |
12.34F,12.34 |
| 字符常量值 | 必须使用单引号,单引号中有且只能有一个字符 | ‘a’,’0’,’尚’ |
| 布尔常量值 | true或者false |
true,false |
| 字符串常量值 | 必须使用双引号,双引号中可以没有其他字符,表示空字符串 | “HelloWorld” |
六、变量
变量:在程序执行的过程中,其值可以发生改变的量
变量的作用:用来存储数据,代表内存的一块存储区域,这块内存中的值是可以改变的
变量的声明格式:
数据类型 变量名;,变量的数据类型可以是基本数据类型,也可以是引用数据类型变量的赋值:
变量名 = 值;,给变量赋的值类型必须与变量声明的类型一致或兼容变量的三要素
- 数据类型
- 决定在内存中开辟多大空间
- 决定该变量可以存什么值
- 变量名:见名知意非常重要
- 值
- 基本数据类型的变量:存储数据值
- 引用数据类型的变量:存储地址值,即对象的首地址(例:String类型)
使用变量的注意事项
- 先声明后使用
- 在使用之前必须初始化
- 变量有作用域,且在同一个作用域中不能重名
- 变量值的类型必须与变量声明的类型一致或兼容
七、最终变量/常量
- 最终变量:不能修改值的变量,格式:
final 数据类型 变量名; - 最终变量名通常称为常量名
八、基本数据类型转换
Java语言所提供的七种数值类型之间可以相互转换(boolean类型不参与)
1、自动类型转换(隐式类型转换)
自动类型转换:将
取值范围小的类型自动提升为取值范围大的类型- 当把存储范围小的值赋值给存储范围大的变量时,会自动转换为存储范围大的类型
- 当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算
- 当
byte,short,char数据类型进行算术运算时,会按照int类型处理
- 当

2、强制类型转换(显示类型转换)
强制转换格式:
数据类型 变量名 = (数据类型)被强转数据值;- 当把存储范围大的值赋值给存储范围小的变量时,需要强制类型转换(有风险,可能会损失精度或溢出)
- 当某个值想要提升数据类型时,也可以使用强制类型转换
3、基本数据类型与字符串类型的转换
1、任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型
2、String类型不能通过强制类型转换为其他的类型
九、运算符
在Java中,一共有38个运算符
运算符的分类
- 按照功能分
| 分类 | 运算符 |
|---|---|
| 算术运算符(7个) | +、-、*、/、%、++、– |
| 赋值运算符(12个) | =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等 |
| 关系运算符(6个) | >、>=、<、<=、==、!= |
| 逻辑运算符(6个) | &、|、^、!、&&、|| |
| 条件运算符(2个) | (条件表达式)?结果1:结果2 |
| 位运算符(7个) | &、|、^、~、<<、>>、>>> |
| Lambda运算符(1个) | -> |
- 按照操作数个数分
| 分类 | 运算符 |
|---|---|
| 一元运算符(单目运算符) | 正号(+)、负号(-)、++、–、!、~ |
| 二元运算符(双目运算符) | 除了一元和三元运算符剩下的都是二元运算符 |
| 三元运算符 (三目运算符) | (条件表达式)?结果1:结果2 |
1、算术运算符
| 算术运算符 | 符号解释 |
|---|---|
+ |
加法运算,正号,字符串连接运算 |
- |
减法运算,负号 |
* |
乘法运算 |
/ |
除法运算(整数/整数结果为整数) |
% |
求余运算(余数的符号只看被除数) |
++``-- |
自增自减运算++变量 :先自身加1,然后再参与运算变量++ :先参与运算,然后自身加1 |
1 | public class OperatorDemo03 { |
2、关系运算符/比较运算符
比较运算符:两个数据之间进行比较的运算,运算结果一定是boolean值
>,<,>=,<=不支持boolean,String类型!=、==不建议用于引用数据类型
| 关系运算符 | 符号解释 |
|---|---|
< |
小于 |
> |
大于 |
<= |
小于等于 |
>= |
大于等于 |
== |
等于 |
!= |
不等于 |
3、逻辑运算符
- 逻辑运算符:用来连接两个布尔类型值的运算符(
!除外),运算结果也是boolean值
| 逻辑运算符 | 符号解释 | 符号特点 |
|---|---|---|
& |
逻辑与 | 有false则false |
| ` | ` | 逻辑或 |
^ |
逻辑异或 | 相同为false,不同为true |
! |
非 | 非false则true,非true则false |
&& |
双与/短路与 | 左边为false,则右边就不看 |
| ` | ` |
&&、||比&、|效率高
4、条件运算符
条件运算符格式:
条件表达式 ? 结果1 : 结果2条件运算符计算方式:
- 若条件判断的结果为
true,则取结果1 - 若条件判断的结果为
false,则取结果2
- 若条件判断的结果为
5、位运算符
位运算符的运算过程都是基于补码运算,结果需要转换为原码,再转换为十进制
byte,short,char在计算时按照int类型处理
| 位运算符 | 符号解释 |
|---|---|
& |
按位与(当两位均为1时才返回1) |
| ` | ` |
~ |
按位非(将操作数包含符号位的每一位全部取反) |
^ |
按位异或(当两位相同时返回0,不同时返回1) |
<< |
左移运算符 |
>> |
右移运算符 |
>>> |
无符号右移运算符,空位补0 |
6、赋值运算符
- 扩展赋值运算符在将最后的结果赋值给左边的变量前,多做了一步强制类型转换
| 运算符 | 符号解释 |
|---|---|
| = | 将右边的常量值/变量值/表达式的值,赋值给左边的变量 |
| += | 将左边变量的值和右边的常量值/变量值/表达式的值进行相加,最后将结果赋值给左边的变量 |
| -= | 将左边变量的值和右边的常量值/变量值/表达式的值进行相减,最后将结果赋值给左边的变量 |
| *= | 将左边变量的值和右边的常量值/变量值/表达式的值进行相乘,最后将结果赋值给左边的变量 |
| /= | 将左边变量的值和右边的常量值/变量值/表达式的值进行相除,最后将结果赋值给左边的变量 |
| %= | 将左边变量的值和右边的常量值/变量值/表达式的值进行相模,最后将结果赋值给左边的变量 |
| <<= | 将左边变量的值左移右边常量/变量值/表达式的值的相应位,最后将结果赋值给左边的变量 |
| >>= | 将左边变量的值右移右边常量/变量值/表达式的值的相应位,最后将结果赋值给左边的变量 |
| >>>= | 将左边变量的值无符号右移右边常量/变量值/表达式的值的相应位,最后将结果赋值给左边的变量 |
| &= | 将左边变量的值和右边的常量值/变量值/表达式的值进行按位与,最后将结果赋值给左边的变量 |
| |= | 将左边变量的值和右边的常量值/变量值/表达式的值进行按位或,最后将结果赋值给左边的变量 |
| ^= | 将左边变量的值和右边的常量值/变量值/表达式的值进行按位异或,最后将结果赋值给左边的变量 |
7、运算符优先级
单目运算排第一;
乘除余二加减三;
移位四,关系五;
等和不等排第六;
位与、异或和位或;
短路与和短路或;
依次从七到十一;
条件排在第十二;
赋值一定是最后;
十、不同数据类型表示原理
1、布尔类型
- true:底层使用1表示
- false:底层使用0表示
2、整型
使用补码形式存储,最高位是符号位(1代表负数,0代表正数)
- 正整数:三码合一(补码、反码、原码都一样)
- 负整数:
- 原码:十进制转为二进制,最高位设置为1
- 反码:在原码的基础上,最高位不变,其余位取反
- 补码:反码+1
3、小数
把小数转为二进制,然后把二进制表示为科学记数法
- ①符号位
- ②指数位(需要移位)
- ③尾数位
4、字符
- 每一个字符对应一个唯一的Unicode编码值(0~65535)
- 在JVM内存中,一个字符占2个字节