目录
前言
What:数组是什么
Why:为什么使用数组
How:数组怎么用
数组使用代码举例
前言
上一篇小编带大家回忆了一把Java中的方法以及方法的重载,今天小编带大家来看一下Java当中的数组,又是一个很基础的知识点。小编相信,水滴方能石川,一名优秀的程序员除了丰富的项目经验以外,还需要扎实的基础,一步一个脚印,希望这篇文中能对正在看的你所有帮助和启发。
What:数组是什么
数组的概念:数组是一种容器,可以同时存放多个数据类型一致的数据值。
数组的特点:
1.数组是一种引用数据类型;
2.数组当中的多个数据,数据类型必须保持一致;
3.数组的长度在运行期间不可以改变。
Why:为什么使用数组
为什么要使用数组,这就要从变量的使用来说了。通常来说,我们定义一个变量,一般只给它赋一个值,如果想要给同一数据类型的变量的赋值时也可以写成:int a=5,b=7,c=10;但是这也是定义了int类型的3个变量a,b,c,分别给他们赋值的。假设这时候我们要统计小组成员的成绩,5个人我们可以定义5个变量来接收成绩。但是如果这时候要求统计全班的成绩,难道你要定义50个变量来接受全班同学的成绩吗?这样明显加大了我们的工作量。而数组却可以解决这个问题,就像上面的定义所说:数组是一种容器,可以同时存放多个数据类型一致的数据值。
How:数组怎么用
2种常见的数组初始化方式:
1.动态初始化(指定长度):在创建数组的时候,直接指定数组当中数据的元素个数。
2.静态初始化(指定内容):在创建数组的时候,不直接指定数据个数多少,而是直接将具体的数据内容进行指定。
初始化数组的格式:
1.动态初始化格式: 数据类型[] 数组名称=new 数据类型[数组长度];
2.静态初始化格式: 数据类型[] 数组名称=new 数据类型[]{元素1,元素2,元素3,...};
静态初始化数组的省略写法:
数据类型[] 数组名称 ={元素1,元素2,元素3,...};
注意:虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素的具体内容,可以自动推算出来长度。
数组定义代码举例:
public class Demo01Array {
public static void main(String[] args) {
//动态初始化数组:创建一个数组,里面可以存放300个int数据
int[] arrayA=new int[300];
//动态初始化数组:创建一个数组,里面可以存放5个字符串
String[] arrayC=new String[5];
//静态初始化数组:直接创建一个数组,里面装的全都是int数字,具体为:5 15 25
int[] arrayInt=new int[]{5,15,25};
//静态初始化数组:直接创建一个数组,里面装的全都是字符串,具体为:“Hello” "World" "Java"
String[] arrayStr=new String[]{"Hello","World","Java"};
//静态初始化数组的省略写法
int[] arrayInt={1,5,9};
}
}
定义数组初始化拆分注意事项:
1.静态初始化的标准形式可以拆分成两部分;
2.动态初始化的标准形式也可以拆分成两部分;
3.静态初始化一旦使用省略形式,就不能拆分成两个步骤了。
//动态初始化的标准形式可以拆分成两部分
int [] arrayA;
arrayA=new int[5];
//静态初始化的标准形式也可以拆分成两部分;
int[] arrayB;
arrayB=new int[]{5,7,9};
数组使用代码举例
数组默认值:使用动态初始化数组的时候,元素会有一个默认值
public class Demo03ArrayUse {
public static void main(String[] args) {
String[] arrayA=new String[3];
int[] arrayB=new int[5];
//直接打印数组元素
System.out.println(arrayA[0]); //null
System.out.println(arrayB[0]); //0
}
数组的索引:数组的索引从0开始,到“数组长度-1”结束。
数组常见问题1:如果访问数组元素的时候,索引编号并不存在,那么将会发生:数组索引越界异常 ArrayIndexOutOfBoundsException。
public class Demo05ArrayIndex {
public static void main(String[] args) {
int[] arrayInt=new int[]{5,8,9};
System.out.println(arrayInt[0]); //5
System.out.println(arrayInt[1]); //8
System.out.println(arrayInt[2]); //9
//错误代码:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
//System.out.println(arrayInt[3]);
}
}
数组常见问题2:所有的引用类型变量,都可以赋值为一个null值。但是代表什么都没有。数组必须进行new初始化才可以使用其中的元素,如果只是赋值了一个null,没有进行new创建,那么将会发生:空指针异常 NullPointerException
public class Demo06ArrayNull {
public static void main(String[] args) {
int[] array=null;
//错误代码:空指针异常
System.out.println(array[0]);
}
}
获取数组的长度:数组名称.length
public class Demo07ArrayLength {
public static void main(String[] args) {
int[] arrayB={10,23,25,63,58,55,55,2,3,8,8,9,5,10,23,25,63,58,55,55,2,3,8,8,9,5};
int len=arrayB.length;
System.out.println(len);
}
}
数组的遍历:for循环遍历数组
public class Demo08Arrayprint {
public static void main(String[] args) {
//定义一个数组
int[] arrayInt={5,8,9,6,45,45,12,56,7};
//数组的遍历
for(int i=0;i < arrayInt.length;i++){
System.out.println(arrayInt[i]);
}
}
求数组最小值(求最大值同)
public class Demo10ArrayMin {
public static void main(String[] args) {
//求数组元素最小值
int[] arrayInt=new int[]{7,80,90,80,-100};
int min=arrayInt[0];
for (int i = 1; i < arrayInt.length; i++) {
if(arrayInt[i]<min){
min=arrayInt[i];
}
}
System.out.println("数组当中的最小值为;"+min);
}
}
数组的反转:见博客
数组作为方法的参数进行传递:当调用方法的时候,向方法的小括号中进行传参,传递进去的是数组的地址值。
public class Demo01ArrayParam {
public static void main(String[] args) {
int[] array={10,20,30,40,50};
//调用此方法,传入一个数组作为参数
printArray(array);
}
public static void printArray(int[] array){
System.out.println("printArray方法收到的参数是:"+array); //地址值
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
数组作为方法的返回值:
public class Demo02ArrayReturn {
public static void main(String[] args) {
int[] result=calculate(10,20,30);
System.out.println("mian方法接收到的返回值数组是:"+result); //地址值
System.out.println("三个数之和是:"+result[0]);
System.out.println("三个数的平均数是:"+result[1]);
}
public static int[] calculate(int a,int b,int c){
int sum=a+b+c;
int avg=sum/3;
int[] array={sum,avg};
}
}
数组作为返回值和参数总结:一个方法可以有0,1,多个参数,但是只能有0或者1个返回值,不能有多个返回值。 如果希望一个方法有多个返回值,用数组接收。 数组既可以作为的方法的参数,也可以作为方法的返回值。 数组作为方法的参数,传递进去的是数组的地址值。 数组作为方法的返回值,返回的其实也是数组的地址值。