图 1 数组的空间是连续的
图 2 int类型的数组
“张三”、“李四”、true、“王五”
10.5、66、“小明”、‘男’
12、33、66、80
22.5f、33.6f、100.0f、202.2f
数据类型[] 数组名;如“int[] array1;”表示声明了一个 int 类型的数组,该数组中只能存放 int 类型的数据,“String[] array2;”表示声明了一个 String 类型的数组,该数组中只能存放 String 类型的数据。
数组名=new 数据类型[数组长度];例如“array1 = new int[6];”表示 array1 的长度为 6;例如“array2 = new String[7];”表示 array2 的长度为 7。
array1[0] = 1; array1[2] = 3; array2[1] = “Java”; array2[3] = “Hello World”;
public class Test { public static void main(String[] args) { int[] array; array = new int[4]; array[0] = 179; array[1] = 182; array[2] = 167; array[3] = 176; //遍历数组计算平均值,数组长度可以通过length属性获取 double sum = 0; for(int i = 0;i < array.length;i++){ sum += array[i]; } double avg = sum/array.length; System.out.println("平均身高是:"+avg); } }运行结果为:
平均身高是:176.0
上述代码可以进一步简化,声明数组和开辟空间可以用一行代码完成,代码如下所示。public class Test { public static void main(String[] args) { int[] array = new int[4]; array[0] = 179; array[1] = 182; array[2] = 167; array[3] = 176; //遍历数组计算平均值,数组长度可以通过length属性获取 double sum = 0; for(int i = 0;i < array.length;i++){ sum += array[i]; } double avg = sum/array.length; System.out.println("平均身高是:"+avg); } }声明数组时,
[ ]
可以放在数据类型的后面,也可以放在数组名后面,即 int[] array 和 int array[] 都可以。边声明边赋值有两种方式,代码如下所示。
public class Test { public static void main(String[] args) { int[] array1 = {10,20,30}; int[] array2 = new int[]{10,20,30}; } }数组与我们之前介绍的变量在内存中的保存方式是不同的。内存可以简单分为栈内存和堆内存。基本数据类型的变量和值都保存在栈内存中,在栈内存开辟的空间中直接放入数据,比如 int num=10 在栈内存中的存储如下图所示。
图 3 num在栈内存中的存储
图 4 array在内存中的存储
public class Test { public static void main(String[] args) { int[] array = new String[3]; } }Eclipse 会提示错误信息,并给出解决方法:将 array 的类型改为 String[],保证前后一致。
public class Test { public static void main(String[] args) { int[] array = new int[3]; array = {10,20,30}; int[] array2; array2 = {10,20,30}; } }运行代码,报错信息如下图所示。
图 5 报错信息
public class Test { public static void main(String[] args) { int[] array = {10,20,30}; System.out.println(array[3]); } }运行代码,报错信息为:
图 6 报错信息
public class Test { public static void main(String[] args) { int[] array = {73,80,62,93,96,87}; int max = array[0]; for(int i = 1;i < array.length;i++){ if(array[i] > max){ max = array[i]; } } System.out.println("最大值是"+max); int min = array[0]; for(int i = 1;i < array.length;i++){ if(array[i] < min){ min = array[i]; } } System.out.println("最小值是"+min); } }运行结果为:
最大值是96
最小值是62
图 7 数组中插入数据
import java.util.Arrays; public class Test { public static void main(String[] args) { //在数组下标为3的位置添加83 int[] array = {96,93,87,80,73,62}; int score = 83; int[] array2 = new int[array.length+1]; for(int i = 0; i < 3; i++){ array2[i] = array[i]; } array2[3] = 83; for(int i = 4;i<array2.length;i++){ array2[i] = array[i-1]; } //Arrays工具类的toString方法可以将数组的元素依次取出拼接成一个字符串 System.out.println("添加新元素之前的数组:"+Arrays.toString(array)); System.out.println("添加新元素之后的数组:"+Arrays.toString(array2)); } }运行结果如下图所示。
添加新元素之前的数组:[96,93,87,80,73,62]
添加新元素之后的数组:[96,93,87,83,80,73,62]
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {73,80,62,93,96,87}; //升序排列,大的放后面 for(int j = 0; j < array.length-1;j++){ for(int i = 0; i < array.length-1-j;i++){ if(array[i] > array[i+1]){ int temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; } } } System.out.println("升序排列:"+Arrays.toString(array)); //降序排列,小的放后面 for(int j = 0; j < array.length-1;j++){ for(int i = 0; i < array.length-1-j;i++){ if(array[i] < array[i+1]){ int temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; } } } System.out.println("降序排列:"+Arrays.toString(array)); } }运行结果为:
升序排列:[62,73,80,87,93,96]
降序排列:[96,93,87,80,73,62]
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {73,80,62,93,96,87}; int[] array2 = {73,80,62,93,96,87}; int[] array3 = {66,55,44,33,22}; System.out.println(Arrays.equals(array, array2)); Arrays.sort(array); System.out.println(Arrays.toString(array)); Arrays.fill(array2, 66); System.out.println(Arrays.toString(array2)); int[] copyArray = Arrays.copyOf(array3, 10); System.out.println(Arrays.toString(copyArray)); int index = Arrays.binarySearch(array, 87); System.out.println(index); } }运行结果为:
true
[62, 73, 80, 87, 93, 96]
[66, 66, 66, 66, 66, 66]
[66, 55, 44, 33, 22, 0, 0, 0, 0, 0]
3
本文链接:http://task.lmcjl.com/news/17771.html