第五章总结

5.2一维数组

5.2.1创建一维数组

        数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组的创建有两种形式。

        1.先声明,再用new关键字进行内存分配

        声明一维数组有下列两种方式:

        数组元素类型 数组名字[];

        数组元素类型[] 数组名字;

        数组元素类型决定了数组的数据类型,它可以是Java中任意的数据类型,包括简单类型和组合类型。

        声明一维数组:int arr[]

        声明数组后我们还不能立即访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,要想使用它还要为它分配内存空间。

        在位数组分配内存空间时必须指明数组的长度,格式如下:

        数组名字=new 数组元素的类型[数组元素的个数]

        数组名字:被连接到数组变量的名称。

        数组元素的个数:指定数组中变量的个数,即数组的长度。

        为数组分配内存:arr=new int[5]

        2. 声明的同时为数组分配内存

        数组元素的类型 数组名=new 数组元素的类型[数组元素的个数];

 5.2.2初始化一维数组

        int arr[ ]=new int [ ]{1,2,3,5,25};

        int arr[ ]={34,23,12,6};

5.2.3使用一维数组

【例5.1】 

public class Job1 {//创建类
	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<day.length;i++) {//利用循环将信息输出
			System.out.println((i+1)+"月有"+day[i]+"天");//输出每月的天数
		}
	}
}

 5.3二维数组

        如果一维数组中的各个元素仍然是一个数组,那么它就是一个二维数组。

public class Job2 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int arr[]= {5,13,96};//定义二维数组
		System.out.println("一维数组中的元素分别为:");//输出
		for(int x:arr) {//利用循环将信息输出
			System.out.println(x);//输出
		}
	}
}

 【例5.2】

public class Job3 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int a[][]=new int[3][4];//定义二维数组
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {//循环遍历中的每个元素
				System.out.print(a[i][j]);//将数组中的元素输出
			}
			System.out.println();//输出空格
		}

	}

}

5.4数组基本操作

5.4.1遍历台数

【例5.4】 

public class Job4 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int arr2[][]= {{4,3},{1,2}};//定义二维数组
		System.out.println("数组中的元素是:");//提示信息
		int i=0;//外层循环计数器变量
		for(int x[]:arr2) {//外层循环变量为一维数组
			i++;//外层计数器递增
			int j=0;//内层循环计数器变量
			for(int e:x) {//循环遍历每一个数组元素
				j++;//内层计数器递增
				if(i==arr2.length&&j==x.length) {//判断变量是二维数组中的最后一个元素
					System.out.print(e);//输出二维数组中的最后一个元素
				}else//如果不是二维数组中的最后一个元素
					System.out.print(e+"、");//输出信息			
			}
		}	
	}
}

5.4.2 填充替换数组元素

        1.fall(int[] a,int value)

【例5.5】

import java.util.Arrays;//导入java.util.Arrays类
public class Job5 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int arr[]=new int[5];//创建int型数组
		Arrays.fill(arr, 8);//使用同一个值对数组进行填充
		for(int i=0;i<arr.length;i++) {//循环遍历数组中的元素
			System.out.println("第"+i+"个元素是:"+arr[i]);//将数组中的元素依次输出
		}
	}
}

        2.fall(int[] a,int fromlndex,int tplndex,int value) 

【例5.6】

import java.util.Arrays;//导入java.util.Arrays类
public class Job6 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int arr[]=new int[] {45,12,2,10};//定义并初始化int型数组arr
		Arrays.fill(arr,1,2, 8);//使用fill()方法替换数组指定范围内的元素
		for(int i=0;i<arr.length;i++) {//循环遍历数组中的元素
			System.out.println("第"+i+"个元素是:"+arr[i]);//将数组中的元素依次输出
		}
	}
}

5.4.3对数组进行排序

【例5.7】 

import java.util.Arrays;//导入java.util.Arrays类
public class Job9 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int arr[]=new int[] {23,42,12,8};//声明数组
		Arrays.sort(arr);//将数组进行排序
		for(int i=0;i<arr.length;i++) {//循环遍历排序后的数组
			System.out.println(arr[i]);//将排序后数组中的各个元素输出
		}
	}
}

5.4.4复制数组

        1.copyOf(arr,int newlength)

【例5.8】

import java.util.Arrays;//导入java.util.Arrays类
public class Job7 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		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(newarr[i]);//将新数组输出
		}
	}
}

        2. copyOfRange

【例5.9】

import java.util.Arrays;//导入java.util.Arrays类
public class Job8 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int arr[]=new int[] {23,42,12,84,10};//定义数组
		int newarr[]=Arrays.copyOfRange(arr,0,3);//复制数组
		for(int i=0;i<newarr.length;i++) {//循环遍历复制后的新数组
			System.out.println(newarr[i]);//将新数组中的每个元素输出
		}
	}
}

 5.4.5查询数据

        1.binarySearch(Object[] a,Object key)

【例5.10】

import java.util.Arrays;//导入java.util.Arrays类
public class Job10 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		int ia[]=new int[] {1,8,9,4,5};//定义int型数组ia
		Arrays.sort(ia);//将数组进行排序
		int index=Arrays.binarySearch(ia, 4);//查找数组ia中元素4的索引位置
		System.out.println("4的索引位置是:"+index);//将索引输出
	}
}

        2.binarySearch(Object[] a,int fromlndex,int tolndex,Object key)

【例5.11】

import java.util.Arrays;//导入java.util.Arrays类
public class Job11 {//创建类
	public static void main(String[] args) {//主方法
		// TODO Auto-generated method stub
		String str[]=new String[] {"ab","cd","ef","yz"};//定义Sring型数组str
		Arrays.sort(str);//将数组进行排序
		int index=Arrays.binarySearch(str,0,2, "cd");//在指定范围内搜索元素"cd"的索引位置
		System.out.println("cd的索引位置是:"+index);//将索引输出
	}
}

5.5.1冒泡排序

【例5.12】

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

  

【例5.13】

public class SelectSort {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[]array= {63,4,24,1,3,15};//创建一个数组,元素是乱序的
        SelectSort sorter=new SelectSort();//创建直接排序类的对象
        sorter.sort(array);//调用排序对象方法,对数组排序
    }
 
    private void sort(int[] array) {
        // TODO Auto-generated method stub
        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) {
        // TODO Auto-generated method stub
        for(int i:array) {//遍历数组
            System.out.print(">"+i);//输出每个数组元素值
        }
        System.out.println();
    }
 
}

​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值