文章内容输出来源:拉勾教育大数据高薪训练营
拉勾教育大数据高薪训练营 学习笔记
Java语言基础(三)
文章内容输出来源:拉勾教育大数据高薪训练营
拉勾教育大数据高薪训练营 学习笔记三、运算符3.1 算术运算符3.2 算术运算符的注意事项3.3 算术运算符的案例(实现时间拆分)3.4 字符串连接符3.5 关系运算符/比较运算符3.6 自增减运算符(笔试)前后加加的区别笔试考点
3.7 逻辑运算符3.8 逻辑运算符的短路特性(笔试)3.9 条件运算符/三目运算符3.10 赋值运算符(笔试)考点
3.11 移位运算符(了解)3.12 位运算符(了解)3.12 运算符的优先级总结
三、运算符
3.1 算术运算符
+-*/ (正斜杠,撇正捺反)% --> 取余
3.2 算术运算符的注意事项
(1)当两个整数相除时,结果只保留整数部分,丢弃小数部分
System
.out
.println(5 / 2);
(2)若希望保留小数部分该如何处理?
处理方式一:
System
.out
.println((double)5 / 2);
System
.out
.println(5 / (double)2);
System
.out
.println((double)5 / (double)2);
System
.out
.println((double)(5 / 2));
处理方式二(推荐): 让其中一个操作数乘以1.0即可
System
.out
.println(5*1.0 / 2);
System
.out
.println(5.0 / 2);
(3)0不能作除数
System
.out
.println(5 / 0.0);
System
.out
.println(0 / 0.0);
3.3 算术运算符的案例(实现时间拆分)
提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒如:输入7199,输出1小时59分59秒
import java
.util
.Scanner
;
public class ArithmeticTimeTest {
public static void main(String
[] args
) {
System
.out
.println("请输入一个正整数的秒数:");
Scanner sc
= new Scanner(System
.in
);
int num
= sc
.nextInt();
int hour
= num
/ 3600;
int min
= num
% 3600 / 60;
int sec
= num
% 60;
System
.out
.println(num
+ "秒转换为" + hour
+ "小时" + min
+ "分钟" + sec
+ "秒钟");
}
}
3.4 字符串连接符
+ 可以实现字符串的连接。同时可以实现字符串与其他数据类型“相连”
public class ArithmeticTimeTest {
public static void main(String
[] args
) {
int hour
= 1;
int min
= 1;
int sec
= 6;
System
.out
.println(hour
+ min
+ sec
);
System
.out
.println(hour
+ min
+ sec
+ "");
System
.out
.println(hour
+ min
+ "" + sec
);
System
.out
.println(hour
+ "" + min
+ sec
);
System
.out
.println("" + hour
+ min
+ sec
);
System
.out
.println("" + (hour
+ min
+ sec
));
}
}
3.5 关系运算符/比较运算符
一共六个,输出结果是布尔值,true 和 false
>>=<<===!=
3.6 自增减运算符(笔试)
++ 表示自增运算符,用于使得当前变量自身的数值加1的效果- - 表示自减运算符,用于使得当前变量自身的数值减1的效果注:只能用于变量,常量不可以
前后加加的区别
后++ 表示先让变量的数值作为整个表达式的结果,然后再让变量自身数值加1
如 i++ 前++ 表示先让变量自身数值加1,然后再让变量数值作为整个表达式的结果
如 ++i 前后减减 同理
笔试考点
int ib
= ia
++;
System
.out
.println("ib = " + ib
);
System
.out
.println("ia = " + ia
);
int ic
= ++ia
;
System
.out
.println("ic = " + ic
);
System
.out
.println("ia = " + ia
);
System
.out
.println(ia
++ + ++ia
);
System
.out
.println("ia = " + ia
);
3.7 逻辑运算符
&& 表示逻辑与运算符|| 表示逻辑或运算符! 表示逻辑非运算符注:逻辑运算符的操作数均为boolean表达式
3.8 逻辑运算符的短路特性(笔试)
对于逻辑与,&&,如第一个表达式为假,则结果为假,此时跳过第二个表达式对于逻辑或,||,若第一个表达式为真,则结果为真,此时跳过第二个表达式
int ia
= 3;
int ib
= 5;
boolean b4
= (++ia
== 3) && (++ib
== 5);
System
.out
.println("b4 = " + b4
);
System
.out
.println("ia = " + ia
);
System
.out
.println("ib = " + ib
);
boolean b5
= (++ia
== 5) || (++ib
== 5);
System
.out
.println("b5 = " + b5
);
System
.out
.println("ia = " + ia
);
System
.out
.println("ib = " + ib
);
3.9 条件运算符/三目运算符
语法格式:
条件表达式 ? 表达式1 : 表达式2 先判断条件表达式是否成立,若成立则则执行表达式1,否则指定表达式2
System
.out
.println(num
+ ( (100 <= num
&& num
<= 999)? "是三位数": "不是三位数") );
int max
= ia
> ib
? ia
: ib
;
System
.out
.println("最大值是:" + max
);
System
.out
.println("最大值是:" + (ia
> ib
? ia
: ib
));
3.10 赋值运算符(笔试)
= 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量原来的数值赋值表达式本身也有值,其本身之值即为所赋之值+=、-=、*=、/=、…
int ib
= ia
= 6;
考点
(1)考点一:
a = a + 1 和 a += 1 从结果上是等价的,但还是有区别a += 1 等价于 a = (byte)(a + 1)byte + int 相加结果还是int类型byte + byte 相加结果还是int类型(编译器优化)
byte a1
= 10;
(2)考点二:(写代码时经常犯的错误)推荐写 2 == ia,因为少写一个=,表达式变成2 = ia,编译器报错,会让我们较少错误调试的时候赋值的错误很难发现,比如不小心把 a == 2 写成 a = 2,调试的时候很难发现的
ia
== 2;
2 == ia
;
ia
= 2;
2 = ia
;
3.11 移位运算符(了解)
开发中不常用(但是看java源码时可能会遇到)<< 左移运算符,用于将数据的二进制位向左移动,右边使用 0 补充>> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充>>> 逻辑右移运算符(无符号右移运算符),用于将数据的二进制位向右移动,左边使用0补充
byte b1
= 13;
byte b2
= (byte)(b1
<< 1);
System
.out
.println(b1
<< 1);
System
.out
.println(b1
<< 2);
System
.out
.println(b1
>> 1);
System
.out
.println(b1
>> 2);
System
.out
.println(b1
>>> 2);
3.12 位运算符(了解)
& 表示按位与运算符,按照二进制位进行与运算(和逻辑与运算符同理)| 表示按位或运算符,按照二进制位进行或运算(与逻辑或运算符同理)~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1
(异或 记忆方法:领结婚证,同性不能结婚,为0,异性能结婚,为1)
byte b1
= 11;
byte b2
= 13;
System
.out
.println( b1
& b2
);
System
.out
.println( b1
| b2
);
System
.out
.println( b1
^ b2
);
System
.out
.println( ~ b1
);
3.12 运算符的优先级
优先级从上到下也越来越低结合性表示某个运算符先操作左边还是先操作右边记忆方法:
(1)小括号()优先级极高(2)等号 = 优先级极低(3)若无法确认优先级, 则使用()来确保即可
总结