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的工具类,包含了一些数组常用的方法。