java学习(三)——数组

xiaoxiao2025-08-22  70

一维数组

import java.util.Arrays; public class ArraysDemo { public static void main(String[] args) { //1.声明数组(只声明了变量a,并没有将a初始化为一个数组) 等价于 int a[]; int[] a; /*2.声明并创建数组 创建一个数字数组时,所有的元素都默认初始化为0 创建一个boolean型数组时,所有的元素都默认初始化为false 创建一个char型数组时,所有的元素都默认初始化为'\0' 创建一个对象数组时,所有的元素都默认初始化为null */ int n=4; int[] b=new int[10]; boolean[] c=new boolean[n]; //数组长度可以是变量 char[] ch=new char[5]; String[] str=new String[5]; float[] d=new float[0]; //允许长度为0:编写结果为数组的方法,如果结果为空时使用, for(int i=0;i<b.length;i++) System.out.print(b[i]+" "); System.out.println(); for(int i=0;i<c.length;i++) System.out.print(c[i]+" "); System.out.println(); for(int i=0;i<ch.length;i++) System.out.print(ch[i]+"_"); System.out.println(); for(int i=0;i<str.length;i++) System.out.print("str["+i+"]="+str[i]+" "); System.out.println(); > 运行结果************************************** 0 0 0 0 0 0 0 0 false false false false _ _ _ _ _ str[0]=null str[1]=null str[2]=null str[3]=null str[4]=null > ********************************************* //3.创建并初始化数组 int[] arr1={1,2,3,4,5}; //数组的大小就是初始值的个数 //4.匿名数组 arr1=new int[]{5,6,7,8,9,10}; //可以在不创建变量的情况下重新初始化一个数组 //5.数组的遍历 //5.1 for循环 System.out.print("数组arr1="); for(int i=0;i<arr1.length;i++) System.out.print(arr1[i]+" "); System.out.println(); /*5.2 foreach循环:用来一次处理数组中的每个元素 for(变量:数组或实现Iterable接口的类对象) { 语句块 } */ System.out.print("数组arr1="); for(int temp:arr1) //temp变量用于暂存集合中的每一个元素 System.out.print(temp+" "); System.out.println(); //5.3 打印数组的所有值(Arrays类的toString()方法):返回包含数组中数据元素的字符串,这些数据元素被放在括号内,并用逗号分隔 System.out.println("数组arr1="+Arrays.toString(arr1)); > 运行结果************************************** 数组arr1=5,6,7,8,9,10 数组arr1=5,6,7,8,9,10 数组arr1=[5, 6, 7, 8, 9, 10] > ********************************************* //6.拷贝数组 //6.1 将一个数组变量拷贝给另一个数组变量 int[] arr2=arr1; //这是arr1和arr2将同时引用同一个数组 System.out.println("arr1[0]="+arr1[0]); arr2[0]=100; System.out.println("数组arr2="+Arrays.toString(arr2)); System.out.println("arr1[0]="+arr1[0]); //6.2 将一个数组所有值拷贝到一个新的数组中(Arrays类的copyOf()方法) //6.2.1 拷贝后的数组等于原数组长度 int[] arr3=Arrays.copyOf(arr2,arr2.length); //第二个参数是新数组的长度 System.out.println("arr2[0]="+arr2[0]); arr3[0]=99; System.out.println("数组arr3="+Arrays.toString(arr3)); System.out.println("arr2[0]="+arr2[0]); /*6.2.2 Arrays.copuOf()方法常被用来增加(或减少)数组的大小 如果新数组的长度比原数组大,多余的元素数值型赋值为0,boolean型赋值为false 如果新数组的长度比原数组小,只拷贝前面的数组元素 */ int[] arr4=Arrays.copyOf(arr2,arr2.length*2); System.out.println("数组arr4="+Arrays.toString(arr4)); int[] arr5=Arrays.copyOf(arr2,arr2.length/2); System.out.println("数组arr5="+Arrays.toString(arr5)); //6.2.3 Arays.copyOfRange(type[] a,int start,int end):拷贝数组从下标start(包含这个元素)开始到下标end(不包含这个值)结束的数组元素、新数组大小为end-start int[] arr6=Arrays.copyOfRange(arr2,1,3); //第三个参数如果大于arr2的数组大小,则多余的数组元素为0或false System.out.println("数组arr6="+Arrays.toString(arr6)); > 运行结果************************************* arr1[0]=5; 数组arr2=[100, 6, 7, 8, 9, 10] arr1[0]=100; arr2[0]=100 数组arr3=[99, 6, 7, 8, 9, 10] arr2[0]=100 数组arr4=[100, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0] 数组arr5=[100, 6, 7] 数组arr6=[6, 7] > ********************************************* //7.数组排序(Arrays类中的sort方法):优化的快速排序算法 int[] ar1={34,66,78,45,8}; Arrays.sort(ar1); System.out.println("数组ar1="+Arrays.toString(ar1)); > 运行结果************************************** 数组ar1=[8, 34, 45, 66, 78] > ********************************************* /*8.二分查找 8.1 static int binarySearch(type[] a,type v) 8.2 static int binarySearch(type[] a,int start,int end,type v) (查找包含start,不包含end) 返回值:成功返回数组下标值,否则返回一个负数值r.-r-1是插入v后数组任然有序的位置 */ int[] ar2={-14,-2,0,3,5,11,17,23,45,55,100}; System.out.println("5的下标为:"+Arrays.binarySearch(ar2,5)); int i=Arrays.binarySearch(ar2,6); if(i<0) System.out.println("没有找到!"+i); //System.out.println("17的下标为:"+Arrays.binarySearch(ar2,4,10)); //在jdk8中不可用 > 运行结果************************************** 5的下标为:4 没有找到!-6 > ********************************************* //9.其他方法 //9.1 将数组的所有数据元素设置为v static void fill(type[] a,type v) float[] ar3={1.2f,3.5f,7.8f,33.4f,56.8f}; Arrays.fill(ar3,1.1f); System.out.println("数组ar3="+Arrays.toString(ar3)); /*9.2 判断数组是否相等 如果两个数组大小相同,并且下标相同的元素都对应相等.则返回true,否则返回false static boolean equals(type[] a,type[] b) */ System.out.println("两个匿名数组是否相等:"+Arrays.equals(new int[]{1,2,3},new int[]{1,2,3})); > 运行结果************************************** 数组ar3=[1.1, 1.1, 1.1, 1.1, 1.1] 两个匿名数组是否相等:true > ********************************************* } }

多维数组

java实际上没有多维数组,只有一维数组,二维数组int a[n][m]实际上是一个包含n个元素的数组,而每个元素又是由m个int类型构成的数组

import java.util.Arrays; public class ArraysDemo { public static void main(String[] args) { //声明创建初始化方式和一维数组类似 //1. 二维数组的遍历 int[][] a={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, }; //1.1 foreach方式 System.out.println("数组a="); for(int[] row: a) { for(int temp:row) System.out.print(temp+" "); System.out.println(); } //快速的打印一个二维数组的数据元素列表 Arrays.deepToString()方法 System.out.println("数组a="+Arrays.deepToString(a)); //2.不规则数组:数组的每一行都有不同的长度 //2.1 构造一个不规则数组 int[][] arr1=new int[5][]; //该二维数组含有5行 for(int i=0;i<arr1.length;i++) { arr1[i]=new int[i+1]; } for(int i=0;i<arr1.length;i++) { for(int j=0;j<arr1[i].length;j++) System.out.print(arr1[i][j]+" "); System.out.println(); } for(int[] i:arr1) { for(int j:i) System.out.print(j+" "); System.out.println(); } System.out.println(Arrays.deepToString(arr1)); } }

返回目录

转载请注明原文地址: https://www.6miu.com/read-5035102.html

最新回复(0)