Java | 第一阶段
LI SIR Lv4

Java 第一阶段


变量

变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量的值。

  • 不同的变量,类型不同,占用的空间大小不同。
  • 变量必须先声明,后使用。
  • 变量在同一个作用域内不能重名。

基本数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。

image

整数类型

  • 整数类型有固定的范围和字段长度,不受操作系统的影响。
  • 整数常量默认为 int 型,声明 long 型常量需要在后面加 lL
  • bit(位)是计算机最小存储单位,byte(字节)是计算机中基本存储单位,1byte 等于 8bit。

浮点类型

  • 浮点数 = 符号位 + 指数位 + 尾数位
  • 尾数部分可能丢失,造成精度损失(小数都是近似值)。
  • 浮点数常量默认为 double 型,声明 float 型常量需要在后面加 fF

字符类型

  • 字符常量是用单引号括起来的单个字符。
  • 转义字符 \ 可以将其后的字符转变为特殊字符常量。
  • char 本质是一个整数,在输出时,是 Unicode 码对应的字符。
  • 可以直接给 char 赋一个整数,然后输出时,会按照对应的 Unicode 字符输出。
  • char 是可以进行运算的,相当于一个整数。

布尔类型

  • 布尔类型数据只允许取值 truefalse,没有 null

基本数据类型转换

精度就是这个类型在内存中分配的内存空间,也就是容量。

自动类型转换

在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。

  • char ---> int ---> long ---> float ---> double
  • byte ---> short ---> int ---> long ---> float ---> double

注意细节:

  • 多种类型的数据混合运算时,系统首先自动将所有的数据转换成精度最大的那种数据类型,然后再进行计算。
  • 把精度大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换。
  • 在进行赋值时,byte 或 short 与 char 之间不会相互自动转换。
  • byte、short、char 它们三者可以进行混合运算,在运算时首先转换为 int 类型。
  • boolean 不参与转换。
  • 表达式结果的类型自动提升为操作数中精度最大的类型。

强制类型转换

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

注意细节:

  • 强转符号只针对最近的操作数有效,多个操作数往往会使用小括号提升优先级。
  • char 可以保存 int 的常量值,但不能保存 int 的变量值,需要强转。
  • byte、short、char 在进行运算时,当做 int 处理。

转 String 类型

  • 基本数据类型转 String 类型:将基本数据类型的值 + "" 即可。
  • String 类型转基本数据类型:通过基本数据类型的包装类调用 parseXxx 方法即可。

运算符

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

算数运算符

算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。

image

注意细节:

  • 对于除号 /,它的整数除和小数除是有区别的,整数之间做除法时,只保留整数部分舍弃小数部分。
  • 取模 % 的本质,a % b 等于 a - (int)(a / b) * b

+ 号的使用:

  • 当左右两边都是数值型时,则做加法运算。
  • 当左右两边有一方为字符串时,则做拼接运算。
  • 运算顺序是从左到右。

关系运算符

关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
关系表达式经常用在 if 结构的条件中或循环结构的条件中。
关系运算符组成的表达式,我们称为关系表达式。

image

逻辑运算符

用于连接多个条件表达式,最终的结果也是一个 boolean 值。

image

运算规则:

  • a & b 逻辑与:当 a 和 b 同时为 true,则结果为 true,否则为 false。
  • a && b 短路与:当 a 和 b 同时为 true,则结果为 true,否则为 false。
  • a | b 逻辑或:当 a 和 b 有一个为 true,则结果为 true,否则为 false。
  • a || b 短路或:当 a 和 b 有一个为 true,则结果为 true,否则为 false。
  • a ^ b 逻辑异或:当 a 和 b 不同时,则结果为 true,否则为 false。
  • !a 取反,或者非运算:当 a 为 true,则结果为 false,当 a 为 false 是,结果为 true。

&&& 的区别:

  • & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低。
  • && 短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。

||| 的区别:

  • | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低。
  • || 短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高。

赋值运算符

  • 基本赋值运算符:=
  • 复合赋值运算符:+=-=*=/=%= 等。

注意细节:

  • 运算顺序从右往左。
  • 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值。

三元运算符

条件表达式 ? 表达式一 : 表达式二;

运算规则:

  • 如果条件表达式为 true,运算后的结果是表达式一。
  • 如果条件表达式为 false,运算后的结果是表达式二。

位运算符

运算符优先级

运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
只有单目运算符、赋值运算符是从右向左运算的。
如下表,上一行运算符总优先于下一行。

控制结构

顺序控制

分支控制

双分支

嵌套分支

switch 分支

循环控制

for

while

do...while

数组的排序和查找

面向对象编程

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
总字数 117.8k 访客数 访问量