03-Java运算符

1.运算符

1.1逻辑运算符

逻辑运算符的操作数必须是布尔值,结果也是布尔值

逻辑与:&
运算规则:只有左右两边都为true,结果才为true。
例如:true & true 结果为true
false & true 结果为false
true & false 结果为false
false & false 结果为false

逻辑或:|
运算规则:只要左右两边有一个为true,结果就为true。
例如:true | true 结果为true
false | true 结果为true
true | false 结果为true
false | false 结果为false

逻辑异或:^
运算规则:只有左右两边不同,结果才为true。
例如:true ^ true 结果为false
false ^ true 结果为true
true ^ false 结果为true
false ^ false 结果为false

逻辑非:!
运算规则:布尔值取反
例如:!true 为false
!false 为true

短路与:&&
运算规则:只有左右两边都为true,结果才为true。
它和逻辑与不同的是当&&左边为false时,右边就不看了。

短路或:||
运算规则:只要左右两边有一个为true,结果就为true。
它和逻辑或不同的是当||左边为true时,右边就不看了。

开发中一般用短路与和短路或比较多
在这里插入图片描述

1.2 位运算符

一般用于整数系列

左移:<<

​ 运算规则:左移几位就相当于乘以2的几次方

右移:>>

​ 运算规则:右移几位就相当于除以2的几次方

无符号右移:>>>

​ 运算规则:往右移动后,左边空出来的位直接补0,不看符号位

按位与:&

​ **运算规则:**二进制对应位置取与 ,同时为1才为1,否则为0

按位或:|

​ **运算规则:**二进制对应位置取或 ,有一个为1就为1

按位异或:^

​ 运算规则:二进制对应位置取异或 ,两者不同才为1

按位取反:~

​ **运算规则:**二进制对应位置取反 ,原来是1,变为0,原来是0变为1

**位运算符 都是机器数直接运算的 **

如果操作数是boolean类型,就是逻辑运算符,如果操作数是整数,那么就位运算符。

1.3三元运算符

? :

语法格式:

条件表达式 ? 结果表达式1 : 结果表达式2

?前面必须是条件,必须是boolean值

结果表达式1和结果表达式2要保持类型一致或兼容

运算规则:

整个表达式的结果:当条件表达式为true时,就取结果表达式1的值,否则就取结果表达式2的值。

例:

int a=(1>2) ? 1 : 2;   //a=2

1.4运算符优先级

在这里插入图片描述

提示说明:

(1)表达式不要太复杂

(2)先算的使用()

2.流程控制语句

输入输出语句:

1、输出语句:

  • System.out.print(输出内容); //输出内容后不换行
  • System.out.println(输出内容); //输出内容后换行

2、输入语句:

键盘输入代码的三个步骤:

  • 准备Scanner类型的变量 例:java.util.Scanner input = new java.util.Scanner(System.in);
  • 提示输入xx
  • 接收输入内容 例:int a = input.nextInt();

流程控制语句结构分为:

  • 顺序结构:从上到下依次执行

  • 分支结构:多个分支选择其中一个分支执行

  • 循环结构:重复执行某些代码

2.1顺序结构

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

执行过程:从上到下顺序执行

2.2 分支结构

分支结构:根据条件选择性的执行某些代码

分为:

1、条件判断:if…else系列

2、选择结构:switch…case系列

2.2.1条件判断

1、单分支结构

语法格式:

if(条件表达式){
    
    
    当条件表达式成立(true)时需要执行的语句块;
}

执行过程:

​ 条件成立,就执行{}其中的语句块,不成立就不执行。

2、双分支结构

语法格式:

if(条件表达式){
    
    
    当条件表达式成立(true)时需要执行的语句块1;
}else{
    
    
    当条件表达式不成立(false)时需要执行的语句块2;
}

执行过程:

​ 当条件表达式成立(true)时执行语句块1,否则执行语句块2

**注意:**对于1和2

(1)if(条件表达式)中的条件表达式的结果必须是boolean类型

(2)当{}中的语句只有一个语句(简单的语句,也可以是一个复合语句)时,可以省略{},但是不建议省略

3、多分支结构

语法格式:

if(条件表达式1){
    
    
    当条件表达式1成立的时候,执行的语句块1}else if(条件表达式2){
    
    
    当条件表达式1不成立,
      条件表达式2成立的时候,执行的语句块2}else if(条件表达式3){
    
    
    当条件表达式1不成立,
       条件表达式2也不成立,
      条件表达式3成立的时候,执行的语句块3}
。。。
【else{
    
    
	当以上所有的条件表达式都不成立,需要执行的语句块n+1;
}

执行过程:

(1)多个条件顺序往下判断,如果上面有一个条件成立了,下面的条件就不看了

(2)多个分支也只会执行其中的一个

注意:

(1)每一个条件表达式都必须是boolean值

(2)当{}中只有一个语句时,也可以省略{},但不建议省略

(3)当多个条件是“互斥”关系(没有重叠部分),顺序可以随意;

​ 当多个条件是“包含”关系(有重叠部分),顺序不能随意,小的在上, 大的在下面

4、嵌套

if…else系列语句可以嵌套,在任意一个语句块中都可以再嵌套其他的条件语句。

执行特点:

当外层条件满足时,内层条件才判断。

2.2.2 选择结构

语法格式:

switch(表达式){
    
    
    case 常量值1:
        语句块1;break;case 常量值2:
        语句块2;break;】   
    。。。
   【default:
        语句块n+1;break;】
     】
}

执行过程:

(1)入口

  • 当switch(表达式)的值与case后面的某个常量值匹配,就从这个case进入;

  • 当switch(表达式)的值与case后面的所有常量值都不匹配,寻找default分支进入;

(2)一旦从“入口”进入switch,就会顺序往下执行,直到遇到“出口”

(3)出口

  • 自然出口:遇到了switch的结束}

  • 中断出口:遇到了break等

注意:

(1)switch(表达式)的值的类型,只能是:4种基本数据类型(byte,short,int,char),两种引用数据类型(枚举、String)

(2)case后面必须是常量值,而且不能重复

(3)表达式返回的结果的类型需要与case后的值的类型保持一致

(4)break是可选的,当表达式返回结果与某个case后的值进行匹配成功后,执行相应分支的语句,一旦进入某个分支后,只有直到遇到break才会退出switch,否则将会继续执行下一个case的语句。

(5)default是可选的。位置也不一定是最后,也可以在任意case的位置。但是不管再哪里,都是要所有case的常量值不匹配后才会进入default分支,一旦进入default分支,也是需要遇到break或switch的闭括号“}”才会停止。

2.3循环结构

循环结构:

​ “重复”执行某些代码

循环结构的分类:

1、for循环

2、while循环

3、do…while循环

2.3.1for循环

语法格式:

for(;;){
    
    
    循环体语句块;
    if(条件表达式){
    
    
    	break;
    }
}
for(初始化表达式; 循环条件; 迭代表达式){
    
    
    循环体语句块;(需要重复执行的代码)
}

执行过程:

(1)初始化表达式;

(2)判断循环条件;

(3)如果循环条件成立,先执行循环体语句块;然后执行迭代表达式,再 2…

(4)如果循环条件不成立,会结束for;

​ 或者在当前循环中遇到break语句,也会结束当前for循环;

注意:

(1)for(;;)中的两个;是不能多也不能少

(2)循环条件必须是boolean类型

2.3.2 while循环

语法格式:

while(循环条件){
    
    
    循环体语句块;
}

经典的形式:
while(true){
    
    
	循环体语句块;
    if(条件表达式){
    
    
    	break;
    }
}

执行过程:

(1)先判断循环条件

(2)如果循环条件成立,就执行循环体语句块;然后回到(1)

(3)如果循环条件不成立,就结束while循环;

​ 如果在循环体语句块中,遇到break,也会结束while循环;

注意:

(1)while(循环条件)中循环条件必须是boolean类型

2.3.3 do…while循环

语法格式:

do{
    
    
    循环体语句块;
}while(循环条件);

执行过程:

(1)先执行一次循环体语句块;

(2)判断循环条件

(3)如果循环条件成立,再次执行循环体语句块;然后回到(2)…

(4)如果循环条件不成立,就结束do…while循环;

​ 如果在循环体语句块中,遇到break,也会结束do…while循环;

注意:

(1)while(循环条件)中循环条件必须是boolean类型

(2)do{}while();最后有一个分号

(3)do…while结构的循环体语句是至少会执行一次,这个和for和while是不一样的

2.3.4 三种循环的选择

原则:三种循环之间是可以互相转换的,都能实现循环的功能

建议(习惯上):当我们次数比较明显的时候,或者说从几循环到几的时候,一般先考虑for;

​ 当循环体语句块至少要执行一次的时候,一般先考虑do…while;

​ 当循环条件比较明显,但是次数不明显,循环体语句块也不是至少执行一次,那么可以考虑while结构;

三种循环结构都具有四要素:

(1)循环变量的初始化表达式

(2)循环条件

(3)循环变量的修改的迭代表达式

(4)循环体语句块

2.3.5嵌套循环

一个循环体中嵌套了另一个完整的循环结构。一个循环充当另一个循环的循环体。

三种循环体中都可以嵌套另外任意一种循环结构

执行特点,先执行外层循环,外循环执行一次,内循环从头至尾执行一轮。总次数= 外循环次数*内循环次数

2.3.6 跳转语句

1、break

用于:

  • switch结构

作用:结束switch结构

  • 循环结构

作用:结束当前循环

2、continue

只能用于: 循环结构

作用:提前结束本次循环,继续下一次循环

3、return

猜你喜欢

转载自blog.csdn.net/m0_46988935/article/details/109658047