Java第四章总结

本文详细介绍了Java中数组的概念,包括一维数组和二维数组的创建、初始化、获取长度及使用方法。通过示例代码展示了如何遍历、填充、复制和排序数组,如冒泡排序和直接选择排序。此外,还涉及到了数组的其他基本操作,如使用Arrays类的fill和copyOf方法。
摘要由CSDN通过智能技术生成

4.1 数组的概述
       数组是具有相同数据类型的一组数据的集合。例如,球类的集合——足球、篮球、羽毛球等;电器集合——电视机、洗衣机、电风扇等。在程序设计中,可以将这些集合称为数组。数组中的每个元素具有相同的数据类型。在Java中同样将数组看作是一个对象,虽然基本数据类型不是对象,但是由基本数据类型组成的数组则是对象。在程序设计中引入数组可以更有效地管理和处理数据。我们经常使用的数组包括一维数组和二维数组等。

4.2 一维数组
4.2.1 创建一维数组
4.2.2 初始化一维数组
4.2.3 获取数组长度
 

例4.1

package d4;

public class li1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			char a [] = {'A','B','C','D'};
			System.out.println("数组a的长度为" + a.length);
			char b [] = a;
			System.out.println("数组b的长度为" +b.length);
	}

}

4.2.4 使用一维数组 

 例4.2

package d4;

public class li2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int day[] = new int[] {31,28,31,30,31,30,31,31,30,31,30,31};
	    //for (int i = 0; i < 12; i++) {利用循环将信息输出
		  for (int i = 0; i < day.length; i++) {
			System.out.println((i+1) +"月有" + day[i] + "天");//输出的信息
		}
	}

}

 

4.3 二维数组 
比如快捷酒店,每一个楼层都有很多房间,这些房间都可以构成一维数组,如果这个酒店有500个房间,并且所有房间都在同一个楼层里,那么拿到499号房钥匙的旅客可能就不高兴了,从1号 扫一扫,看视频房走到499号房要花好长时间,因此每个酒店都不只有一个楼层,而是很多楼层,每一个楼层都会有很多房间,形成一个立体的结构,把大量的房间均摊了下来,这种结构就是二维表结构。

4.3.1 创建二维数组
4.3.2 初始化二维数组
 

例4.3

package d4;

public class li3 {
 
	public static void main(String[] args) {
		/*第一种方式*/
		int tdarr1[][] = { { 1, 3, 5 }, {5, 9, 10 } };//创建并初始化二维数组
		/*第二种方式*/
		int tdarr2[][] = new int[][] { { 65, 55, 12 }, {92, 7, 22 } };//创建并初始化二维数组
		/*第三种方式*/
		int tdarr3[][] = new int[2][3];//先给数组分配内存空间
		tdarr3[0] = new int[] { 6, 54, 71 };//创建一维数组
		tdarr3[1][0] = 63;//给第二行第一列赋值为63
		tdarr3[1][1] = 10;//给第二行第二列赋值为10
		tdarr3[1][2] = 7;//给第二行第三列赋值为7
	
	}
}

4.3.3 使用二维数组 

例4.4 

package d4;

public class li4 {
 
	public static void main(String[] args) {
		char arr[][] = new char[4][];
		arr[0] = new char[] {'春','眠','不','觉','晓'};//为每一行赋值
		arr[1] = new char[] {'处','处','闻','啼','鸟'};//为每一行赋值
		arr[2] = new char[] {'夜','来','风','语','声'};//为每一行赋值
		arr[3] = new char[] {'花','落','知','多','少'};//为每一行赋值
		/*横版输出*/
		System.out.println("-----横版-----");
		for (int i = 0; i < 4; i++) {//循环4行
			for (int j = 0; j < 5; j++) {//循环5列
				System.out.print(arr[i][j]);//输出数组中的元素
			}
		if (i % 2 == 0) {
			System.out.println(",");//如果是一,三句,输出逗号
		}else {
			System.out.println("。");//如果是二,四句,输出句号
		}
		}
	/*竖版输出*/
		System.out.println("-----竖版输出-----");
		for (int j = 0; j < 5; j++) {//列变行
			for (int i = 3; i >= 0; i--) {//行变列
				System.out.print(arr[i][j]);//输出数组中的元素
			}
			System.out.println();//换行
		}
		System.out.println("。,。,");//输出最后的标点
	}
}

 例4.5

package d4;

public class li5 {
 
	public static void main(String[] args) {//主函数
		int a[][]= new int[3][];//创建二维数,指定行数,不指定列数
		   a[0] = new int[] {52, 64,85,12,3,64};// 第一行分配6个元素 
		   a[1] = new int[] { 41,99,2};//第二行分配3个元素
		   a[2] = new int[] { 285, 61,278,2 };// 第三行分配4个元素 
		   for (int i =0; i<a.length; i++) {//数组长度判断条件
		   System.out.print("a[" +i+"]中有"+a[1].length+"个元素,分别是:"); //输出元素语段
		   for (int tmp : a[i]) { // foreach 循环输出数组中元素
		   System.out.print(tmp + " ");//输出元素个数
		   }
		   System.out.println();//输出元素
		   }
		 }
 
		}

4.4 数组的基本操作

遍历数组就是获取数组中的每个元素。通常遍历数组都是使用for循环来实现的。遍历一维数扫一扫,看组很简单,也很好理解,下面详细介绍遍历二维数组的方法。
遍历二维数组需使用双层for循环,通过数组的 length属性可获得数组的长度。

例4.6

package d4;

public class li6 {
 
	public static void main(String[] args) {//主函数
		int b[][] = new int[][] { { 1 },{ 2,3 },{ 4,5,6 } }; // 定义二维数组
		  for (int k= 0; k<b.length; k++) {//确定数组长度
		  for (int c = 0; c<b[k].length; c++) { // 循环遍历二维数组中的每个元素
		  System.out.print(b[k][c]);//将数组中的元素输出
		  }
		  System.out.println();// 输出换行
		  
		 }
		 }
		}

4.4.2 填充和批量替换数组元素


数组中的元素定义完成后,可通过Armays类的静态方法1)来对数组中的元素进行分配,可以填充和替换的效果。0方法有两种参数类型,下面以int型数组为例介绍fll)方法的使用。

 

 例4.7

package d4;

import java.util.Arrays;

public class li7 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[] = new int[5];
		Arrays.fill(arr, 8);
		for (int i = 0; i < arr.length; i++) {
			System.out.println("第"+i +"个元素是"+arr[i]);

		}
	}

}

例4.8

package d4;

import java.util.Arrays;

public class li8 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[] = new int[] {45,12,2,77,31,91,10};
		Arrays.fill(arr, 1, 4, 8);
		for (int i = 0; i < arr.length; i++) {
			System.out.println("第"+i +"个元素是"+arr[i]);
		}
	}

}


4.4.3 复制数组

例4.9

package d4;

import java.util.Arrays;                      //导入java.util.Arrays类

public class li9 {

	public static void main(String[] args) {  //主方法
		int arr[] = new int[] {23,42,12};     //定义数组
		int newarr[] =Arrays.copyOf(arr, 5);  //复制数组arr
		for (int i = 0; i < newarr.length; i++) {//循环变量复制后的新数组
			System.out.println("第"+i +"个元素是"+newarr[i]);//将新数组输出
		}
	}

}

 

例4.10

package d4;

import java.util.Arrays;
public class li10 {
 
	public static void main(String[] args) {//主函数
		int arr[] = new int[] { 23, 42 , 12, 84, 10 }; // 定义数组
		  int newarr[] = Arrays.copyOfRange(arr, 0, 3);//复制数组arr
		  for (int i = 0; i<newarr.length; i++) { // 循环变量复制后的新数组
		  System.out.println(newarr[i]);//将新数组中的元素输出
		  }
	}
		}

 

4.5 数组的排序

4.5.1 算法:冒泡排序
冒泡排序是最常用的数组排序算法之一,它以简洁的思想与实现方法备受青睐,是切学者题先扫接能的一个排序算法。使用冒泡排序时,排序数组元素的过程总是小数往前放,大数往后放,类似水中气泡往上升的动作,所以称作冒泡排序。

例4.11

package d4;

public class li11 {
	public static void main(String[] args) {
		int[] array= {63,4,24,1,3,15};//创建一个数组
		li11 sorter= new li11();//创建冒泡排序类的对象
		sorter.sort(array);//调用排序方法将数组排序
	}
 
	private void showArray(int[] array) {
		System.out.println("冒泡排序的结果;");
		for(int i: array) {//遍历数组
			System.out.print(i+" ");//输出每个元素的值			
		}
      System.out.println();
	}
	public void sort(int[] array) {
		for (int i=1;i<array.length; i++){
			for(int j=0;j<array.length -1;j++) {//比较相邻两个元素,较大的数往后冒泡
				if(array[j]>array[j+1]) {//如果前一个元素比后一个元素大,则两元素互换
					int temp=array[j];//把第一个元素值保存到临时变量中
					array[j]=array[j+1];//把第二个元素值保存到第一个元素单元中
					array[j+1]=temp;//把临时变量(也就是第一个元素原值)保存到第二个元素中
					
				}
			}
		}
			showArray(array);}}//输出冒泡排序后的数组元素

例4.12 

package d4;

public class li12 {
 
	public static void main(String[] args) {
		int[] array= {63,4,24,1,3,15};//创建一个数组
		li12 sorter=new li12();//创建直接排序类的对象
      sorter.sort(array);//调用排序对象的方法将数组排序
	}/*
	*直接选择排序法
	*    array
	*    要排序的数组
	*/
 
	public void sort(int[] array) {
	int index;
	for(int i=1;i<array.length;i++) {
		index=0;
		for(int j=1;j<=array.length-i;j++) {
			if(array[j]>array[index]) {
				index=j;
			}
		}//交换在位置array.length-i和index(最大值)上的两个数
		int temp=array[array.length-i];//把第一个元素值保存到临时变量中
		array[array.length-i]=array[index];//把第二个元素值保存到第一个元素单元中
		array[index]=temp;//把临时变量也就是第一个元素原值保存到第二个元素中
	}
	showArray(array);//输出直接选择排序后的数组值
}/*
*显示数组中的所有元素
*   显示的数组
*
*/
	private void showArray(int[] array) {
		System.out.println("选择排序结果为:");
		for(int i:array) {//遍历数组
			System.out.print(i+" ");//输出每个数组元素值
		}
		System.out.println();
	}}

 例4.13

package d4;

import java.util.Arrays;
public class li13 {
 
	public static void main(String[] args) {
		  int arr[] = new int[] { 23, 42, 12, 8 }; // 声明数组 
		    Arrays.sort(arr);      //将数组进行排序 
		    System.out.println("排序后的结果为");//输出排序后的结果
		    for (int i =0; i < arr.length; i++){ //循环遍历排序后的数组
		     System.out.print(arr[i]+" ");  //将排序后数组中的各个元素输出
		    }
		  
	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值