程序员第二步-Java基础知识-运算符和流程控制

it2023-09-15  76

Java运算符和流程控制

运算符运算符的概述常用运算符算术运算符算术运算符的概述算术运算符的分类使用原则++、--的注意事项 赋值运算符赋值运算符的分类赋值运算符的使用赋值运算符的注意事项 关系运算符关系运算符的注意事项 逻辑运算符逻辑运算符的分类 三元运算符三元运算符的概述 流程控制三大结构顺序结构顺序结构的概念顺序结构的流程图 选择结构if语句if语句格式1及执行流程(图)if语句格式2及执行流程(图)if语句格式3及执行流程(图) switch语句switch语句格式案例 循环结构for语句for语句的格式和执行过程for语句案例 while语句while语句格式和执行过程while语句案例 do...while语句do...while语句格式和执行过程do...while语句案例 控制循环语句breakcontinuebreak和continue案例 嵌套循环嵌套循环语句格式和执行过程

运算符

运算符的概述

可以用来对常量和变量进行操作的符号称为运算符。

常用运算符

1.算术运算符 2.赋值运算符 3.逻辑运算符 4.三元运算符 5.关系运算符

算术运算符

算术运算符的概述

就是对常量和变量进行操作的控制

算术运算符的分类

+,-,*,/,%,++,–

使用原则

c=a+b c=a-b c=a/b c=a*b c=a%b

++、–的注意事项

i++和++i的区别在:i++是先使用在进行加1运算,++i是先进行+1运算在使用,i–与--i同理

int i = 1; System.out.println("i++="+(i++)); System.out.println("i="+i); int j = 1; System.out.println("++j="+(++j)); System.out.println("j="+j);

赋值运算符

赋值运算符的分类

1.基本的赋值运算符:= 2.扩展的赋值运算符:+=,-=,/=,*=,%=

赋值运算符的使用

public class Demo2 { //赋值运算符 public static void main(String[] args) { byte b = 10; byte a = 2; b+=a;//此行代码相当与b = b+a; System.out.println(b); } }

赋值运算符的注意事项

1.赋值运算符隐性包含了强制转换

public class Demo2 { //赋值运算符 public static void main(String[] args) { byte b = 10; // b = b+10;此行代码报错,因为属于大转小,需要进行强制转换 b+=10;//赋值运算符自动进行转换 System.out.println(b); } }

关系运算符

*>、<、>=、<=、==、!=

关系运算符的注意事项

1.关系运算符构成的表达式返回的结果为true或者false 2.判断一个数在某个范围内时不可以按照数学公式的写法(10<a<12),应该写成(a>10&&a<12),通过逻辑运算符与来连接。

逻辑运算符

逻辑运算符的分类

1.&&:与,格式:表达式1&&表达式2,当两个表达式均为真的时候,整体表达式的值为true,否则为false 2.||:或,格式:表达式1||表达式2,只要有一个表达式为真,则整体表达式为真 3.&:逻辑与,有0则0 4.|:逻辑或,有1为1 5.^ :逻辑异或:相同为false,不同为true。 6.!: 逻辑非:非false则true,非true则false。 7.~:加1取反

public class Demo4 { /* * 位运算符: * &:与,有0则0 * |:位或,有1为1 * ~:加1取反 * ^:异或,相同为0,不同为1 * */ /* 移位运算符: <<:左移运算符,左移一位,将原来的数*2 >>:右移运算符,右移一位,将原来的数/2 */ public static void main(String[] args) { System.out.println("5&2="+(5&2)); System.out.println("5|2="+(5|2)); System.out.println("5^2="+(5^2)); System.out.println("~5="+(~5)); System.out.println("2<<1="+(2<<1)); System.out.println("2>>1="+(2>>1)); } }

三元运算符

三元运算符的概述

三元运算符就相当于if语句一样,其格式为表达式?值1:值2,当表达式的值为true时,结果为值1,当表达式的值为false时,结果为值2

public class Demo5 { public static void main(String[] args) { //三元运算符 //表达式?值1:值2 //当表达式的值为true时,则为值1,否则为值2 System.out.println(1>2?9:99.0); System.out.println(1<2?'a':99.0);//这里需要注意,由于数据的最高类型是double,故自动转换,输出*.0 } }

流程控制

三大结构

1.顺序结构 2.选择结构 3.循环结构

顺序结构

顺序结构的概念

按照程序中语句的顺序依次执行语句的结构称为顺序结构,例如:

public class Demo { public static void main(String[] args) { System.out.println("这是语句1"); System.out.println("这是语句2"); System.out.println("这是语句3"); System.out.println("这是语句4"); } } /** * 输出结果 *这是语句1 * 这是语句2 * 这是语句3 * 这是语句4 */

很明显输出结果和语句对应的顺序是一致的。

顺序结构的流程图

选择结构

if语句

if语句格式1及执行流程(图)

if(布尔值or关系表达式){ 语句体1//此处填写代码,可以是0行或者多行 }

执行流程:当括号内的结果为true时,程序跳转到{}内执行{}内的语句,否则,跳过{}内的代码,执行后面部分剩余的代码

public class Demo { public static void main(String[] args) { int a = 1; int b = 2; if(a<b){ System.out.println("这是if语句内的语句1"); } System.out.println("这是其余的输出语句"); } } /** * 输出结果 * 这是if语句内的语句1 * 这是其余的输出语句 */ public class Demo { public static void main(String[] args) { int a = 1; int b = 2; if(a>b){ System.out.println("这是if语句内的语句2"); } System.out.println("这是其余的输出语句"); } } /** * 输出结果 * 这是其余的输出语句 */

观察上述两个程序可以发现,第二个程序比第一个程序少输出一个语句,因为程序2中if语句括号内关系表达式的值为false,所以不执行后面{}内的代码。

if语句格式2及执行流程(图)

if(布尔值or关系表达式){ 程序段1//此处写代码 }else{ 程序段2//此处写代码 }

执行流程:当括号内关系表达式或者布尔值为真时,执行程序段1,否则执行程序段2

public class Demo { public static void main(String[] args) { int a = 2; int b = 3; if(a<b){ System.out.println("这是语句1"); }else { System.out.println("这是语句2"); } } } /** * 输出结果 * 这是语句1 */ public class Demo { public static void main(String[] args) { int a = 2; int b = 3; if(a>b){//上一段程序为a<b System.out.println("这是语句1"); }else { System.out.println("这是语句2"); } } } /** * 输出结果 * 这是语句2 */

if语句格式3及执行流程(图)

if(布尔值or关系表达式1){ 程序段1//此处写代码 }else if(布尔值or关系表达式2){ 程序段2//此处写代码 }...else{ 程序段n//此处写代码 }

执行流程:首先判断关系表达式1看其结果是true还是false

如果是true就执行语句体1

如果是false就继续判断关系表达式2看其结果是true还是false

如果是true就执行语句体2

如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n

switch语句

switch语句格式

swith(表达式){ case 值1: 程序体1; break; case 值2: 程序体2; break; ... default: 程序体n; break }

注意事项: 1.switch括号里的表达式可以是byte,short,int char,JDK5以后支持了枚举(enum),JDK7以后支持了String 2.若case语句后面没有跟break,程序会继续向下执行,知道遇到break,或者switc语句体结束。 3.case后面的值是用来和switch后面的表达式进行匹配的,若case中没有匹配的值,则执行default.

案例
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ System.out.println("请输入(1-7,输入0退出)"); int n= sc.nextInt(); switch (n){ case 1: System.out.println("星期一"); case 2: System.out.println("星期二");break; case 3: System.out.println("星期三");break; case 4: System.out.println("星期四");break; case 5: System.out.println("星期五");break; case 6: System.out.println("星期六");break; case 7: System.out.println("星期日");break; default:System.exit(0);break; } } } } /** * 输出结果 * 请输入(1-7,输入0退出) * 1 * 星期一 * 星期二 * 请输入(1-7,输入0退出) * 2 * 星期二 * 请输入(1-7,输入0退出) * 5 * 星期五 * 请输入(1-7,输入0退出) * 0 * * Process finished with exit code 0 */

循环结构

for语句

for语句的格式和执行过程

for(初始化语句①;判断条件语句②;控制条件语句④) { 循环体语句③; }

执行过程:①②③④>②③④>②③④…当②的条件不再满足时就跳出循环

for语句案例

import java.util.Scanner; public class Demo { //输出1-20内的偶数 public static void main(String[] args) { for (int i = 1; i < 21; i++) { if(i%2==0){ System.out.print(i+" "); } } } } /** * 输出结果 * 2 4 6 8 10 12 14 16 18 20 * * Process finished with exit code 0 */

while语句

while语句格式和执行过程

初始化表达式① while(布尔表达式②){ 循环体语句;③ 控制条件语句;}

执行过程:执行顺序:①②③④>②③④>②③④…②不满足为止。

while语句案例

//while循环语句的基本格式 public class WhileDemo { public static void main(String[] args) { //输出10次HelloWorld /** for(int x=1; x<=10; x++) { System.out.println("HellloWorld"); } */ //while循环实现 int x=1; while(x<=10) { System.out.println("HellloWorld"); x++; } } }

do…while语句

do…while语句格式和执行过程

初始化表达式① do{ 循环体③ 控制条件语句④ }while(布尔表达式②);

执行过程:执行顺序:①③④>②③④>②③④…②不满足为止。

do…while语句案例

//do...while循环的基本格式 public class DoWhileDemo { public static void main(String[] args) { //输出10次 HelloWorld /** for(int x=1; x<=10; x++) { System.out.println("HelloWorld"); } */ //do...while改写 int x=1; do { System.out.println("HelloWorld"); x++; }while(x<=10); } }

三种循环的基本区别 1.do…while语句不论条件是否满足都会执行一次循环语句体,for和while只有在条件满足时才可以执行 2.若需要使用控制循环的变量,推荐使用while语句,for语句的条件变量在for语句结束后就失效。

控制循环语句

break

break适用于循环语句和switch语句中 break的作用主要是结束本层循环

continue

continue的作用是结束本次循环执行下一次循环

break和continue案例

import java.util.Scanner; public class Demo { //break和continue案例 public static void main(String[] args) { for (int i = 1; i < 7; i++) { if(i%3==0){ break; } System.out.println("演示break"); } for (int i = 1; i < 7; i++) { if(i%3==0){ continue; } System.out.println("演示continue"); } } } /** * 输出结果 * 演示break * 演示break * 演示continue * 演示continue * 演示continue * 演示continue * * Process finished with exit code 0 */

嵌套循环

嵌套循环语句格式和执行过程

以for语句为例子:

for(初始化表达式①; 循环条件②; 步进表达式⑦) { for(初始化表达式③; 循环条件④; 步进表达式⑥) { 执行语句⑤; } }

执行过程::①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥

外循环一次,内循环多次。

//打印出n行的金字塔图案 import java.util.Scanner; public class Test{ public static void main(String[] args){ int n=0; //输入的行数 int r=0; //当前行 int s=0; //的数量 int p=0; //空格的数量 Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); for(r=1;r<=n;r++){ //打印空格 for(p=1;p<=n-r;p++){ System.out.print(" "); } //打印 for(s=1;s<=2r-1;s++){ System.out.print(""); } //行换 System.out.print("n"); } } }
最新回复(0)