数组
数组的定义
数组是相同类型数据的有序集合,其中,每一个数据成为一个数组元素,每个数组元素可以通过一个下标来访问它们。
首先声明数组变量:
dataType[] arrayRefVar; //首选方法
或者
dataType arrayRefVar[]; //效果相同,但不是首选方法
然后使用new操作符创建数组:
dataType =new dataType[arraySizi];
声明和创建可以一行代码解决:
dataType[] arrayRefVar=new dataType[arraySizi];
其中,数组的元素是通过索引访问的。数组索引从0开始
获取数组的长度:arrayRefVar.length
int[] numbers=new int[3];
numbers[0]=1;
numbers[1]=2;
numbers[2]=3;
int sum=0;
for (int i = 0; i <numbers.length ; i++) {
sum+=numbers[i];
}System.out.println(sum);//输出结果6
数组一经创建,长度就是不可变的,如果越界,则报错:java.lang.ArrayIndexOutOfBoundsException
内存分析
java内存:
-
堆:存放new的对象和数组;可以被所有的线程共享,不会存放别的对象引用
-
栈:存放基本变量类型(会包含这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)
-
方法区:可以被所有的线程共享;包含了所有的class和static变量
三种初始化
-
静态初始化
int[] num={1,2,3};
-
动态初始化
int[] num=new int[2];
num[0]=1;
num[1]=2; -
数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
数组的使用
-
普通的for循环
-
for-each循环(增强for循环)
-
数组做方法入参
-
数组做返回值
package com.array;
public class Demo02 {
public static void main(String[] args) {
int[] nums={1,2,3,4,5};
one(nums);
System.out.println("------------------");
two(nums);
System.out.println();
System.out.println("------------------");
three(nums);
System.out.println();
System.out.println("------------------");
int[] four = four(nums);
three(four);
}
//普通for循环 求和
public static void one(int[] num){
int sum=0;
for (int i = 0; i <num.length ; i++) {
sum+=num[i];
}
System.out.println("sum="+sum);
}
//for each循环 打印数组元素
public static void two(int[] num){
for (int num1:num) {
System.out.print(num1+"\t");
}
}
//数组做方法入参 打印数组元素
public static void three(int[] num){
for (int i = 0; i <num.length ; i++) {
System.out.print(num[i]+"\t");
}
}
//数组做返回值 求反转数组
public static int[] four(int[] num){
int[] result=new int[num.length];
for (int i = 0,j=num.length-1; i <num.length ; i++,j--) {
result[j]=num[i];
}
return result;
}
}
/*输出结果
sum=15
------------------
1 2 3 4 5
------------------
1 2 3 4 5
------------------
5 4 3 2 1
*/