1.概念
-
用来存放变量一定数量的相同数据类型的一个连续空间;
2.数组组成
-
数据类型[ ] 数组名称(标识符) ;
3.数组定义方式
-
先声明数组,再定义数组长度(开辟空间),最后赋值(数组有默认值根据类型不同为(0或null))
int a;//声明数组 a=new int[5];//给数组定义长度 array(a);//给数组a赋值 //随机生产一个数组长度为n的int类型的数组 public static int[] array(int[] a) { for(int i=0;i<a.length;i++) { a[i]=(int)(Math.random()*100); } return a; }
-
直接声明数组和定义数组长度
int[] a=new int[5];//声明数组a并,给数组定义长度 array(a);//给数组a赋值 //随机生产一个数组长度为n的int类型的数组 public static int[] array(int[] a) { for(int i=0;i<a.length;i++) { a[i]=(int)(Math.random()*100); } return a; }
-
声明的同时赋值
int[] a = new {1,2,3,4,5};//声明一个数组a,并赋值,长度为元素的个数。
4.数组的扩展
4.1数组的打印
for循环打印
public static void daArray(int[] a){ for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } }
for each打印
public static void dyArray(int[] a){ for(int n : a) Systrm.out.print(n+" "); }
toString打印
4.2数组的扩容
-
扩容思路:创建一个新的数组,将原数组中的元素复制给新的数组(新数组的长度一般比原数组长)
-
扩容方法
System.arraycopy(数组,0,数组,0,需要赋值的节点(length));
Arrays.copyOf();
package com.qf.lq; import java.util.Arrays; import java.util.Scanner; public class Array02 { public static void main(String[] args) { Array01 arr = new Array01(); Scanner sc = new Scanner(System.in); System.out.print("请输入a数组的长度:"); int n = sc.nextInt(); int[] a =arr.array(n); System.out.println("数组a中的元素:"); System.out.println(toString(a)); System.out.println("=================================="); int[] b = new int[a.length+5]; System.out.println("赋值前数组b中的元素:"); System.out.println(toString(b)); System.out.println("赋值后数组b中的元素:"); System.out.println(toString(arraycopy(a, b))); System.out.println("=================================="); int[] c = new int[a.length+10]; System.out.println("赋值前数组c中的元素:"); System.out.println(toString(c)); //System.arraycopy方法将a数组中元素复制给c数组元素,复制元素长度为最好一个参数的值。 System.arraycopy(a, 0, c, 0, a.length); System.out.println("通过arraycopy方法赋值后数组c中的元素:"); System.out.println(toString(arraycopy(a, c))); System.out.println("=================================="); //Copyof方法返回一个数组,将传入的数组复制给新的数组,新数组的长度由第二个参数来决定。 System.out.println("调用Arrays类的copyOf方法后数组d中的元素:"); int[] d =copyOf(a, a.length+15); System.out.println(toString(d)); } //随机生产一个数组长度为n的int类型的数组 public static int[] array(int n) { int[] a = new int[n]; for(int i=0;i<a.length;i++) { a[i]=(int)(Math.random()*100); } return a; } //将a数组的元素复制给b数组; public static int[] arraycopy(int[] a,int[] b) { for (int i = 0; i < a.length; i++) { b[i]=a[i]; } return b; } //copyOf方法的重写 public static int[] copyOf(int[] a,int length) { int[] b = new int[length]; System.arraycopy(a, 0, b, 0, a.length); return b; } //重写toString方法 public static String toString(int[] a) { String str="["; for (int i = 0; i < a.length; i++) { if(i==a.length-1) { str+=a[i]+"]"; }else { str+=a[i]+","; } } return str; } }
运行结果:
意外收获扩展:
System.err.print("请输入需要查询的数:");//输出语句为红色(报错输出)