具有相同数据类型
的一组数据的集合。
(1)具有相同数据类型
,且在内存中连续分布。
(2)数组只能有一个数组名。(数组名不能重复)
(3)数组元素的编号称为下标
,下标从0
开始。
按照数据类型
分
整数型数组、浮点型数组、字符型数字、字符串型数组
按照维数
分:
一维数组
、二维数组、交错数组
目标:确定需求(什么类型的数组?数组叫什么名字?)
语法:
数据类型[] 数组名; // 推荐使用
数据类型 数组名[];
xxxxxxxxxx
// 声明数组
String[] names;
int ages[];
目标:确定数组长度并分配空间
语法:
xxxxxxxxxx
数据类型[] 数组名 = new 数据类型[数组长度];
xxxxxxxxxx
// 创建数组
names = new String[5];
ages = new int[5];
声明数组和创建数组可以合并成一步:(声明并创建)
xxxxxxxxxx
String[] names = new String[5];
int[] ages = new int[5];
xxxxxxxxxx
// 创建后初始化
names[0] = "张三";
names[1] = "李四";
names[2] = "王五";
names[3] = "马云";
names[4] = "马冬梅";
创建时初始化不需要设置数组长度,有多少数据数组长度就是多少。
xxxxxxxxxx
String[] names = new String[]{"张三","李四","王五","马云","马冬梅"};
String[] names = {"张三","李四","王五","马云","马冬梅"}; // 常用
在创建数组之后,没有进行赋值,Java会给每个数据类型设置一个默认值:
int :
0
double :
0.0
String :
null
char :
空字符
(空格)'\0'
boolean :
false
原则:
按照下标存,按照下标取
语法:
xxxxxxxxxx
数组名[下标];
xxxxxxxxxx
String[] sex = new String[3];
sex[0] = "男";
System.out.println(sex[0]);
语法:
xxxxxxxxxx
数组名.length;
xxxxxxxxxx
// 声明数组并创建
String[] names = new String[10];
// 获取数组长度
System.out.println(names.length);
xxxxxxxxxx
// 打印数组全部数据(遍历)
System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);
xfor(int i=0;i<=names.length-1;i++) {
System.out.println(names[i]);
}
for(int i=0;i<names.length;i++) {
System.out.println(names[i]);
}
foreach循环只针对于将所有数组元素按下标从0开始取出,语法:
xxxxxxxxxx
for(数据类型 循环变量:数组名){ // 循环变量:指需要取出的数据
// 循环体
}
xxxxxxxxxx
for(String name:names) {
System.out.println(name);
}
语法:(默认排序方式:升序(从小到大))
xxxxxxxxxx
Arrays.sort(数组名);
【案例】
输入5个整数,并将其按照升序和降序进行输出
【解答】
xxxxxxxxxx
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 声明并创建数组
int[] nums = new int[5];
// 初始化数据
for(int i=0;i<=nums.length-1;i++) {
// 12 28 33 17 29
nums[i] = input.nextInt();
}
// 数组排序
Arrays.sort(nums);
// 遍历数组元素(升序)
for(int i=0;i<=nums.length-1;i++) {
System.out.println(nums[i]);
}
System.out.println("--------------------------");
// 遍历数组元素(降序)
for(int i=nums.length-1;i>=0;i--) {
System.out.println(nums[i]);
}
}
}