用来存储一组相同数据类型的集合(容器)。
特点
1.数组中元素类型必须一致。
2.数组本身是引用数据类型,但是里面元素就可以是基本数据类型,也可以是引用数据类型。
3.数组的长度都一旦给定无法改变。
声明数组格式
数据类型[] 数组名
数据类型 数组名[]
数组声明
int[] arr
// 数据类型[] 数组名 new 数据类型[长度]
int[] arr=new int[4];
数组的索引:从0开始,最大值就是数组长度减1.
给数组中元素赋值:
数组名[索引值]= 要赋的值;
demo
package Array;
public class ArrayDemo1 {
public static void main(String[] args) {
int [] arr;
arr = new int[4];
arr[2] = 4;
arr[3] = 66;
System.out.println(arr[0]);// 0
System.out.println(arr[2]);// 4
}
}
创建一个String类型4个长度数组,把四个季节存储到该数组中
package Array;
public class ArrayDemo2 {
public static void main(String[] args) {
String[] arr;
arr = new String[4];
arr[0] = "春天";
arr[1] = "夏天";
arr[2] = "秋天";
arr[3] = "冬天";
System.out.println(arr.length);
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
创建一个char类型的数组,把"你","好"分别存进去
package Array;
public class ArrayDemo2 {
public static void main(String[] args) {
char[] arr = new char[2]
arr[0] = ‘你‘;
arr[1] = ‘好‘;
}
}
创建一个长度10的int数组,把1-10存储进去
package Array;
public class ArrayDemo2 {
public static void main(String[] args) {
int[] arr = new int[10];
for (int i=0; i<10; i++) {
arr[i] = i+1;
}
}
}
给定数组中元素,由系统根据元素个数开辟空键并赋值。
格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素2......}
简写: 只有第一个初始化时候才可以这么书写,重新赋值不能这么写
数据类型[] 数组名 = {元素1,元素2,元素2......}
demo
int[] arr2 = new int[] {1,3,4,5,2,2,55,3};
arr2 = new int[] {3,4,6};
创建int数组,存入5个元素,求该数组元素之和,平均值
package Array;
public class ArrayDemo3 {
public static void main(String[] args) {
int sum = 0;
int[] arr = new int[] {1,6,23,5,9};
for (int i=0;i<arr.length;i++) {
sum += arr[i];
}
System.out.println("求和:"+ sum);// 44
System.out.println("平均值:" + (double)sum/arr.length);// 8.8
}
}
// 解析:
在我们通过new int[5] 时候会在堆开辟一个5个长度数组空间,并形成一个地址,通过在main种,int arr 指向该数组内存地址,当我们给数组内元素赋值,首先根据内存地址找到该数组堆空间位置,并修改相应的值。
package Array;
public class ArrayDemo4 {
public static void main(String[] args) {
int[] arr = null;
System.out.println(arr);
// 当用null调用里面数据和方法,会出现空指针异常
System.out.println(arr[0]);
}
}
arr = new int[3];
System.out.println(arr[3]);
package Array;
import java.util.Random;
public class ArrayDemo5 {
public static void main(String[] args) {
String[] names = new String[]{"小明","小刘","小刚","小邱","小赵"};
// 创建Random对象
Random r = new Random();
// 生成随机数 下面生成数0<=num<10
int num = r.nextInt(names.length);
System.out.println(names[num]);
}
}
package Array;
import util.ArrayUtil;
public class ArrayDemo6 {
public static void main(String[] args) {
int[] arr = {13, 15, 16,40};
String[] arr2 = {"小明", "小洪", "小刚"};
ArrayUtil.printArr(arr);
ArrayUtil.printArr(arr2);
}
}
package util;
public class ArrayUtil {
// 接收int类型
public static void printArr(int[] arr) {
for(int i=0;i<arr.length;i++) {
if (arr.length == 1) {
System.out.println("[" + arr[0] + "]");
} else if (i == 0) {
System.out.print("[" + arr[i] + ",");
}else if (i == arr.length-1) {
System.out.println(arr[i] + "]");
}else {
System.out.print(arr[i] + ",");
}
}
}
// 方法重载 接收string
public static void printArr(String[] arr) {
for(int i=0;i<arr.length;i++) {
if (arr.length == 1) {
System.out.println("[" + arr[0] + "]");
} else if (i == 0) {
System.out.print("[" + arr[i] + ",");
}else if (i == arr.length-1) {
System.out.println(arr[i] + "]");
}else {
System.out.print(arr[i] + ",");
}
}
}
}
// 主函数
package Array;
import util.ArrayMaxMin;
public class ArrayDemo7 {
public static void main(String[] args) {
// 创建一个数组
int[] arr = {23,555,32,13,1,55};
ArrayMaxMin.arrMaxMin(arr);
}
}
// 工具类
package util;
public class ArrayMaxMin {
public static void arrMaxMin(int[] arr) {
// 设置一个变量存储最大值
int max = arr[0];
int min = arr[0];
// 遍历数组用max和数组中元素比较
for(int i=0;i<arr.length;i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i]< min) {
min = arr[i];
}
}
System.out.println(max);// 555
System.out.println(min);// 1
}
}
package Array;
import util.ArrayUtil;
public class ArrayDemo8 {
public static void main(String[] args) {
int[] arr = new int[] {100,200};
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
ArrayUtil.printArr(arr);
}
}
package Array;
import util.ArrayUtil;
public class ArrayDemo9 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
int tmp;
for (int i=0;i<arr.length/2;i++) {
tmp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = tmp;
}
ArrayUtil.printArr(arr);// [8,7,6,5,4,3,2,1]
}
}
package Array;
import util.ArrayUtil;
public class ArrayDemo9 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
for(int start=0,end=arr.length-1; start< end; start++,end--) {
int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
ArrayUtil.printArr(arr);
}
}
1.数据类型[][] 数组名 = new 数据类型[m][n]
m: 二维数组中一维数组的个数
n: 一维数组中元素个数
2. 数据类型[][] 数组名 = new 数据类型[m][];
m: 二维数组中一维数组的个数
3. 数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...}}
int[][] arr = new int[4][3];
System.out.println(arr);// [[I@7c75222b
System.out.println(arr[0]);// [I@4c203ea1
System.out.println(arr[0][0]);// 0
// 给第二个数组中的第二个元素赋值给100
arr[1][1] = 100;
// 打印最后一个数组中最后一个元素
System.out.println(arr[3][2]);
// 注意:给二维数组内一维数组赋值时候,不能简写
int[][] arr2 = new int[5][];
arr[0] = new int[] {1,2,3,4,5,6};
arr[1] = new int[] {1,2,3};
int[][] arr3 = new int[][] {{2,3,5,6},{4,5,3}};
System.out.println(arr3.length);// 2
System.out.println(arr3[0].length);// 4
System.out.println(arr3[0][3]);// 6
for(int i=0;i<arr3.length;i++) {
ArrayUtil.printArr(arr3[i]);
}
// [2,3,5,6]
// [4,5,3]
原文:https://www.cnblogs.com/xujunkai/p/13702266.html