一、表达式
1. 概念
由变量、运算符、字面值组成的式子,运算后会产生一个结果。
两变量参与运算,结果类型规则
如果参与运算的变量有一个为 double 类型,结果就是 double 类型
如果没有 double ,有一个为 float 类型,结果类型为 float
如果没有 double/float ,有一个为 long 类型,结果类型为 long
其余所有情况,结果全都是 int 类型
代码示例
byteb=1;byteb2=b+1;// 编译报错:b+1运算结果是int类型,不能直接赋值给byte二、运算符
1. 算术运算符
“+ - * / %"
注意: + 两端只要有一个是 String 字符串类型,就代表字符串拼接/连接。
2. 赋值运算符
"= += -= *= /= %= "
重点: += 等综合运算符没有自动类型提升,会隐式强制转换
面试题对比
// ①byteb=1;b=b+1;// 编译不通过,b+1结果是int类型,int无法直接赋值给byte// ②byteb=1;b+=1;// 编译通过,复合赋值自动强转,结果b=23. 一元运算符: ++ 自增、 – 自减
a++ :先使用,再加1
inta=1;intc=a++;// 等价于 int c = a; a = a+1;// 结果:c=1,a=2++a :先加1,再使用
开发时只关注变量自身增减, a++ 和 ++a 无区别;面试重点考察运算顺序区别。
4. 关系运算符
= < <= !=
作用:判断两个变量关系是否成立
返回值:关系成立返回 true ,不成立返回 false ,结果为 boolean 类型
布尔表达式:用关系运算符连接变量,返回布尔值的表达式
5. 逻辑运算符
&& (短路与):两边都为true才为true;左边为false,右边不执行
|| (短路或):两边有一个为true就为true;左边为true,右边不执行
! (逻辑非):对结果取反
& (非短路与):两边都为true才为true;无论左边结果,右边必执行
| (非短路或):两边有一个为true就为true;无论左边结果,右边必执行
面试题: && 和 & 的区别
相同点:都要求两边布尔表达式同时为 true ,最终结果才为 true
不同点
&& 是短路运算符:第一个表达式为 false ,后面表达式不再执行
& 是非短路运算符:不管前面结果如何,后面表达式必须执行
6. 条件运算符(三元运算符)
执行原理:
布尔表达式结果为 true → 执行表达式1
布尔表达式结果为 false → 执行表达式2
三、Scanner 扫描器(控制台键盘输入)
1. 使用步骤:创建扫描仪
java.util.Scannersc=newjava.util.Scanner(System.in);2. 常用输入方式
inta=sc.nextInt();// 输入整数doubles=sc.nextDouble();// 输入小数Strings=sc.next();// 输入字符串(不含空格)Strings=sc.nextLine();// 输入整行字符串(可带空格)charc=sc.next().charAt(0);// 输入单个字符