黑马程序员————数组(day4)

----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

 

 

 

数组

数组的定义

概念:同一种类型数据的集合。其实数组就是一个容器。

数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1:   元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

          示例:    int[] arr =  new int[5];

格式2:    元素类型[] 数组名 = new 元素类型[]{元素,元素,......};

         示例:    int[] arr = new int[]{1,2,3.4};

              int[] arr = {1,2,3,4};

 

 

编译时报错:

ArrayIndexOutOfBoundsException 3: 运行时出现这个异常,表示操作数组时,访问                                        到了数组中不存在的角标。

NullPornterException: (空指针异常)当引用没有任何指向值为null的情况,该引              用还在用于操作实体。

 

数组的操作:

获取数组中的元素,通常会用到遍历。

数组中有一个属性可以直接获取到数组元素个数  .length

使用方法:数组名称.length

 

 

上图就是遍历该数组中的元素并且按格式打印

 

取最值:

获取数组中的最大值.

思路:

   1.获取最值需要进行比较,每一次比较都会有一个较大的值,因为该值不确定。

     通过一个变量进行临储。

   2.让数组中的没一个元素都和这个变量中的值进行比较。

     如果大于了变量中的值,就用该变量记录较大值。

   3.当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。   

步骤:

   1.定义变量,初始化为数组中任意一个元素即可。

   2.通过循环语句对数组进行遍历。

   3.在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给        该遍历。

     

   需要定义一个功能来完成,以便提高复用性。

   1.明确结果,数组中的最大元素 int.

   2.未知内容:一个数组.int[]

代码如下:

数组排序:

 

/*
	对给定数组进排序:{2,3,5,1,6,8,4,7,9}
*/
public class Sort {
	public static void selectSort(int[] arr){
		for(int x = 0; x<arr.length-1; x++){
			for(int y = x+1; y<arr.length; y++){
				if(arr[x]>arr[y]){
					/*
					 	以下进行换位,定义一个第三方变量temp
					
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
					*/
					swap(arr, x, y);
				}
			}
		}
		/*
			以上为选择排序
			内循环结束一次,最值出现在头角标的位置
		*/
	}
	
	public static void bubblingSort(int[] arr){
		for(int x = 0; x<arr.length-1; x++){
			for(int y = 0; y<arr.length-x-1; y++){    //-x:让每一次比较的元素减少。  -1:避免角标越界。
				if(arr[y]>arr[y+1]){
					/*
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
					*/
					swap(arr, y, y+1);
				}
			}
		}
		/*
			以上为冒泡排序:相邻的两个元素进行比较,如果符合条件进行换位
						 第一圈,最值出现在最后位。
		*/
	}
	
	public static void bianLi(int[] arr){
		System.out.print("[");
		for(int x = 0; x<arr.length; x++){
			if(x!=arr.length-1)
				System.out.print(arr[x] + ",");
			else
				System.out.println(arr[x] + "]");
		}
	}
	
	/*
		无论什么排序,都需要对满足条件的元素进行位置互换,
		所以可以把这部分相同的代码提取出来,单独封装成一个函数。
	*/
	public static void swap(int[] arr, int a, int b){
		int temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}
	
	public static void main(String[] args){
		int[] arr = {2,3,5,1,6,8,4,7,9};
		bianLi(arr);
		bubblingSort(arr);
		bianLi(arr);
		
		//Arrays.sort(arr); Java中已经定义好的一种排序方式。开发中,对数组排序,要使用该语句代码。(需要导入java.util.*)
	}

}


 

二维数组

格式1: int[][] arr = new int[2][3];

        定义了名称为arr的二维数组

      二维数组中有3个以为数组

      每一个一维数组中有2个元素

      一维数组的名称分别为arr[0], arr[1], arr[2]

      给第二个一维数组2脚标位赋值为78写法是:arr[1][2] = 78;

图中栈内存有arr,有个内存地址指向堆内存二维数组的内存地址

堆内存中有个二维数组里装了两个一维数组数组arr[0]和arr[1]

如果要想给第二个一维数组的二脚标赋值78那就可以写成:arr[1][2] = 78

 

 

格式2: int[][] arr = new int[3][];

      二维数组中有3个一维数组

      每一个一维数组都是默认初始化值null

      可以对这个三个一维数组分别进行初始化

      arr[0] = new int[3];

      arr[1] = new int[1];

      arr[2] = new int[2];

格式3: int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

例:     比如一个公司有3个销售组,想获取这个公司的总销售额

代码如下:

 

 

----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

详情请查看:http://edu.csdn.net


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值