第五章 条件判断与循环
5.1布尔表达式
条件语句和循环语句可用于控制程序的执行流程。
条件语句:if语句,if-else语句,switch语句
循环语句:while语句,do语句,for语句
这两种语句中的布尔表达式都是基于相等性运算符,关系运算符,逻辑运算符的
相等性运算符:== 和 != (注意,相等性运算符不等同于赋值运算符)
关系运算符:< > >= <=
逻辑运算符:!(非) &&(与) ||(或)
在这三种逻辑运算符中的优先级:非>与>或
逻辑运算符中,“&&”和“||”具有短路性,即可能通过第一表达式确定结果,不进行第二个表达式的判断,而“&”不具备短路性,前后表达式都进行完再判断
5.2if语句和if-else语句
if语句在条件为true时执行,为false时不执行
if-else语句在条件为true时执行if语句,为false时执行else语句
if和else都只对下面一行有效应,必要时要使用{}语句块
当if语句嵌套时,else子句和它前面最近且未匹配的if语句相匹配,但是可以使用括号来界定else子句属于哪一条if语句
例如:if()
{
if()
}else//此时else子句属于第一个if语句
5.3switch语句
switch()
{
case' ':
break;
case' ':
break;
default:
}
switch语句中括号内运算结果必须为字符型或者整型值(char,byte,short,int,最近版本又添加了String类,但不可为boolean或者float型),而且case语句中表达式必须为常量,不可为变量或者其他表达式。
每个case语句后都记得加break,否则后面的将会依次执行,直到遇见一个break,才会跳出switch语句。
5.4while语句和do语句
while语句中的循环体可能不执行,do语句保证了循环体至少执行一次
嵌套循环:当一个循环体中包含另一个循环,这称为嵌套循环
经典例题:略
5.5next()与nextLine()方法的区别
next()读取时遇到空格即结束,而nextLine()方法是遇到回车即结束,值得注意的是当键盘输入时,末尾处会敲回车键,因此nextLine()可能会因此结束
经典例题:
import java.util.Scanner; //Scanner中nextLine()方法和next()方法的区别 public class ScannerString { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入字符串(next):"); String str = input.next(); System.out.println(str); System.out.println("请输入字符串(nextLine):"); String str1 = input.nextLine(); System.out.println(str1); } }
面板:
请输入字符串(next):
我是 大王
我是
请输入字符串(nextLine):
大王//大王前有空格
当next()方法遇到“我是”后面的空格立即停止读取并输出字符串“我是”
剩下的“ 大王”则被nextLine()方法读取并输出,由于大王后面有回车键,则nextLine方法遇到回车即停止读取,因此如果输入的为“我是大王”,也就是中间没有空格的情况,那么由于大王后有回车,则nextLine方法不会有输出
请输入字符串(next):
我是大王
我是大王
请输入字符串(nextLine):
Process finished with exit code 0
5.6ArrayList类
ArrayList<E>,E可以是String,Book,Integer但不可以是简单类型int,double
方法:
add(int index,E obj),在索引为index处添加E,后面的依次后退一个,索引值加一
list1.addAll(list2)将list2中的元素全部添加到list1后面
eg.abcd efgh 然后abcdefgh
list1.addAll(2,list2)将list2中的元素从索引值为2处开始放置
eg.abcd efgh 然后abefghcd
list1.removeAll(list2)按照list2将list1中对应的元素删掉,但若list2中的元素list1中没有,则list1不执行删除,编译器不报错
.clear()清空
list.set(2,“m”)将list中下标值为2的元素改为m,其他的不发生改动
list.get(2)获取索引值为2的元素