一、注释

  • 单行注释:以 //开头,以换行结束
1
// 注释内容
  • 多行注释:以 /*开头,以*/结束
1
2
3
/*
注释内容
*/
  • 文档注释:以/**开头,以*/结束,Java特有的注释

    • @author 标明开发该类模块的作者,多个作者之间使用,分割
    • @version 标明该类模块的版本
    • @see 参考转向,也就是相关主题
    • @since 从哪个版本开始增加的
    • 只用于方法的注释:
      • @param 形参名 形参类型 形参说明 对方法中某参数的说明,可并列多个
      • @return 返回值类型 返回值说明 对方法返回值的说明
      • @exception 异常类型 异常说明/@throws 异常类型 异常说明 对方法可能抛出的异常进行说明,可并列多个
    • 使用javadoc工具可以基于文档注释生成API文档:javadoc [options] [packagenames] [sourcefiles] [@files](例:javadoc -author -d doc Comments.java
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
注释内容
*/
public class Comments{

/**
Java程序的入口
@param String[] args main方法的命令参数
*/
public static void main(String[] args){
System.out.println("hello");
}
}

二、关键字

  • 关键字:Java已经定义好的单词,具有特殊含义
  • 关键字全部都是小写字母
  • 关键字一共50个,其中constgoto是保留字

img

三、标识符

  • 标识符:给类、变量、方法、包等命名的字符序列

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位

img

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

img

五、常量值

  • 常量值:在程序执行的过程中,其值不可以发生改变

Java中的输入的整数常量值默认为int类型,浮点常量值默认为double类型

类型 规则 举例
整数常量值 要表示long类型,必须加Ll 12,-23, 1567844444557L
浮点常量值 要表示float类型,必须加Ff 12.34F,12.34
字符常量值 必须使用单引号,单引号中有且只能有一个字符 ‘a’,’0’,’尚’
布尔常量值 true或者false true,false
字符串常量值 必须使用双引号,双引号中可以没有其他字符,表示空字符串 “HelloWorld”

六、变量

  • 变量:在程序执行的过程中,其值可以发生改变的量

  • 变量的作用:用来存储数据,代表内存的一块存储区域,这块内存中的值是可以改变的

  • 变量的声明格式:数据类型 变量名;,变量的数据类型可以是基本数据类型,也可以是引用数据类型

  • 变量的赋值:变量名 = 值;,给变量赋的值类型必须与变量声明的类型一致或兼容

  • 变量的三要素

    • 数据类型
      • 决定在内存中开辟多大空间
      • 决定该变量可以存什么值
    • 变量名:见名知意非常重要
      • 基本数据类型的变量:存储数据值
      • 引用数据类型的变量:存储地址值,即对象的首地址(例:String类型)
  • 使用变量的注意事项

    • 先声明后使用
    • 在使用之前必须初始化
    • 变量有作用域,且在同一个作用域中不能重名
    • 变量值的类型必须与变量声明的类型一致或兼容

七、最终变量/常量

  • 最终变量:不能修改值的变量,格式:final 数据类型 变量名;
  • 最终变量名通常称为常量名

八、基本数据类型转换

Java语言所提供的七种数值类型之间可以相互转换(boolean类型不参与)

1、自动类型转换(隐式类型转换)

  • 自动类型转换:将取值范围小的类型自动提升为取值范围大的类型

    • 当把存储范围小的值赋值给存储范围大的变量时,会自动转换为存储范围大的类型
    • 当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算
      • byte,short,char数据类型进行算术运算时,会按照int类型处理

img

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class OperatorDemo03 {
public static void main(String[] args) {
int i = 1;
int j = i++ + ++i * i++;
/*
从左往右加载
(1)先算i++
①取i的值“1”放操作数栈
②i再自增 i=2
(2)再算++i
①i先自增 i=3
②再取i的值“3”放操作数栈
(3)再算i++
①取i的值“3”放操作数栈
②i再自增 i=4
(4)先算乘法
用操作数栈中3 * 3 = 9,并把9压会操作数栈
(5)再算求和
用操作数栈中的 1 + 9 = 10
(6)最后算赋值
j = 10
*/
}
}

2、关系运算符/比较运算符

  • 比较运算符:两个数据之间进行比较的运算,运算结果一定是boolean值

    • ><>=<=不支持booleanString类型
    • !===不建议用于引用数据类型
关系运算符 符号解释
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于

3、逻辑运算符

  • 逻辑运算符:用来连接两个布尔类型值的运算符(!除外),运算结果也是boolean值
逻辑运算符 符号解释 符号特点
& 逻辑与 falsefalse
` ` 逻辑或
^ 逻辑异或 相同为false,不同为true
! falsetrue,非truefalse
&& 双与/短路与 左边为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个字节