数组
数组用来存储一组大小固定并且类型相同的数据,这些数据可以通过索引进行访问.
创建数组
声明一维数组
int a[];//声明一个整型数组
给数组分配空间
int[] array=new int[100];
当数组使用new分配存储空间后,数组中的元素会有默认初始值.其中:
- 数值类型的数组初始值为0;
- 布尔类型的为false;
- 引用类型的则为null(空引用).例如,字符串String就是引用类型;
- 字符型的为’\0’(字符串结束标识).
创建数组时的3个步骤:
(1)在栈中创建一个数组变量;
(2)在堆内存中给数组分配存储空间;
(3)初始化数组中的元素值(即给数组元素初始化一个相应数据类型的默认值).
初始化数组
初始化方式有两种:静态初始化和动态初始化
数组静态初始化
int[]a={1,2,3,4,5};
或者可以
int[]a=new int[]{1,2,3,4,5};
数组动态初始化
示例1:
int[]a=new int[2];
a[0]=1;
a[1]=2;
示例2:
int[]array=new int[10];
for(int i=0;i<10;i++){
array[i]=i+1;
}
foreach遍历数组
使用foreach循环遍历数组和集合元素时,无须获得数组和集合长度,也无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素.
注意:当使用foreach循环输出数组和集合中的元素时,通常不要对循环变量进行赋值,虽然这种赋值在语法上是允许的,但没有太大的意义,而且极容易引起误会.
foreach(数据类型 变量名:数组名)
其中,foreach语句中的数据类型必须与数组的数据类型一致.
二维数组
语法:
数据类型[][]数组名;
/**
日期:2021.12.30
内容:声明数组
数组初始化
二维数组初始化
*/
public class book6{
public static void main(String[] args){
//声明数组
//声明一个整型数组a
int[] a;
//给数组a分配存储空间:10*4个字节
a=new int[10];
double[] b=new double[10];
char[]c=new char[100];
boolean[]d=new boolean[20];
String[]str=new String[5];
//输出各数组的数组名
System.out.println(a);//输出数组对象的哈希码
System.out.println(b);//输出数组对象的哈希码
System.out.println(c);//输出字符数组中的内容
System.out.println(d);//输出数组对象的哈希码
System.out.println(str);//输出数组对象的哈希码
System.out.println("************************");
//输出个数组中第一个元素的值
System.out.println(a[0]);
System.out.println(b[0]);
System.out.println(c[0]);
System.out.println(d[0]);
System.out.println(str[0]);
System.out.println("************************");
//输出各数组的长度
System.out.println("a.length="+a.length);
System.out.println("b.length="+b.length);
System.out.println("c.length="+c.length);
System.out.println("d.length="+d.length);
System.out.println("str.length="+str.length);
//初始化数组
//静态初始化
int[] aa={5,7,20};
int[]bb=new int[4];
for(int i=0;i<bb.length;i++){
b[i]=i+1;
}
System.out.println("数组aa中的元素是:");
for(int i=0;i<aa.length;i++){
System.out.print(aa[i]+" ");
}
System.out.println();
//输出数组bb的长度
System.out.println("数组bb的长度:"+bb.length);
//输出bb数组中的元素
System.out.println("数组bb中的元素是:");
for(int i=0;i<bb.length;i++){
System.out.print(bb[i]+" ");
}
System.out.println();
//因为aa是int[]类型,bb也是int[]类型,所以可以将aa的值赋给bb
//也就是让bb引用指向aa引用指向的数组
bb=aa;
//再次输出bb数组的长度
System.out.println("bb数组的长度:"+bb.length);
//foreach遍历数组
//定义初始化数组,使用静态初始化
int[]aaa={5,7,20};
//使用foreach语句遍历输出aaa数组中的元素
System.out.println("aaa数组中的元素是:");
for(int e:aaa){
System.out.println(e);
}
//二维数组
//创建二维数组并初始化
int[][]aaaa={{1,2},{3,4},{5,6}};//静态初始化
int[][]bbbb=new int[2][2];//动态初始化
bbbb[0][0]=1;
bbbb[0][1]=2;
bbbb[1][0]=3;
bbbb[1][1]=4;
//二维数组的使用
int[][]ccc={{1,2,3},{4,5,6}};
System.out.println("数组ccc一维长度:"+ccc.length);
System.out.println("数组ccc的二维长度:"+ccc[0].length);
System.out.println("数组ccc中的元素:");
//使用双重循环嵌套进行输出
for(int i=0;i<ccc.length;i++){
for(int j=0;j<ccc[i].length;j++){
System.out.print(ccc[i][j]+" ");
}
System.out.println();
}
System.out.println("------------------------");
//二维数组动态初始化,一维和二维都指定长度
int[][]cccc=new int[3][4];
//使用嵌套的for循环进行初始化二维数组
for(int i=0;i<cccc.length;i++){
for(int j=0;j<cccc[i].length;j++){
cccc[i][j]=i+j;
}
}
System.out.println("数组cccc中的元素:");
//使用嵌套的for循环进行输出
for(int i=0;i<cccc.length;i++){
for(int j=0;j<cccc[i].length;j++){
System.out.print(cccc[i][j]+" ");
}
System.out.println();
}
System.out.println("---------------------------");
//声明二维数组时,只给出一维长度
int[][]dd=new int[2][];
//二维长度不等
dd[0]=new int[3];
dd[1]=new int[4];
//初始化
for(int i=0;i<dd.length;i++){
for(int j=0;j<dd[i].length;j++){
dd[i][j]=i+j;
}
}
System.out.println("数组d中的元素:");
//使用嵌套的for循环输出
for(int i=0;i<dd.length;i++){
for(int j=0;j<dd[i].length;j++){
System.out.print(dd[i][j]+" ");
}
System.out.println();
}
}
}
/**
日期:2021.12.31
内容:使用循环语句实现菜单驱动,当用户选择0时退出应用
*/
import java.util.Scanner;
public class MenuDriver{
public static void main(String[] args){
//建立一个从键盘接收数据的扫描器
Scanner scanner=new Scanner(System.in);
while(true){
//输出菜单
System.out.println("***********************");
System.out.println("*1:数据采集 2:数据匹配*");
System.out.println("*3:数据记录 4:数据显示*");
System.out.println("*5:数据发送 6:退出应用*");
System.out.println("***********************");
//提示用户输入要操作的菜单项
System.out.print("请输入菜单项(0~5):");
//接受键盘输入的选项
int choice=scanner.nextInt();
switch(choice){
case 1:
System.out.println("数据采集中...");
break;
case 2:
System.out.println("数据匹配中...");
break;
case 3:
System.out.println("数据记录中...");
break;
case 4:
System.out.println("数据显示中...");
break;
case 5:
System.out.println("数据发送中...");
break;
case 6:
//应用程序退出
System.out.println("应用程序退出!");
System.exit(0);
default:
System.out.println("请输入正确的菜单项(0~5):");
}
}
}
}