第二章 运算符与Java判断,循环语句
2.7 运算符
2.7.1 运算符的概述
运算符是一种特殊的符号,用于表示数据的运算,赋值,比较等。
分为:算术运算符 赋值运算符 比较运算符(关系运算符) 逻辑运算符 位运算符 三元运算符 。
2.7.2 算术运算符
2.7.3 赋值运算符
符号:=;当” =“两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理,支持连续赋值。
扩展赋值运算符:+=,-=,*=,/=,%=
2.7.4 比较运算符
比较运算符的结果都是boolean型数据,也就是要不 true,要不 false。
比较运算符 ” == “ 不能误写成 ” = “。
2.7.5 逻辑运算符
用于连接布尔型表达式,Java中不可以写成 3 < x < 6,应该写成 x > 3 & x < 6。
”&“和”&&“ 的区别
”&“,左边无论真假,右边都进行运算;
”&&“,如果左边为真,右边参与运算,如果左边为假,那右边不参与运算。
”|“和”||“的区别同理,||表示:当左边为真,右边不参与运算。
异或(^)和(|)的不同之处是:当左右都为true时,结果为false。
一:x = 2,y = 2;二:x = 2,y = 1;三:x = 7,y = 2;四:x = 7,y = 1;
2.7.6 位运算符
位运算是直接对整数的二进制进行计算
2.7.7 三元运算符
格式:(条件表达式) ? 表达式1 : 表达式2;
条件表达式为 true,执行表达式1;条件表达式为false,执行表达式2。
表达式1和表达式2为同种类型。
三元运算符与 if-else的区别:
①.三元运算符可简化if-else语句
②.三元运算符必须返回一个结果
③.if后的代码块可有多个语句
如果程序既可以使用三元运行算符,有可以使用if-else结构,那么优先选择三元运算符。原因:简洁,执行效率高。
2.7.8 运算符的优先级
运算符有不同的优先级,所谓优先级就是表达式中的运算顺序。如下表,上一行的运算符总优先于下一行。只有单目运算符,三元运算符,赋值运算符是从右向左运算。
2.8 程序流程控制
2.8.1 概述
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
①.顺序结构:程序从上到下逐行的执行,中间没有任何判断和跳转;
②.分支结构:根据条件,选择性的执行某段代码,有 if-else 和 switch-case两种分支语句;
③.循环结构:根据循环条件,重复性的执行某段代码,有 while,do...while,for三种循环语句,注:JDK1.5提供了foreach循环,方便了遍历集合,数组元素。
2.8.2 顺序结构
分支语句:if-else结构:
第一种格式:if( 条件表达式 ){ 执行代码块 } 一选一
第二种格式:if( 条件表达式 ){ 执行代码块1 }else{ 执行代码块2 } 一选二
第三种格式:if( 条件表达式 ){ 执行代码块1 }else if( 条件表达式2 ){ 执行代码块2 }else if( 条件表达式3 ){ 执行代码块3 }else{ 执行代码块4 } 多选多
练习
分支语句:switch-case 结构:
switch语句有关规则:
①.switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举(jdk 5.0),String(jdk 7.0)
②.case子句中的值必须是常量,不能是变量名或不确定的表达式值
③.同一个switch语句,所有case子句中的常量值互不相同
④.break语句用来执行玩一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
⑤.default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default
import java.util.Scanner;
public class Person {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int j = i % 12;
switch (j){
case 4:
System.out.println("Rat:"+"鼠");
break;
case 5:
System.out.println("Ox:"+"牛");
break;
case 6:
System.out.println("Tiger:"+"虎");
break;
case 8:
System.out.println("Dragon:"+"龙");
break;
case 9:
System.out.println("Snake:"+"蛇");
break;
case 10:
System.out.println("Horse:"+"马");
break;
case 11:
System.out.println("Sheep:"+"羊");
break;
case 0:
System.out.println("Monkey:"+"猴");
break;
case 1:
System.out.println("Rooster:"+"鸡");
break;
case 2:
System.out.println("Dog:"+"狗");
break;
case 3:
System.out.println("Pig:"+"猪");
break;
default:
System.out.println("输入有误");
}
}
}
2.8.3 循环结构
循环语句的四个组成部分:初始化部分(init_statement),循环条件部分(test_exp),循环体部分(body_statement),迭代部分(alter_statement)
循环结构:for循环:
for循环是编程语言中一种循环语句,而循环语句由及循环体循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。
public class Person {
public static void main(String[] args) {
for (int i = 0; i < 150; i++) {
if (i % 3 == 0) {
System.out.println("foo");
} else if (i % 5 == 0) {
System.out.println("biz");
} else if (i % 7 == 0) {
System.out.println("baz");
}
System.out.println();
}
}
}
循环结构:while循环:
while是j计算机的一种基本循环模式。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为:while(循环条件){循环体}。循环条件一定不能丢,丢了会导致死循环状态。
循环结构:do while循环:
do...while 循环是while循环的变体。在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do...while这个循环,直至while()为假。
import java.util.Scanner;
public class Person {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int positiveNumber = 0;//记录正数的个数
int negativeNumber = 0;//记录负数的个数
while (true){
int number = scanner.nextInt();
//判断number的正负情况
if (number>0){
positiveNumber++;
}else if(number<0){
negativeNumber++;
}else {
break;
}
}
System.out.println("输入正数的个数为:"+positiveNumber);
System.out.println("输入负数的个数为:"+negativeNumber);
}
}