数组
数组的概念
类型相同数据的集合
- 可以存放任意类型的元素但同一个数组中
元素类型必须一致
创建数组
可以分为两个步骤
1.声明一个数组(不分配空间)
语法:数组类型[] 数组名
int [] array
//声明一个类型为int 的数组 数组名为array
2.创建一个数组(分配空间)
语法:数组名称=new 数组类型[数组大小]
array = new int[100]
声明和创建操作可以分成两条语句写也可以合成一条语句
int[] array=new int[100]//声明并创建数组array
数组的默认值
数组在创建完成之后 如果没有进行初始化则系统自动给元素赋值 这个值就是
默认值
- 不同类型数组的默认值
一般是不同
的
System.out.print("------不同数数组的默认初始值\n\n");
//创建几个类型不同的数组
byte[] array_byte = new byte[1]; //byte类型数组
short[] array_short = new short[1];//short类型数组
int[] array_int = new int[1];//int类型数组
long[] array_long = new long[1];//long类型数组
System.out.print("-----byte--short---int----long--\n");
System.out.print("byte类型的初始值为:" + array_byte[0] + " short类型的初始值为:" + array_short[0] + "\n" + "int类型的初始值为:" + array_int[0] + " long类型的初始值为" + array_long[0] + "\n");
//byte short int long 类型的初始值都为0
System.out.print("-----float--double--------\n");
float[] array_float = new float[1];
double[] array_double = new double[1];
System.out.print("float类型的初始值为:" + array_float[0] + "double类型的初始值为:" + array_double[0] + "\n");
//float和double类型的初始值都为0.0 浮点型的初始值为0.0
boolean []array_boolean=new boolean[1];
System.out.print("boolean类型的初始值为:"+array_boolean[0]+"\n");
//boolean(布尔)类型的初始值为false
char []array_char=new char[1];
System.out.print("char类型的初始值为:"+array_char[0]+"\n");
//char类型的初始值是一‘\u0000’也就是空格 注意 虽然是空格也算入数组长度内 空字符=空格
System.out.print("有一个空字符的数组大小为:"+array_char.length+"\n"); //相当于只有一个空格的字符串
System.out.print("空字符串长度为:"+"".length());//空字符串
//既然用字符数组来表示字符串所以 也就相当于只有一个空格的字符串-->" " 这个字符串的长度为1 而”“则是一个空字符串长度为0
小结
数组类型 | 默认值 |
---|---|
byte short int long | 0 |
float double | 0.0 |
char | ‘\u0000’ 一个空格 |
boolean | false |
数组的初始化
动态初始化
- 给定数组长度
- 系统自动为元素赋初值(默认值)
//动态初始化:只要给定数组长度,系统自动为元素赋值
int []arr1=new int[3];
静态初始化
- 不用给定数组长度 (系统自动计算)
- 定义数组的同时为数组的每个元素进行赋值
方式
- 方式1:
类型 []数组名 =new 类型 []{元素,元素,元素}
- 方式2:
类型 []数组名称 ={元素,元素}
更简洁
//静态初始化:定义数组的同时给每个元素赋值 长度由系统自动计算
int []arr2=new int[]{1,2,3};//静态初始方式1
int []arr3={1,2,3};//静态初始化方式2 更简洁
小结:
- 静态初始化和动态初始化的主要区别在于
是否给定数组长度
- 静态化初始数组由两种写法
其他
数组的简单使用
调用数组中的某个元素
对于数组而言 每个元素都由一个对应的数字称为
下标
(索引)
- 下标从0开始
假设数组大小为10则下标是从0~9 而不包括10
通过下标可以实现对数组元素的调用
//------------简单使用数组
//通过索引(下标)输出数组元素 下标从0开始 假设长度为100 则下标是从0~99而不是1~100
System.out.print("数组array[0]的值为" + array[0] + "\n");
System.out.print("下标从0~4的数组元素为:\n");
for (int i = 0; i < 5; i++) {
System.out.print(" " + array[i]);
}
System.out.print("\n");
//这里的数组array的值都是默认值0
获取数组长度
数组长度决定着该数组能存放多少个元素
- 可以通过
数组名.length
来获取数组长度- 也可以通过该方式获得字符串的长度 即
字符串.length
//-------获取数组长度
//语法 数组名称.length
System.out.print("数组array的长度为" + array.length + "\n");
//-----获取字符串的长度
System.out.print("字符串abc的长度为" + "abc".length + "\n");
数组的遍历
要想遍历整个数组 首先需要知道
数组长度
这样才可以控制循环
- 通过循环不断的改变数组下标从而实现对数组的遍历
//for循环
int []array=new int[5];
for (int i = 0; i < 5; i++) {
System.out.print(array[i]);
}
代码
public class Main {
public static void main(String[] args) {
//---------声明数组
// 数组类型 数组标识符 数组名称 也可以理解成声明变量 变量的类型为int[]
int[] array;//声明一个数组 类型为 int 名称为array
//创建数组并把地址赋值为array new int[100]创建大小为100的数组
array = new int[100]; //把 数组的地址赋值给array 这样就可以通过array来调用数组
//数组的初始值 对于int类型 元素的初始值都为0
//------------简单使用数组
//通过索引(下标)输出数组元素 下标从0开始 假设长度为100 则下标是从0~99而不是1~100
System.out.print("数组array[0]的值为" + array[0] + "\n");
System.out.print("下标从0~4的数组元素为:\n");
for (int i = 0; i < 5; i++) {
System.out.print(" " + array[i]);
}
System.out.print("\n");
//这里的数组array的值都是默认值0
//-------获取数组长度
//语法 数组名称.length
System.out.print("数组array的长度为" + array.length + "\n");
//-------------不同数组的默认初始值
System.out.print("------不同数数组的默认初始值\n\n");
//创建几个类型不同的数组
byte[] array_byte = new byte[1];
short[] array_short = new short[1];
int[] array_int = new int[1];
long[] array_long = new long[1];
System.out.print("-----byte--short---int----long--\n");
System.out.print("byte类型的初始值为:" + array_byte[0] + " short类型的初始值为:" + array_short[0] + "\n" + "int类型的初始值为:" + array_int[0] + " long类型的初始值为" + array_long[0] + "\n");
//byte short int long 类型的初始值都为0
System.out.print("-----float--double--------\n");
float[] array_float = new float[1];
double[] array_double = new double[1];
System.out.print("float类型的初始值为:" + array_float[0] + "double类型的初始值为:" + array_double[0] + "\n");
//float和double类型的初始值都为0.0 浮点型的初始值为0.0
boolean []array_boolean=new boolean[1];
System.out.print("boolean类型的初始值为:"+array_boolean[0]+"\n");
//boolean(布尔)类型的初始值为false
char []array_char=new char[1];
System.out.print("char类型的初始值为:"+array_char[0]+"\n");
//char类型的初始值是一‘\u0000’也就是空格 注意 虽然是空格也算入数组长度内 空字符=空格
System.out.print("有一个空字符的数组大小为:"+array_char.length+"\n"); //相当于只有一个空格的字符串
System.out.print("空字符串长度为:"+"".length());//空字符串
//既然用字符数组来表示字符串所以 也就相当于只有一个空格的字符串-->" " 这个字符串的长度为1 而”“则是一个空字符串长度为0
//-------数组的初始化
//动态初始化:只要给定数组长度,系统自动为元素赋值
int []arr1=new int[3];
//静态初始化:定义数组的同时给每个元素赋值 长度由系统自动计算
int []arr2=new int[]{1,2,3};//静态初始方式1
int []arr3={1,2,3};//静态初始化方式2
//相比之前 第二种方式更简洁
}
}