系列文章目录
java必知必会-java环境搭建
java必知必会-java开发工具安装与使用
java必知必会-java关键字、变量和常量
java必知必会-java数据类型和变量定义
java必知必会-java类和对象
java必知必会-java面向对象的三大特性
java必知必会-java继承与重写、重载
java必知必会-java构造方法与访问修饰符
java必知必会-java抽象类与接口
文章目录
前言
本文介绍java运算符与流程控制
一、java运算符有哪些?
运算符是用来计算数据的符号。数据为常量或变量。被运算符操作的数我们称为操作数。请看下表
String与其他基本数据类型相加,会将其他类型转换为String再拼接
运算符 | 举例 | 说明 |
---|---|---|
算术运算符 | -(减、负号)、*、+(正、加号、连接字符串) | 加法运算符在连接字符串时只有直接与字符串相加才会转成字符串 |
%(取模) | 小数取余没有意义。结果符号与被取余符号相同 | |
/ | 均为整数则取整舍余,当其中一边为浮点型则按正常规则相除。除数不为0 | |
++(自增)–(自减) | 单独使用,不参与运算操作时,运算符前后位置导致的运算结果一致 | |
后置时运算后才自增/减1,前置则运算前自增/减1 | ||
赋值运算符 | +=、-=、*=、/=、%= | 将结果自动强转成等号左边的数据类型,左边必须是变量 |
= | 将=符号右边的值,赋值给=符号左边的变量 | |
比较运算符 | !=、<、>、<=、>= | 返回布尔值,判断两个操作数的大小关系及是否相等关系 |
== | 比较左右基本数字类型的变量值或者引用数据类型的变量的内存地址是否相等 | |
逻辑运算符 | &(与)、¦(或)、 | 连接两个其他表达式计算后的布尔值结果,并求出布尔值结果 |
&&(短路与)、¦¦(短路或) | 只要能判断出结果则后边的部分就不再判断 | |
逻辑非! | 将true变false,false变true | |
异或^: | 左右两边条件结果相同,结果就为false,否则true | |
三元运算符 | (条件表达式)?表达式1:表达式2; | 条件表达式的值若为true,结果为表达式1;否则为表达式2 |
System.out.println( 3>2 ? “正确” : “错误” ); | ||
int a = 3;int b = 4;String result = (a==b) ? “相等” : “不相等”; | ||
int n = (3>2 && 4>6) ? 100 : 200; | ||
按位操作符 | &(按位与) | 仅当两个操作数都为1时。输出结果才为1。否则为0 |
¦(按位或) | 仅当两个操作数都为0时,输出的结果才为0。 | |
~(取反) | 将各位数字取反:全部的0置为1,1置为0 | |
移位操作符 | ^(异或) | 仅当两个操作数不同一时候。对应的输出结果才为1,否则为0 |
<< | 左移就是把一个数的全部位数都向左移动若干位,低位补0,乘以2的n次幂 | |
>> | 右移就是把一个数的全部位数都向右移动若干位,若正数,高位插入0,否则插入1,除以2的n次幂 | |
>>> | 无符号右移一位。无论正负都在高位插入0 |
- %取模有什么用?取模常用于计算元素位置,比如计算循环链表元素的位置,哈希表中计算元素的位置
- ‘短路‘是什么意思?只要判断出一个结果,那么后面的结果将不会再计算
- 位运算有什么用?用于计算2的倍数乘法除法,因为计算机在二进制左右移是性能最好的
二、运算符的优先级?
java运算符优先级遵循以下表
运算符优先级 | 描述 | 运算符 | 优先级 | 描述 | 运算符 |
---|---|---|---|---|---|
1 | 括号 | ()、[] | 9 | 按位与 | & |
2 | 正负号 | +、- | 10 | 按位异或 | ^ |
3 | 自增自减,非 | ++、–、! | 11 | 按位或 | | |
4 | 乘除,取余 | *、/、% | 12 | 逻辑与 | && |
5 | 加减 | +、- | 13 | 逻辑或 | || |
6 | 移位运算 | <<、>>、>>> | 14 | 条件运算 | ?: |
7 | 大小关系 | >、>=、<、<= | 15 | 赋值运算 | =、+=、-=、*=、/=、%= |
8 | 相等关系 | ==、!= | 16 | 位赋值运算 | &=、|=、<<=、>>=、>>>= |
现实开发过程中如果不记得上表的运算符的优先级,我们可以使用括号将想要优先 运算的表达式先括起来
三、流程控制
1. 顺序结构
顺序结构就是程序执行的顺序
2.选择结构
2.1 选择结构if
- if语句 判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会执行
if (条件语句){
执行语句;
……
}
- if…else语句 指如果判断条件为true时,就进行某种处理,否则就进行另一种处理
if (判断条件){
执行语句1
……
}else{
执行语句2
……
}//与三元运算符功能相似
- if…else if…else语句所有条件均未满足,else后面{}中的执行语句n+1会执行
if (判断条件1) {
执行语句1
} else if (判断条件2) {
执行语句2
} else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}
2.2 选择结构
- switch:if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读
switch (表达式){//表达式的值为byte、short、int、char、enum枚举、String
case 目标值1:
执行语句1
break;
case 目标值2:
case 目标值3:
执行语句2//多个条件满足
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
3. 循环结构
循环语句while:反复进行条件判断,条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束
while(循环条件表达式){//循环体
执行语句...
控制条件表达式;
}
循环语句do…while:循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行
do {
执行语句………
控制条件表达式;
} while(循环条件表达式);
循环语句for:一般用在循环次数已知的情况下
for(初始化表达式; 循环条件; 操作表达式){//1,243,243
执行语句
………
}
for(数据类型 变量名 : 遍历的变量){
执行语句
}
四、跳转语句
1.break语句
- 在switch条件语句中时,终止某个case并跳出switch结构
- 在循环语句中,作跳出本层循环语句,执行后面的代码
- 标记:当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,
- 如果想使用break语句结束嵌套循环则需要对外层循环添加标签(后面跟有冒号的标识符) XXX:然后break XXX,代码如下
public static void main(String[] args) {
ok:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println("i=" + i + ",j=" + j);
if (j == 5) {
break ok;
}
}
}
}
2.continue语句
终止本次循环,执行下一次循环;可以通过使用标记的方式结束本次嵌套循环,用法与break语句相似
总结
本文介绍了java运算符与流程控制语句,如果有任何疑问欢迎私信或者评论