Java基础知识----数组

一、数组的含义

数组是一个具有相同数据类型的一组数据的集合。例如,球类的集合——排球、篮球、乒乓球球等;电器集合——冰箱、空调、电热水器等。数组有两种,一维数组和二维数组。

二、一维数组的创建和使用

1、创建一维数组

数组作为对象允许使用new关键字进行内存分配。符号“[ ]”:指明该变量是一个数组类型变量,单个“[ ]”表示要创建的数组是一维数组

声明一维数组有两种形式,语法如下所示:

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

例如:int arr[]    

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

例如:int []arr

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

例如:arr=new int[8]

2、初始化一维数组

数组可以与基本数据类型一样进行初始化操作,数组的初始化可分别初始化数组中每个元素。

int arr[] = new int[]{1,2,3,5,25};    //第一种初始化方式

int arr2[] = {34,23,12,6};        //第二种初始化方式

3、使用一维数组

	String zhou[]=new String[] {"周日","周一","周二","周三","周四","周五","周六"};
           //含有7个字符串元素
	for(int i=0;i<=6;i++){           //由于素组是0开始,用for循环一一展现
		System.out.println(zhou[i]);
	}

/*输出结果:
周日
周一
周二
周三
周四
周五
周六
*/

三、二维数组的创建及使用

1、二维数组的创建  

符号“[ ]”:指明该变量是一个数组类型变量,两个“[ ]”表示要创建的数组是二维数组。

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

例如:int arr[][]

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

例如:int [][]arr

2、二维数组初始化

type arrayname[][] = {value1,value2…valuen};

type:数组数据类型

arrayname:数组名称,一个合法的标识符

value:数组中各元素的值

例如:int arr[][]={{11,0},{55,33}}

3、使用二维数组

int arr[][]=new int[5][6];   //定义二维数组
	for(int i=0;i

四、数组的基本操作

1、遍历数组

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

int arr[][]=new int[][] {{23,24},{11,17,13}};   //定义二维数组
	for(int i=0;i

2、填充替换数组元素

数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。

(1)fill(int[] a,int value)

int[] a:需要替换的数组

value:替换的值

int arr[]=new int[5];   //定义二维数组
	Arrays.fill(arr, 8);   //对数组进行填充
	for(int i=0;i

(2)fill(int[] a,int fromIndex,int toIndex,int value)

int[] a:需要替换的数组

fromIndex:指定填充第一个元素(包括)

toIndex:指定填充最后一个元素(不包括)

value:替换的值

int arr[]=new int[] {1,2,3,4,5,6,7,8,9};   //定义二维数组
	Arrays.fill(arr,1,2,23 );   //对数组1至2之间进行填充
	for(int i=0;i

3、对数组进行排序

通过Arrays类的静态sort()方法可实现对数组排序,可对任意类型数组进行升序排序。

Arrays.sort(object)

object:指进行排序的数组名称

int arr[]=new int[] {5,2,1,4,3,6,8,7,9};   //定义二维数组
	Arrays.sort(arr);   //进行数组排序(升序)
	for(int i=0;i

4、复制数组

Arrarys类的copyOf()方法与copyOfRange()方法可实现对数组的复制。

copyOf(arr,int newlength)方法是复制数组至指定长度

arr:要复制的数组。

newlength:新数组长度。

	int arr[]=new int[] {5,2,1,4,3};   //定义二维数组
	int arr11[]=Arrays.copyOf(arr, 8);   //进行数组排序(升序)
	for(int i=0;i

copyOfRange(arr,int fromIdenx,int toIndex)方法则将指定数组的指定长度复制到一个新数组中。

arr:要复制的数组。

fromIdenx:开始的索引位置。

toIndex:要复制的最后索引位置。

	int arr[]=new int[] {5,2,1,4,3};   //定义二维数组
	int arr11[]=Arrays.copyOfRange(arr, 0,2);   //进行数组排序(升序)
	for(int i=0;i

5、数组查询

Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获得指定对象。

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

a:搜索的数组。

key:要搜索的值。

int arr[]=new int[] {5,2,1,4,3};   //定义二维数组
	int arr11=Arrays.binarySearch(arr, 1);   //数组查询
		System.out.print(arr11);
//输出结果:2

(2)binarySearch(Object[] a,int fromIndex , int toIndex,Object key)

a:搜索的数组。

key:要搜索的值。

fromIndex:指定搜索第一个元素(包括)

toIndex:指定搜索最后一个元素(不包括)

	int arr[]=new int[] {5,2,1,4,3,2,2};   //定义二维数组
	int arr11=Arrays.binarySearch(arr,1,3,2);   //数组查询1至3之间搜索2
		System.out.print(arr11);

//输出结果:1

五、数组排序算法

1、冒泡排序

冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是小数往前放,大数往后放,类似水中气泡往上升的动作,所以称作冒泡排序。

package bao;

import java.util.Arrays;

public class Demo1 {
	public static void main(String[] args) {
     int arr[]= {54,33,23,24,17,13,2};   //创建一维数组
     Demo1 demo=new Demo1();        //创建冒泡排序类对象
     
     demo.sort(arr);//调用冒泡排序
 
	}
	
	/*
	 冒泡排序
	  */
	public void sort(int[]arr) {
		for(int i=1;iarr[j+1]) {
					int temp=arr[j];    //第一个元素保存到临时变量
					arr[j]=arr[j+1];    //第二元素保存到第一个元素单元单元中
					arr[j+1]=temp;     //把临时变量保存到第二个单元
				}
			}
		}
		showArr(arr);
	}
	/*
	 * 显示数组所有元素
	 */
	   public void showArr(int[] arr) {
		   for(int i:arr) {
			   System.out.print("  "+i);
		   }
	   }
}
//输出结果:  2  13  17  23  24  33  54

2、直接选择排序       

package bao;

import java.util.Arrays;

public class Demo1 {
	public static void main(String[] args) {
     int arr[]= {54,33,23,24,17,13,2};   //创建一维数组
     Demo1 demo=new Demo1();        //创建冒泡排序类对象
     
     demo.sort(arr);//调用冒泡排序
 
	}
	
	/*
	 直接选择排序
	  */
	public void sort(int[]arr) {
		int ido;
		for(int i=1;iarr[ido]) {
					ido=j;
				}
			}
			//交换位置array.length-i和ido(最大值)
			int temp=arr[arr.length-i];
			arr[arr.length-i]=arr[ido];
			arr[ido]=temp;
		}
		showArr(arr);
	}
	/*
	 * 显示数组所有元素
	 */
	   public void showArr(int[] arr) {
		   for(int i:arr) {
			   System.out.print("  "+i);
		   }
	   }
}

//输出结果:  2  13  17  23  24  33  54

3、反转排序 

反转数组就是以相反的顺序把原有数组的内容重新排序。

package bao;

import java.util.Arrays;

public class Demo1 {
	public static void main(String[] args) {
     int arr[]= {1,2,3,4,5,6,7};   //创建一维数组
     Demo1 demo=new Demo1();        //创建冒泡排序类对象
     
     demo.sort(arr);//调用冒泡排序
 
	}
	
	/*
	 反转排序
	  */
	public void sort(int[]arr) {
		System.out.println("原来数组:");
		showArr(arr);
		int temp;
		int arrlen=arr.length;
			for(int i=0;i<=arrlen/2;i++) {
				//交换位置array.length-i和ido(最大值)
				 temp=arr[i];
				arr[i]=arr[arrlen-1-i];
				arr[arrlen-1-i]=temp;
			}
			System.out.println();
			System.out.println("反转后数组:");
		showArr(arr);
	}
	/*
	 * 显示数组所有元素
	 */
	   public void showArr(int[] arr) {
		   for(int i:arr) {
			   System.out.print("  "+i);
		   }
	   }
}


/*输出结果:
原来数组:
  1  2  3  4  5  6  7
反转后数组:
  7  6  5  4  3  2  1

*/

你可能感兴趣的:(JavaSE,java,开发语言,后端)