int [] nums;//推荐使用 int nums[];//两种方式都可创建 nums=new int[10];//对数组实例化
数组的元素是通过索引来访问的,从0开始。
若不给数组元素赋值,内容则为默认值。
数组的长度可用.length来获取。
//静态初使化:创建+赋值 int[] a={1,2,3,4,5,6}; System.out.println(a[0]); //动态初使化:包含默认初使化 int[] b=new int[10]; b[0]=10; System.out.println(b[0]); System.out.println(b[1]); System.out.println(b[2]); System.out.println(b[3]);
数组本身就是对象,java中对象在堆中,因此数组无论保存原始类型还是引用类型,数组对象本身是在堆中的。
int [] arrays={1,2,3,4,5}; //普通for循环 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); System.out.println("+++++++++++++++++++++++++++++++++++++"); //输出数组中的最大值 int maxNum=arrays[0]; /*for (int array : arrays) { if (maxNum<array){ maxNum=array; } }*/ for (int i = 1; i < arrays.length; i++) { if (maxNum<arrays[i]){ maxNum=arrays[i]; } } System.out.println(maxNum);
int [] arrays={1,2,3,4,5}; for (int array : arrays) { System.out.println(array); }
public static void main(String[] args) { int [] arrays={1,2,3,4,5}; Out(arrays); } public static void Out(int [] arrays){ for (int array : arrays) { System.out.println(array); } }
public static void main(String[] args) { int [] arrays={1,2,3,4,5}; Out( Reserve(arrays)); } public static void Out(int [] arrays){ for (int array : arrays) { System.out.println(array); } } //转置 public static int[] Reserve(int []arrays){ int [] reserve=new int[arrays.length]; for (int i = 0,j= arrays.length-1; i < arrays.length; i++,j--) { reserve[j]=arrays[i]; } return reserve; }
相当于数组的元素还是数组,若输出arraay[0],则是这个小数组的地址
int [][] arrays={{1,2},{2,3},{3,4},{4,0}}; for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { System.out.println(arrays[i][j]); } }
java.util.Arrays包下
重要方法:
int [] arrays={1,213,4,3,5,5,34,6,3,4,6,57,122,5,45,3,424,23,4,2343424,213,12121211}; System.out.println(Arrays.toString(arrays)); Arrays.sort(arrays);//正序排序 System.out.println(Arrays.toString(arrays)); Arrays.fill(arrays,9);//填充 System.out.println(Arrays.toString(arrays)); Arrays.fill(arrays,3,4,10);//填充重载 System.out.println(Arrays.toString(arrays));
int [] arrays= {1}; int [] arrays2= {1}; if (Arrays.equals(arrays2,arrays)){ System.out.println("true"); }else{ System.out.println("false"); }
int [] arrays= {1,2,3,3,3,4,4,5,6,43543,67347,4}; /*int [] arrays2= {1};*/ Arrays.sort(arrays); System.out.println(Arrays.toString(arrays)); int a =Arrays.binarySearch(arrays,67347); System.out.println(a);
遇到的问题:
多输出一个数,对if的理解不够深入
for (int i = 0; i < arrays.length; i++) { if (i==0){ System.out.print("["+arrays[i]+", "); } if (i==arrays.length-1){ System.out.print(arrays[i]+"]"); } else { System.out.print(arrays[i] + ", "); } }//当i=0时,第一个if执行完成后会接着往下走,走到else时会输出arrays[0],因为else只和前一个if做判断。
排序总共有八大排序,其中冒泡排序是最简单的,时间复杂度为O(n2)【平方】。
实现:
public static void main(String[] args) { //冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换他们的位置 //2.第一次比较就会产生一个最大值或最小值 //3.下一轮可以少一次排序 //4.依次循环,直到结束 int []arr={1,2,3,4,5,6,623,42,34,32,4,2,5,25,90}; System.out.println(Arrays.toString(sort(arr))); } public static int[] sort(int [] arrsys){ int a=0; boolean flag=false;//定义一个标志位,用来进行优化 //判断需要比较多少次 for (int i = 0; i <arrsys.length-1 ; i++) { //通过循环来进行位置交换 for (int j = 0; j <arrsys.length-1-i; j++) { if (arrsys[j]>arrsys[j+1]){ a= arrsys[j]; arrsys[j]= arrsys[j+1]; arrsys[j+1]=a; flag=true;//当每次j=最大数时,将flag变成true } if (flag==true){ break;//如果是最后一轮,直接跳出循环 } } } return arrsys; }
稀疏数组是一种数据结构。
当一个数组中,大多数数为0或为相同的值时,可以用稀疏数组来保存此数组。可以压缩使用空间。
规则:
package com.xiaoxiao.arrays; public class XiShuArrayDemo { public static void main(String[] args) { //假设有一个11行11列的多0数组 int[][] arrays1=new int[11][11]; arrays1[1][2]=1;//第二行第三列为1 arrays1[2][3]=2;//第三行第四列为2 //遍历 for (int[] ints : arrays1) { for (int ints2 : ints) { System.out.print(ints2+"\t"); } System.out.println(); } System.out.println("--------------------------------------"); //用稀疏数组来存放arrays1 //获取有效数字 int sum=0; for (int[] ints : arrays1) { for (int anInt : ints) { if (anInt!=0){ sum++; } } } System.out.println(sum);//2 System.out.println("--------------------------------------"); //开始创建稀疏数组 int [][] arrays2=new int[sum+1][3];//因为第一行是存放行列和有效数总数的,所以要加一行 arrays2[0][0]=11;//行 arrays2[0][1]=11;//列 arrays2[0][2]=2;//有效数 //遍历二维数组,找出不为0的数,写入稀疏数组 int count=1; for (int i = 0; i < arrays1.length; i++) { for (int j = 0; j < arrays1[i].length; j++) { if (arrays1[i][j]!=0){ arrays2[count][0]=i; arrays2[count][1]=j; arrays2[count][2]=arrays1[i][j]; count++; } } } //遍历稀疏数组 for (int[] ints : arrays2) { for (int ints2 : ints) { System.out.print(ints2+"\t"); } System.out.println(); } System.out.println("--------------------------------------"); //还原稀疏数组 int [][] arrays3=new int[arrays2[0][0]][arrays2[0][1]]; for (int i = 1; i < arrays2.length; i++) { arrays3[arrays2[i][0]][arrays2[i][1]]=arrays2[i][2]; } //遍历还原后的稀疏数组 for (int[] ints : arrays3) { for (int ints2 : ints) { System.out.print(ints2+"\t"); } System.out.println(); } System.out.println("--------------------------------------"); } }