Java数组的基础知识

1、一维数组

创建和初始化一维数组

先声明后定义
语法格式为
数组元素类型 数组名字[ ];
数组元素类型[ ] 数组名字;
分配内存
数组名字 = new 数组元素类型[数组元素的个数]
也可为
数组元素类型 数组名[ ] = new 数组元素类型[数组元素的个数];
代码为

int arr[] = new int[]{1,2,3,4,5};
int arr2[] = {23,1,34,6,1};

2、二维数组

创建和初始化二维数组

int array[] [] = new int [] [] {{1,2,3},{4,5,6}};
int array1[] [] = {{1,2,3},{4,5,6}};

3、遍历数组

使用for循环和foreach循环,区别为for循环能在遍历过程中修改数组中的元素,而foreach循环不行

public class BianliArray {
 public static void main(String[] args) {
  int[] array = new int[5];
  for(int i=0;i<array.length;i++) {
   array[i]=i; //赋值
  }
  System.out.println("数组中的元素为:");
  for(int i : array) {
   System.out.print(i+" "); //遍历输出数组元素
  }
 }
}

运行结果
在这里插入图片描述

补:

如果要不换行输出可以使用如下语句:System.out.print()
换行输出 System.out.println()

4、复制数组

使用的是java.util.Arrays类中的copyOf()方法或copyOfRange()方法

使用copyOf()复制数组的语法为

public  static int[] copyOf(int[] original, int  newLength)

original是原数组,newLength是复制完成后新数组的数组长度

使用copyOfRange()复制数组的语法为

public static int[] copyOfRange(int[] original, int from, int to)

original是原数组
from是开始复制的数组索引,其值必须大于0,小于original数组元素的个数
to其值必须大于等于from,并且可以大于original数组元素的个数

左闭右开,新数组取到 to-1个位,即第to个元素

package com.pcx;
import java.util.Arrays;
public class ArrayCopy {
 public static void main(String[] args) {
  int[] array = {1,2,3,4};
  int[] arrayCopy = Arrays.copyOf(array, 6); //复制数组,新数组的长度为6
  int[] arrayRangeCopy = Arrays.copyOfRange(array, 2, 6); //部分复制数组,新数组从原数组的第三个元素开始复制,复制到第六个元素
  System.out.println("原数组为:");
  for(int i : array) {
   System.out.print(i+" ");
  }
  System.out.println();
  System.out.println("复制数组为:");
  for(int i : arrayCopy) {
   System.out.print(i+" ");
  }
  System.out.println();
  System.out.print("部分复制数组为:");
  for(int i : arrayRangeCopy) {
   System.out.print(i+" ");
  }
 }
}

在这里插入图片描述

5、填充数组

使用的是java.util.Arrays类中的fill()方法

语法格式为:

public static void fill(int[] a, int val)

a为原数组,val为用来填充数组的元素值

package com.pcx;
import java.util.Arrays;
public class ArrayFill {
 public static void main(String[] args) {
  int[] array  = new int[5];
  Arrays.fill(array, 5); //将数组中的元素全部赋值为5
  System.out.println("数组中的元素为:");
  for(int i : array) {
   System.out.print(i+" ");
  }
 }
}

运行结果
在这里插入图片描述

6、排序数组元素

使用的是java.util.Arrays类中的sort()方法,是按升序排列的

语法为

public static void sort(int[] array)
package com.pcx;
import java.util.Arrays;
public class ArraySort {
 public static void main(String[] args) {
  int[] array = {5,4,3,2,1};
  System.out.println("排序前数组元素为:");
  for(int i : array) {
   System.out.print(i+" ");
  }
  System.out.println();
  Arrays.sort(array); //简化的写法
  System.out.println("排序后数组元素为:");
  for(int i : array) {
   System.out.print(i+" ");
  }
 }
}

运行结果
在这里插入图片描述

补例:

冒泡排序法

package com.pcx;
import java.util.Arrays;
import java.util.Scanner;
public class BubbleSort冒泡排序 {
 public static void main(String[] args) { 
 Scanner sc = new Scanner(System.in);
 int[] array = new int[5];
 for(int i=0;i<array.length;i++) {
  array[i]=sc.nextInt(); //循环输入数组中的元素
     }
 for(int i=0;i<array.length;i++) { //冒泡排序
  for(int j=0;j<array.length-1;j++) {
   if(array[j]>array[j+1]) {
    int t=array[j];
    array[j]=array[j+1];
    array[j+1]=t;
    
   }
  }
  System.out.println(Arrays.toString(array)); //输出排序过程
 }
 sc.close();
 }
}

在这里插入图片描述

7、查找数组元素

使用的是java.util.Arrays类中的binarySearch()方法

package com.pcx;
import java.util.Arrays;
public class ArraySearch {
 public static void main(String[] args) {
  int[] array = {5,4,3,2,1};
  System.out.print("数组中的元素:");
  for(int i : array) {
   System.out.print(i+" "); //先遍历输出
  }
  System.out.println(); //换行
  Arrays.sort(array); //将数组按升序排序,排序后为1,2,3,4,5
  int index = Arrays.binarySearch(array, 0); //查找元素0在数组中的索引值
  System.out.println("元素0在数组中的索引值为:"+index); //-1为查找不到
 }
}

运行结果
在这里插入图片描述

binarySearch()方法使用二分法查找数组元素,在使用前需要先对数组进行排序。

二分法的思想

首先二分法排序必须为有序数组,从中查找某一元素,如果此元素在这个数组中则返回下标,不在则返回-1;

通过数组的长度取其中间值,然后与要查找的元素相比较,如果大于则下次循环应该从左边查找,小于则从右边;

二分法排序快的原因是它并没有循环所有元素,而是折半查询,但是需要有序数组这一必要条件

补例:

互换二维数组的行列

package com.pcx;
import java.util.Scanner;
public class Transportation数组互换行列 {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int [][] arr1 = new int[2][3];
  int [][] arr2 = new int[3][2];
  System.out.println("请输入二维数组中的元素:");
  for(int i=0;i<2;i++) {
   for(int j=0;j<3;j++) {
    arr1[i][j]=sc.nextInt();
   }
  }
  sc.close();
  System.out.println("二维数组中的元素:");
  for(int i=0;i<arr1.length;i++) { //arr1.length代表行数
   for(int j=0;j<arr1[i].length;j++) { //arr1[i].length代表的是列数
    System.out.print(arr1[i][j]+" ");
   }
   System.out.println();
  }
  System.out.println("转置后的数组元素:");
  for(int i=0;i<3;i++) {
   for(int j=0;j<2;j++) {
    arr2[i][j]=arr1[j][i];
    System.out.print(arr2[i][j]+" ");
   }
   System.out.println();
  }
 }
}

运行结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值