数组串讲
数组
一、内容
-
数组的概念
-
数组的创建方式
-
数组的赋值与取值
-
数组的遍历
二、数组的概念
数组是内存当中所开辟的一串连续的空间
特点:
-
连续空间
-
数据类型保持一致
-
长度固定
-
不能越界操作
三、数组的创建方式
语法:数据类型[] 数组名 = new 数据类型[长度];
申明方式:
- 先申明再赋值
int[] is;
is = new int[10];
- 边申明边赋值
int[] is = new int[10];
- 连续申明赋值
int[] is1 , int[] is2 ;
注意:
数组的长度是固定的,在创建数组的时候就需要确定好。一旦确定好,就无法发生改变。
案例
public class CreateArray {
public static void main(String[] args) {
//基本数据类型
byte[] bs = new byte[10];
short[] sts = new short[10];
int[] is = new int[10];
long[] ls = new long[10];
float[] fs = new float[10];
double[] ds = new double[10];
char[] cs = new char[10];
boolean[] bls = new boolean[10];
//引用数据类型
String[] strs = new String[10];
}
}
四、数组的赋值和取值
-
赋值
根据数组的游标进行赋值
注意:
- 数组的游标从0开始
- 数组的最大游标为[数组长度-1]
- 如果游标超出范围,会出现游标越界异常
int[] is = new int[10];
is[0] = 100;
is[is.length - 1] = 900;
游标越界:
public class IndexOutBounds {
public static void main(String[] args) {
//游标越界
int[] is = new int[10];
is[-1] = 100;
is[10] = 900;
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at com.qf.demo01.IndexOutBounds.main(IndexOutBounds.java:7)
-
取值
数组的取值同样是根据游标获取
int[] is = new int[10];
is[0] = 100;
int i = is[0];//取值后放入一个变量备用
-
数组的静态申明方式
-
在同一行内申明并赋值
-
可以先申明再赋值
-
目的:是为了给初始化的数组一个预设值
public class CreateStaticArrays {
public static void main(String[] args) {
//数组的静态申明
//让数组拥有预设值
//只能在同一行申明并赋值
int[] is1 = {10,20,30};
//可以先申明再赋值
int[] is2;
is2 = new int[]{10,20,30};
}
}
-
数组的预设值
三大类
- 数值:整数的预设值为0 , 浮点数的预设值为0.0
- 字符和布尔类型:字符是空格,布尔类型是false
- 引用类型:默认值null
public class DefaultArrayItem {
public static void main(String[] args) {
//基本数据类型
byte[] bs = new byte[10];
short[] sts = new short[10];
int[] is = new int[10];
long[] ls = new long[10];
System.out.println(ls[0]);
float[] fs = new float[10];
double[] ds = new double[10];
System.out.println(ds[0]);
char[] cs = new char[10];
System.out.println(cs[0]);
boolean[] bls = new boolean[10];
System.out.println(bls[0]);
//引用数据类型
String[] strs = new String[10];
System.out.println(strs[0]);
}
}
结果
0
0.0
[这是一个空格^_^]
false
null
五、数组的遍历
1.案例
public class ForeachArray {
public static void main(String[] args) {
//创建一个数组
int[] is = {100,200,300,400,500};
//常规遍历方式
for(int index = 0 ; index < is.length ; index ++){
int item = is[index];
System.out.println(item);
}
//foreach
for(int item : is){
System.out.println(item);
}
}
}
2.差异
-
常规的遍历方式可以自由的定义游标起止位置,以及迭代方式
-
foreach只能从数组的开始遍历到结尾,但是其语法更加的精炼
3.foreach同样可以维护游标
int index = 0;
for(int item : is){
System.out.println(item);
index ++;
}
4.可以一边遍历,一边往数组内赋值
Scanner sca = new Scanner(System.in);
System.out.print("请输入学生数量:");
int studentNumber = sca.nextInt();
//通过遍历数组进行赋值
double[] scores = new double[studentNumber];
for(int i = 0 ; i < scores.length ; i ++){
System.out.print("请输入第"+(i+1)+"位学生的成绩:");
scores[i] = sca.nextDouble();
}