Skip to content

Java | 第一阶段

更新: 1/15/2025 字数: 0 字 时长: 0 分钟

建立编程思想,包含基本语法、数组、排序和查找、面向对象编程。

变量

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

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

基本数据类型

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

20240427085447

整数类型

  • 整数类型有固定的范围和字段长度,不受操作系统的影响。
  • 整数常量默认为 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 程序中使用的非常多。

20240427131216

注意细节:

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

+ 号的使用:

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

关系运算符

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

20240430091938

逻辑运算符

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

20240430092401

运算规则:

  • 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

数组的排序和查找

面向对象编程

初级部分

中级部分

高级部分

贡献者

The avatar of contributor named as wkwbk wkwbk

页面历史