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]