黑马程序员技术交流社区
标题: 技术贴 [打印本页]
作者: Evan_Fung 时间: 2019-8-21 16:12
标题: 技术贴
技术贴
运算符&表达式
运算符其实就是一些符号(eg:+ - * /)
表达式
用运算符连接起来的一些式子,成为表达式。如果用算术运算符连接起来,就是算术表达式
1. 算术运算符
+- * / %
整数相除结果只能是整数
%取余,结果是余数
字符相+
先把自己转换成int值,然后再运算,转换时的原则:按照其在计算机底层的存储值进行转换
'A' 65
'a' 97
'0' 48
自动类型提升:
基本数据类型(boolean除外)进行算术运算时,会有自动类型提升:
a.byte、short、char参与运算时,会自动转换成int类型,然后再进行运算
b.在算术表达式中,讲数据类型转换成参与运算的所有数据中的最高级别。
(byte/short/char<int<long<float<double)
字符串相+
其实就是字符串的拼接
从左往右依次执行,在遇到字符串之前,会找原有的规则进行运算。
如果遇到了字符串,就开始进行字符串拼接。
自增/自减运算符
++/-- 变量增加/减少1
使用:
单独使用 在前或在后,对运算结果没有影响
参与运算
自增或自减在前,先进行自增减然后再参与其他运算
自增或自减在后,先进行其他运算,然后再进行自增减
2.赋值运算符 =
inti = 10; //将10赋值给int类型的变量i
i= i + 20; //将i的值加上20之后,重新赋值给变量i
复合赋值运算符
+=、-=、*=、/=、%=
i+= 10; //在结果上等同于i = (i的类型)(i +10);
一般不建议使用强转,建议使用复合赋值运算符
3.关系运算符
关系表达式的结果只能是boolean类型,也就是只能是true或者false
==、>、<、>=、<=、!=
不要将==错写成了=
System.out.println(i=j+k),把j的值赋值给变量i,并且输出
4. 逻辑运算符
连接了两个及以上的关系表达式
&、|、^、!
&与 并且 只要有false,结果就是false,同时为true,结果才是true
|或 或者 只要有true,结果就是true;同时为false,结果才是false
^a异或 男女关系 相同为false,不同为true
!非 否定 !true = false,!false=true; !!true = true;
短路逻辑运算符
&& 短路与 只要遇到false,后面的关系表达式便不执行
|| 短路或 只要遇到true,后面的关系表达式便不执行
工作中常用的是 &&、||、!
5. 三元运算符
格式:关系表达式 ? 表达式1 : 表达式2
示例: a > b ? c : d
执行流程:
判断关系表达式的值
如果该值为true,三元表达式的值就是表达式1的值
如果该值为false,三元表达式的值就是表达式2的值
求两个数据中,较大的数值
变量类型 max = a > b ? a : b;
6. 键盘录入的三个步骤
导包 importjava.util.Scanner;
创建对象 Scanner sc = newScanner(System.in);
接收数据 int i = sc.nextInt();
7. if语句格式1
if(关系表达式){
语句体
}
执行流程
1.判断关系表达式的值
2.如果关系表达式的值为true,就执行语句体,然后继续执行后面的其他代码
3.如果关系表达式的值为false,就不执行语句体,接续执行后面的其他代码
8. if语句格式2
if(关系表达式){
语句体1;
}else {
语句体2;
}
执行流程:
1.判断关系表达式的值
2.如果关系表达式的值是true,执行语句体1,然后继续执行后面的其他代码
3.如果关系表达式的值是false,执行语句体2,然后继续执行后面的其他代码
9. if语句格式3
if(关系表达式1){
语句体1;
}elseif(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
执行流程
1.判断关系表达式1的值,如果是true,就执行语句体1;
2.如果为false,就继续判断关系表达式2的值,如果关系表达式2的值是true,就执行语句体2;
3.……
4.只要有一个关系表达式的值是true,就执行对应的语句体
5.如果所有的关系表达式的值都是false,就执行else里面的语句体n+1
1.switch
语句格式:
switch(表达式){
case值1:
语句1;
break;
case值2:
语句2;
break;
……
default:
语句n+1;
[break;]
}
表达式结果的类型:byte、short、char、int、枚举、String
执行流程:
计算表达式的值,然后从上往下和各个case后面的值进行比对,只要发现相同,就执行该case的语句,遇到break,switch语句结束;如果所有的case都不匹配,执行default的语句。
case穿透
如果某个case内没有break,在执行该case内语句后,并不会再次判断后面case的值是否匹配;
而是直接执行后面case中的语句,直到遇到break或者语句结束。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |