有了前面的数组讲解,我们可以在一个数组里面添加很多个元素,也可以把它们挨个的取出来使用,但是怎样实现动态的添加和取出呢?这就要用到循环了,让计算机循环的去存取。另外,这里也讲解一下判断语句。
首先是判断语句,如果你学习过其他的语言,那么这里对你而言就太简单了!一般而言程序的结构可以大致分为以下三种:顺序结构、选择结构、循环结构。它们的实现就是靠判断语句来实现,我们只需要掌握以下四个知识点就可以很好的运用判断语句了:1、if 的三种形式;2、if 的嵌套使用;3、掌握switch 的使用;4、区分switch和if语句。
首先是if的三种使用方式:单分支if语句、双分支if语句、多分支if语句,如下代码所示:
package nice.iftest;
import java.util.Scanner;
public class IfTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入月份:");
Scanner scanner = new Scanner(System.in);// 获取键盘输入
int num = scanner.nextInt();// 将键盘输入的值赋给num这个变量
// 单分支
if (0 > num && num > 12) {
System.out.println("您输入的月份有误");
}
// 双分支
if (num <= 3) {
System.out.println("您输入的月份属于:春季");
} else {
System.out.println("您输入的月份不属于:春季");
}
// 多分支
if (num > 3 && num <= 6) {
System.out.println("您输入的月份属于:夏季");
} else if (num > 6 && num <= 9) {
System.out.println("您输入的月份属于:秋季");
} else if (num > 9 && num <= 12) {
System.out.println("您输入的月份属于:冬季");
} else {
System.out.println("您输入的月份属于:春季");
}
}
}
再来看if的嵌套使用,所谓嵌套使用就是if判断里面再用if语句,推荐不要使用太多的嵌套。
package nice.iftest;
import java.util.Scanner;
public class IfTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入月份:");
Scanner scanner = new Scanner(System.in);// 获取键盘输入
int num = scanner.nextInt();// 将键盘输入的值赋给num这个变量
// 第一个if
if (num > 0 && num <= 12) {
System.out.println("您输入的月份符合要求,我们马上为您算出哪个季节");
// 第二个if套在第一里面的
if (num >= 1 && num <= 3) {
System.out.println("春季");
// 第三个if语句,套在第二个里面的
if (num == 1) {
System.out.println("您输入的是春季的第一个月份");
} else if (num == 2) {
System.out.println("您输入的是春季的第二个月份");
} else {
System.out.println("您输入的是春季的第三个月份");
}
}
} else {
System.out.println("请重新输入");
}
}
}
接下来是switch语句的使用,这里需要说明一下:
switch语句特点:
1.switch语句选择的类型只有四种:byte,short,int,char。(byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。)
2.case之间与default没有顺序。先执行第一个case,没有匹配的case执行default
3.结束switch语句的两种情况:遇到break,执行到switch语句结束
4.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
5.由于在JDK7.0中引入了新特性,所以witch语句可以接收一个String类型的值,String可以作用在switch语句上
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句。
注意:如果将default语句放在了第一行,则不管语句与case中的value是否匹配,程序都会从default开始执行直到第一个break出现。
import java.util.Scanner;
public class JudgeMonth {
public static void main(String[] arg){
Scanner scan = new Scanner(System.in);
System.out.println("请输入月份:");
int month = scan.nextInt();
switch(month){
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("没有这个月份!请重新输入.");
}
}
}
最后就是if和switch的区分使用了, if语句和switch语句很像,那具体什么时候用switch语句呢?如果判断的具体数据值不多,而且是byte,short,int,char这四种类型,建议使用switch语句。虽然if也可以用,但这种情况用switch效率相对更高一些。
再接着我们再来讲解循环语句,java现目前的循环语句主要分while和for循环、foreach循环以及迭代器循环,下面着重讲解一下:
什么时候使用循环结构呢?当要对某些语句执行很多次时,就使用循环结构。
1.while语句
while语句有两种,一个是while,一个是do while。
while语句格式:
while(条件表达式)
{
执行语句;
}
while语句:先判断条件,只有条件满足才执行循环体。
do while语句格式:
do{
执行语句;
}while(条件表达式);
do while语句:先执行循环体,在判断条件,条件满足在继续执行循环体。
do while语句特点:无论条件是否满足,循环体至少执行一次。
2.for语句
格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
示例:
for(int x=0;x<10;x++)
{
System.out.println(x);
}
3.(增强for循环)foreach:
List a = new ArrayList();
a.add("a");a.add("b");a.add("c");a.add("d");
for(int i=0;i<a.size();i++){
System.out.println(a.get(i));
}
for(Object i : a){
String b=(String) i;
System.out.println("foreach==="+b);
}迭代器:
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。(2) 使用next()获得序列中的下一个元素。(3) 使用hasNext()检查序列中是否还有元素。Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
迭代器应用:迭代器用于while循环。
for语句要注意的地方:
1.变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。for语句执行完毕,该变量在内存中被释放。也可以定义在for外面,这它就不光只在for语句内有效,一般如果你只是在for语句中能用到这个变量,你就不要把它定义到外面,以便节省内存。
2.for和while可以进行互换。区别在于:如果需要定义变量控制循环次数。用for更合适。因为for循环完毕,变量在内存中释放
循环中需要特别注意的几点:
package nice.iftest;
import java.util.Scanner;
public class IfTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入数字:");
Scanner scanner = new Scanner(System.in);// 获取键盘输入
int num = scanner.nextInt();// 将键盘输入的值赋给num这个变量
//注意控制循环的跳出,直接跳出整个循环,out定义在哪里就跳出哪里的循环
/*
out:for (int i = num; i > 0; i--) {
while (i == 6) {
System.out.println("等于6了");
break out;
}
System.out.println("倒序后为:" + i);
}*/
//跳出while语句继续执行for循环的内容,out定义在哪里,就跳到哪个地方开始继续循环
out:for (int i = num; i > 0; i--) {
while (i == 6) {
System.out.println("等于6了");
continue out;//continue;如果前面去掉“out:”这里这样写,就会进入死循环状态
}
System.out.println("倒序后为:" + i);
}
}
}
首先注意是“out”的使用,另外
switch与if之间if用到更广泛。if语句是可以嵌套的。语句嵌套形式其实就是语句里还有语句。
循环嵌套:for(){for(){}}。
无限循环的最简单表现形式:1.for(;;){} 2.while(true){}
if语句和for语句是比较重点的,要熟练掌握。
在switch中的break是可以省略的,编译也会成功,但如果省略了就会一直执行到遇到break为止,所以最好不要忘记加break。
第一:break语句通常用在循环语句和开关语句中,当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
第二:continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。
第三: return语句是将函数的值返回主调函数。