04-基础语法3
1. 进制


2. 运算符

2.1 算数运算符
- 算术运算符中
+,-,*,/,%属于二元运算符 // 二元运算符指的是需要 2 个操作数才能完成运算的运算符- 如果是整数相除,结果也只能得到整数;如果想得到小数,必须把数据先变化为浮点数类型再运算

- 其中的
%是取模运算符,就是我们常说的求余数操作,得到的结果是"余数"- 其操作数可以为浮点数,一般使用整数,结果是 "余数"
- "余数"符号和左边操作数相同。如:7%3=1;-7%3=-1;7%-3=1
- 如果是整数相除,结果也只能得到整数;如果想得到小数,必须把数据先变化为浮点数类型再运算
- 算术运算符中
++,--属于一元运算符,该类运算符只需要 1 个操作数

2.2 赋值及其扩展赋值运算符
- 基本的赋值运算符:
=- 当
=两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理 - 支持连续赋值;如:i = j = 1101
- 当
- 扩展的赋值运算符

- 测试

2.3 关系运算符

=是赋值运算符,而判断两个操作数是否相等的运算符是==

==、!=是所有(基本和引用) 数据类型都可以使用>、>=、<、<=仅针对数值类型 (byte/short/int/long,float/double,char)
2.4 逻辑运算符

- 逻辑运算符用于连接 {布尔型表达式},不可以写成
3 < x < 6,应该写成x > 3 && x < 6 短路与&&和短路或||采用短路的方式:从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率

异或 ^与或 |不同!^左右都为true时,结果为false异或^,追求的是"异"
- 一道小题

2.5 位运算符

- 详解

- 练习 1

- 练习 2:异或运算实现两个整数变量的交换 // 一个数据对另一个数据异或两次,数据本身不变
- a = a ^ b;
- b = a ^ b;
- a = a ^ b;
- 练习 3:求一个 0~255 范围内的整数的十六进制 // 无符号右移

2.6 字符串连接符
+除了用于算术加法运算外,还可用于对字符串进行连接操作+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接
2.7 三元运算符
- 语法

- 表达式 1 和 表达式 2 为同种数据类型(就算不是,也得能自动转型成同一种类型才行!)

- 三元运算符 与 if-else 的联系与区别
- 三元运算符可简化 简单的 if-else 语句
- 但凡能用三目运算符的地方都可用 if-else 语句来替代
- 三元运算符要求必须返回一个结果
- if-else 代码块中可有多条语句
- 练习
- 求 2 个数最大值:
m > n ? m : n - 求 3 个数最大值:
x>y ? x>z?x:z : y>z?y:z
- 求 2 个数最大值:
3. 运算符优先级问题

- 不需要去刻意的记这些优先级;表达式里面想优先运算的,加小括号
- 逻辑非 > 逻辑与 > 逻辑或;如:
a || b && c的结果是a || (b && c),而不是(a || b) && c
4. Scanner 键盘录入
- 导包:
import java.util.Scanner; - Scanner 实例化:
Scanner sc = new Scanner(System.in); - 调用 Scanner 类相关方法 // 没有
nextChar()哈!boolean nextBoolean()byte nextByte()short nextShort()int nextInt()long nextLong()float nextFloat()double nextDouble()String next()String nextLine()
- 当
next()与nextLine()一前一后执行


5. 获取[a,b]内的一个随机数
- 公式:
(int) (Math.random() * (b-a+1) + a) - 举例:获取 [10,99] 内的随机数
Math.random()→ [0.0,1.0)Math.random() * 90→ [0.0,90)Math.random() * 90 + 10→ [10.0,100)(int) (Math.random() * 90 + 10)→ [10,99]

浙公网安备 33010602011771号