首先必须声明数组变量,才能在程序中使用数组。例如:
dataType[] arrayRefVar; //首选的方法
或者
dataType arrayRefVar[]; //效果相同,但是不是首选方法
Java语言使用new关键字操作符来创建数组。例如:
dataType[] arrayRefVar = new dataType[arraySize];
arrays.length //获取数组长度
代码:
public class ArrayDemo01 {
public static void main(String[] args) {
//数组类型
//1.声明一个数组
int[] nums;
//2.创建一个数组
nums=new int[10];
//传值
nums[0]=1;
nums[1]=2;
nums[2]=5;
nums[3]=1;
nums[4]=2;
nums[5]=4;
nums[6]=6;
nums[7]=8;
nums[8]=7;
nums[9]=9;
//求和运算
int sum=0;
for (int i = 0; i <nums.length ; i++) {
sum=sum+nums[i];
}
System.out.println(sum);
}
}
Java内存分析如图所示:
数组初始化方式:
public class ArrayDemo02 {
public static void main(String[] args) {
//静态数组初始化
int[] num={1,2,3,4,5};
System.out.println(num[0]);
System.out.println("==========================");
//动态数组初始化 包含默认初始化值
int[] a=new int[10];
a[9]=90;
System.out.println(a[9]);
System.out.println(a[0]);//默认初始化值
}
}
下标的合法区间为[0,length-1],如果越界就会报错:例如
public class ArrayDemo03 {
public static void main(String[] args) {
int[] a=new int[5];
System.out.println(a[5]);//超出边界
}
}
报错:
//普通数组for循环
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
//打印全部数组元素
for (int i = 0; i <arrays.length ; i++) {
System.out.print(arrays[i]+" ");
}
System.out.println();
System.out.println("*********************************");
//计算数组元素之和
int sum=0;
for (int i = 0; i <arrays.length ; i++) {
sum+=arrays[i];
}
System.out.println("sum="+sum);
System.out.println("*********************************");
//查找数组最大元素
int max=arrays[0];
for (int i = 1; i <arrays.length ; i++) {
if (arrays[i]>max){
max=arrays[i];
}
}
System.out.println("max="+max);
}
}
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
//增强型的for循环,只能用于打印输出语句 JDK1.5以上版本才有,没有下标
for (int array : arrays) {
System.out.print(array+" ");
}
}
}
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
printArray(arrays);
}
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
}
}
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
int[] reverseArray = reverseArray(arrays);
printArray(reverseArray);
}
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
}
//反转数组
public static int[] reverseArray(int[] arrays){
int[] result=new int[arrays.length];//定义一个新数组,用于存放数组
//反转操作
for (int i = 0,j=result.length-1; i <arrays.length ; i++,j--) {
result [j]=arrays[i];//把arrays数组的第一个元素放在result数组的最后一位上
}
return result;
}
}
定义:多维数组可以看成是数组的数组,例如二维数组就是一个特殊的一维数组,每一个元素都是一个一维数组。例如:
int a[][]=new int[2][5];//表示二维数组a可以看成是一个两行五列的数组
代码如下:
//多维数组
public class ArrayDemo05 {
public static void main(String[] args) {
//定义一个四行两列的二维数组
int[][] array={{1,2},{3,4},{5,6},{7,8}};
printArray(array[0]);// 输出 1 2
}
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
}
}
概念:
功能:
import java.util.Arrays;
public class ArrayDemo06 {
public static void main(String[] args) {
int[] array={1,45,14,2547,1245,6524,123,251,258};
System.out.println(array);//输出的是对象 [I@154617c
System.out.println("***********************************");
//打印数组 调用方法
System.out.println(Arrays.toString(array));
System.out.println("************************************");
//调用printArray方法
printArray(array);
System.out.println();
System.out.println("****************************************");
//排序 升序
Arrays.sort(array);
System.out.println(Arrays.toString(array));
System.out.println("****************************************");
Arrays.fill(array,2,4,0);//表示数组下标为 2 到 4 之间的数据包括下标为 2 但是不包括下标为 4 的数据变成0
System.out.println(Arrays.toString(array));
}
public static void printArray(int[] array){
for (int i = 0; i <array.length ; i++) {
if (i==0){
System.out.print("[");
}
if (i==array.length-1){
System.out.print(array[i]+"]");
}else {
System.out.print(array[i]+", ");
}
}
}
}
//稀疏数组 五子棋
public class ArrayDemo08 {
public static void main(String[] args) {
//定义一个二维数组 11*11 0:没有棋子 1:黑棋 2:白棋
int[][] array1=new int[11][11];
array1[1][2]=1;
array1[2][3]=2;
//输出原数组元素
System.out.println("输出原始的数组:");
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
//转换为稀疏数组来保存
//1.获取有效值的个数
int count1=0;
for (int i = 0; i <11 ; i++) {
for (int j = 0; j <11 ; j++) {
if (array1[i][j]!=0){
count1++;
}
}
}
System.out.println("有效值的个数:"+count1);
System.out.println("==========================================");
//2.创建一个稀疏数组的数组
int[][] array2=new int[count1+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=count1;
//遍历二维数组,把非0的值存放到稀疏数组中
int count2=0;//计数
for (int i = 0; i <array1.length ; i++) {
for (int j = 0; j <array1[i].length ; j++) {
if (array1[i][j]!=0){
count2++;
array2[count2][0]=i;//表示行
array2[count2][1]=j;//表示列
array2[count2][2]=array1[i][j];//表示值
}
}
}
//输出稀疏数组
System.out.println("输出稀疏数组:");
for (int i = 0; i <array2.length ; i++) {
System.out.println(array2[i][0]+" "+array2[i][1]+" "+array2[i][2]+" ");
/*
输出稀疏数组:
11 11 2 ----->表示输出的是11行11列的数组,有两个有效值
1 2 1 ----->表示第一个有效值在下标为1,2的地方上,而且值是1
2 3 2 ----->表示第二个有效值在下标为2,3的地方上,而且值是2
*/
}
}
}
原文:https://www.cnblogs.com/javastudys/p/java_1.html