第四章总结

1.一维数组:数组元素类型决定了数组的数据类型。它可以是java中任意的数据类型,包括基本数据类型和其他引用类型。数组名字为一个合法的标识符,符号"[ ]"指明该变量是一个数组类型变量。单个"[ ]"表示要创建的数组为一个一维数组。

声明一维数组的两种方法:

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

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

int arr[];
double[]dou; 

注意声明完数组后,还不能访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,要想真正使用数组,还要为它分配内存空间。在为数组分配内存空间时必须指明数组长度,为数组分配内存空间的语法如下:

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

注意数组元素下标是从0开始的。

声明与分配一起执行:

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

2.初始化一维数组:

int a[]={1,2,3};//第一种方法
int b[]=new int[]{4,5,6};//第二种方法
int c[]=new int[3];//第三种方法
c[0]=7;//给第一个元素赋值
c[1]=8;//给第二个元素赋值
c[2]=9;//给第三个元素赋值

3.获取数组长度

arr.length

arr:数组名;

length:数组长度属性,返回int 值

public class test1 {
	public static void main(String[]args){
		char a[]={'A','B','C','D'};//创建一维数组
		System.out.println("数组a的长度为:"+a.length);//输出
		char b[]=a;//创建一维数组b,直接等于数组a
		System.out.println("数组b的长度为:"+b.length);//输出
		
	}
	

}

4.使用一维数组

public class test2 {

	public static void main(String[] args) {
		int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};//创建并初始化一维数组
		for(int i=0;i<12;i++){//利用循环将信息输出
			System.out.println((i+1)+"月有"+day[i]+"天");//输出的信息
		}
				

	}

}

数组越界:

public class test3 {

	public static void main(String[] args) {
		int a[]=new int[3];//最大下标为2
		System.out.println(a[3]);//下标越界!
		
		
	}

}

运行结果:

5.二维数组 

二维数组可以看成是特殊的一维数组

声明方法:

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

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

int tdarr1[][];
char[][]tdarr2;

 分配内存的方式:

int a[][];
a=new int[2][4];//直接分配行列
int b[][];
b=new int[2][];//先分配行,不分配列
b[0]=new int[2];//给第一行分配列
b[1]=new int[2];//给第二行分配列

注意:创建二维数组时候,可以只声明”行“的长度,而不声明”列“的长度

但如果不声明”行“的长度的话,就是错误写法

6.初始化二维数组

public class test4 {

	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
	

	}

}

 7.使用二维数组

public class test5 {
public static void main(String[]args){
	char arr[][]=new char[4][];//创建一个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)//判断i是否为偶数
	{	System.out.println(",");//如果是一、三句,输出逗号
		
	}else{System.out.println("。");//如果是二、四句,输出句号
		
	}
}
	
	System.out.println("\n-----竖版-----");//输出信息
	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("。 , 。 ,");//输出信息
}
}
public class test7 {

	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[]{42,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[i].length+"个元素,分别是:");
			for(int tmp:a[i]){//foreach循环输出数组中的元素
				System.out.print(tmp+" ");//输出信息
				
			}
			System.out.println();//换行
		}

	}

}

 8.遍历数组:就是获取数组中的每一个元素。通常遍历数组都是使用for循环来实现。

public class test8 {

	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();
		}

	}

}

填充和批量替换数组元素

数组中的元素定义完后,可通过Arrays类的静态方法fill()来对数组中的元素进行分配,可以起到填充和替换的效果。

语法如下:

Arrays.fill(int[]a,int value)

a:要进行元素分配的数组名

value:要存储数组中所有元素的值。

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

public class test6 {

	public static void main(String[] args) {
		int arr[]=new int[5];//定义数组并给定区间长度
		Arrays.fill(arr,8);//使用fill()的方法填充数组
		for(int i=0;i<arr.length;i++){//利用for循环遍历数组
			System.out.println("第"+i+"个元素是:"+arr[i]);//输出数组中每一个元素
			
		}

	}

}

 fill(int[]a,int fromlndex,int tolndex,int value)

该方法将指定的int 值分配给int 型数组指定范围中的每一个元素。填充的范围从索引fromlndex(包括)一直到索引tolndex(不包括)。如果fromlndex==tolndex,则填充范围为空。

语法如下:

Arrays.fill(int[]a,int fromlndex,int tolndex,int value)

a:要进行分配的数组。

fromlndex:要使用指定值填充的第一个元素的索引(包括)。

tolndex:要使用指定值填充的最后一个元素的索引(不包括)。

value:要存储在数组所有元素中的值。

import java.util.Arrays;

public class test2 {

	public static void main(String[] args) {
		char arr[]=new char[]{'1','8','6','1','2','3','4','5','6','7','8'};//定义数组并赋值
		Arrays.fill( arr,3,7,'*');//使用fill()方法对数组进行填充
		for(int i=0;i<arr.length;i++){//遍历数组并输出数组中的每一个元素
			System.out.print(arr[i]);//输出信息
		}

	}

}

9.复制数组

1.copyOf()方法

Arrays.copyOf(arr,int newlength)

arr:要进行复制的数组。

newlength:int型常量,指定赋值后的新数组的长度。如果新数组的长度大于数组arr的长度,则用0填充,char用null来填充;如果复制后的数组长度小于数组arr的长度,则会从数组的第一个元素开始截取。

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

public class test5 {

	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]);//将新数组输出
		}

	}

}

2.copyOfRange()方法

语法:

Arrays.copyOfRange(arr,int fromlndex,int tolndex)
import java.util.Arrays;//导入java.util.Arrays类

public class test6 {

	public static void main(String[] args) {//主方法
		int arr[]=new int[]{23,42,12,84,10};//定义一个int型数组并初始化
		int newarr[]=Arrays.copyOfRange(arr,0,3);//复制数组
		for(int i=0;i<newarr.length;i++){//控制循环,遍历数组
			System.out.println(newarr[i]);//将数组中的每一个元素输出
		}

	}

}

冒泡排序:

public class BubbleSort {
	/**
	 * 冒泡排序方法
	 * 
	 * @param 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);
}
/**
 * 显示数组中的所有元素
 * 
 * @param array
 * 要显示的数组
 */

public void showArray(int[]array){
	System.out.println("冒泡排序的结果:");
	for(int i:array){
		System.out.print(i+" ");
		
		
	}System.out.println();
	
}
public static void main(String[]args){
	int[]array={63,4,24,1,3,15};
	BubbleSort sorter=new BubbleSort();
	sorter.sort(array);
	
}}

 选择排序:

public class SelectSort {
	/**
	 *直接选择排序法
	 *https://developer.android.com/studio/index.html
	 *@param 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;
				}
				
			}
			int temp=array[array.length-i];
			array[array.length-i]=array[index];
			array[index]=temp;
		}
		showArray(array);
	}
/**
 * 显示数组中的所有元素
 * @param array
 * 要显示的数组
 */
public void showArray(int[]array){
	System.out.println("选择排序的结果为:");
	for(int i:array){
		System.out.print(i+" ");
		}
	System.out.println();
}

public static void main(String[]args){
	int[]array={63,4,24,1,3,15};
	SelectSort sorter=new SelectSort();
	sorter.sort(array);
	
}
}

10.Array.Sort()方法:

public class test9 {

	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]+" ");//将排序后的数组中的各个元素输出
		}
		

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值