一、循环
Java的for,while
循环与C/C++及其相似,不同之处在于Java提供了更强大的跳出循环的功能。在Java中,break
不仅可以跳出当前循环,还可以跳出更外层指定循环层的循环,此时需要在break
后加一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟英文冒号的标识符,且放在循环语句前。示例程序如下:
public static void main(String[] args)
{
outer:
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
System.out.println("i的值为:" + i + " j的值为" + j);
if(j==2) break outer;
}
}
二、数组
Java定义数组有两种方式,以int
型数组为例,可以是int[] a
和int a[]
两种,一般用第一种。可以先声明数组大小再赋值初始化,也可以不声明大小直接初始化,示例程序如下:
public static void main(String[] args)
{
int[] a = new int[10]; // 先声明数组大小再赋值
for(int i = 0; i < a.length; i++)
a[i] = i*i;
int[] b = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 直接赋值
for(int i = 0; i < a.length && i < b.length; i++)
System.out.println(a[i] + " " + b[i]);
}
Java提供了数组的foreach
循环,语法格式如下:
for(type t: array)
{
// t自动迭代访问每个元素...
}
举个例子:
public static void main(String[] args)
{
int[] a = new int[10];
for(int i = 0; i < a.length; i++)
a[i] = i*i;
for(int t: a)
System.out.print(t+" ");
}
Note!!!foreach
这种循环可以遍历数组,但不能用于赋值操作。
多维数组方式相似,以二维数组为例,先用辅助函数arrInfo
用于打印数组信息,接着在主函数中用直接赋值和先声明大小再赋值两种方式分别进行演示:
public class basicData {
public static void arrInfo(int[][] a)
{
for(int i = 0; i < a.length; i++)
{
for(int j = 0; j < a[i].length; j++)
{
System.out.print(a[i][j]+ " ");
}
System.out.println();
}
}
public static void main(String[] args)
{
int[][] a = {{1, 2}, {3, 4}};
int[][] b = new int[2][2];
arrInfo(a);
for(int i = 0; i < b.length; i++)
for(int j = 0; j < b[i].length; j++)
b[i][j] = 1;
arrInfo(b);
}
}
三、Arrays类
Arrays类封装了很多现成的操作数组的方法,包括二分查找、排序、赋值等等。下面以一个简单的实例展示:
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3, 4, 5};
// 二分查找,要求数组升序排列,搜索范围是[0, a.length-1]
int index = Arrays.binarySearch(a, 3);
System.out.println(index); // index=2
// 二分查找,要求数组升序排列,搜索范围是[fromIndex, toIndex)
int index2 = Arrays.binarySearch(a, 1, 4, 2);
System.out.println(index2); // index2=1
// 将一个数组中元素复制到另一个数组中去
int[] b = Arrays.copyOf(a, a.length); // b1={1,2,3,4,5}
// 将一个数组中范围为[from, to)的元素复制到另一个数组中去
int[] b2 = Arrays.copyOfRange(a, 1, 4); // b2={2,3,4}
// 判断两个数组是否相等
boolean flag = Arrays.equals(a, b);
System.out.println(flag); // flag=true
// 将数组元素全部赋值为val
Arrays.fill(a, 1); // a={1,1,1,1,1}
// 将数组元素从fromIndex到toIndex-1赋值为val
Arrays.fill(a, 1, 4, 2); // a={1,2,2,2,1}
// 将数组排序
int[] c = {3, 1, 2, 1, 5, 4};
Arrays.sort(c); // c={1,1,2,3,4,5}
// 将数组转化为字符串,数组元素用','+' '方式隔开
String str = Arrays.toString(c);
System.out.println(str); // str=[1, 1, 2, 3, 4, 5]
}