三、流程控制和数组

1、switch语句

Java增强了switch语句的功能,允许switch语句的控制表达式是java.lang.String类型的变量或表达式,不能是StringBuffer或者StringBuilder这两种字符串类型。
总结:switch语句后的表达式数据类型只能是byte、short、char、int四种整数类型,String和枚举类型。

2、控制循环结构

(1)break语句不仅可以结束其所在的循环,还可以直接结束其外层循环。此时需要在break后面紧跟一个标签,这个标签用于标识一个外层循环。

public class BreakTest
{
	public static void main(String[] args)
	{
		outer://外层标签
		for(int i = 0;i < 5;++i)
		{
			for(int j = 0;j < 3;++j)
			{
				if(j == 1)
				{
					break outer;
				}
				System.out.println("i的值是:" + i + " j的值是:" + j);
			}
		}
	}
}

(2)continue后面也可以紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环。

public class BreakTest
{
	public static void main(String[] args)
	{
		outer://外层标签
		for(int i = 0;i < 5;++i)
		{
			for(int j = 0;j < 3;++j)
			{
				if(j == 1)
				{
					continue outer;
				}
				System.out.println("i的值是:" + i + " j的值是:" + j);
			}
		}
	}
}

j无法超过1,每当j == 1的时候就会结束外层循环的当次循环,直接开始下一次循环。内层循环没有机会执行完成。

3、数组类型

Java语言是面向对象的语言,而类和类之间可以支持继承关系,这样可能产生一个数组里可以存放多种数据类型的假象。
(1)什么是数组类型?
数组本身也是一种引用类型。它保存着一个指针,指向数组元素,数组元素存放在堆中。
(2)如何定义数组类型?
java中有两种定义方式,一是type[] arrayName;二是 type arrayName[]。推荐使用第一种,要将arrayName当成一个变量。定义数组的时候不能指定数组的长度。
(3)数组如何进行初始化?
1)静态初始化

arrayName - new type[]{ele1, ele2, ele3,...};

此时的type可以和定义时的type相同,也可以是定义数组时所指定的type的子类。

type[] arrayName = {ele1, ele2, ele3,...};

也可以定义的时候就进行初始化。
2)动态初始化

arrayName = new type[length];

动态初始化只会指定数组的长度,由系统为每个数组元素指定初始值。

type[] arrayName = new type[length];

同样的定义的时候就进行初始化。
(4)数组的使用
1)所有的数组都有一个length的属性,通过这个属性可以得到数组的长度。
2)foreach的使用
语法格式:

for(type var:array|collection)
{
	//var自动迭代访问每一个元素
} 

foreach循环会自动遍历数组和集合的每个元素。foreach循环中的变量相当于一个临时变量,系统会把数组元素依次赋给这个临时变量,因此不能通过这个临时变量来修改数组元素的值。
(5)多维数组
虽然java中有支持多维数组的语法,但从数组底层的运行机制上来看并没有多维数组。
多维数组的定义和初始化:

type[][] arrName;
arrName = new type[length][];//相当于定义了length个type[]类型的变量
//静态初始化
String[][] str = new String[][]{new String[3], new String[]{"hello"}};

(6)数组的常用方法
在java中有一个Arrays的工具类,包含了一些数组常用的方法。

猜你喜欢

转载自blog.csdn.net/qq_35381323/article/details/84962751