java数组

数组

问题1:为什么要用数组?

		   答:如果要存放一个学生的姓名,我们可以定义一个String类型的变量进行存储
		String name;

  问题:如果我们要存储1000个学生的姓名,难道我们还需要定义1000个变量进行存储?这样操作显示不合适

 @@@ 要解决这个问题,我们只需要定义一个数组即可存储多个数据信息

问题2:什么是数组?

答:数组是内存中一段连接的存储空间。定义一个数组,可以向数组中存放多个相同类型的数据
@@@:关键点:
	1、数组是内存中的一段连接的存储空间
	2、它所存的数据,必须是同一种数据类型
	3、数组的大小,一开始确定以后,就不能再改变 

@@@@: 我们只需要定义一个数组,就可以保存N个相同类型的数据

问题3:如何访问数组中的数据

	答:数组是内存中一段连续存储空间,数组中的每一个位置都有一个编号,这个编号称为:数组下标
	
	@@数组下标的特点:
		
		1、数组下标一定是从0开始
		2、数组下标必须要连续
	

操作数组,不论是存或者取,都要通过数组下标来操作

问题4:定义数组的语法(所有数据类型,都可以定义数组,此处,我们以int为例)

语法1:
	数据类型[]  数组名称 = new 数据类型[数组的大小];

例如:      int[]   arrs = new int[4];

说明:此代码表示:
	1、定义了一个int类型的数组,只能存放int类型的数据
	2、数组大小为4,内存中只会分配4个连续的存储空间,可以存放4个int类型的数据
	请问:这个空间的下标,分别是多少?     
	答  :  0  1   2  3
	@@@@@@@@@:操作数组的数据,必须通过下标访问,下标一定是从0开始

数组的定义:

它是内存中一段连续的存储空间,用于存储一组相同类型的数据

数组的特点:

1、它在内存中的存储空间是连续的
2、它存放的数据必须是同一种类型
3、要操作数组中的数据,必须通过下标操作,下标是从0开始,一定要连续
4、数组的长度一旦确定,就不允许再改变 

创建数组的语法:

@@@@:每一种数据类型都可以创建数组,此处,我们以int类型为例

第一种: 先创建数组,再通过下标给数组赋值

        int[]   arrs = new int[3];
		int arrs1[]=new int[10];
		int []arrs2=new int[10];
		//这三种定义方法都是正确的,但我们通常一般使用的是第一种

		arrs[0]=111;
		arrs[1]=222;
		arrs[2]=333;
	此代表,表示:创建了一个int类型的数组,只能存放int类型的数据,最多只能存放3个数据
	这个3个数据,对应的下标依次是: 0,1,2
	
	这种写法,也可以替换成:
int   arrs[] = new int[3];

第二种: 创建数组时,直接给数组赋值

int[]  arrs =new int[]{
     111,222,333};

		//以上写法,可以进行简化

		int[]  arrs = {
     111,222,333};

注意:

如果数组的长度为N,最大下标是:N-1

例子

//定义一个String 类型的长度为3的数组
String[] arrs = new String[3];
			arrs[0]="AAA";//在下边为0的数组中存"AAA"
			arrs[1]="BBB";//在下边为1的数组中存"BBB"
			arrs[2]="CCC";//在下边为2的数组中存"CCC"
		//循环打印输出数组里面的内容
			for(int i=0;i<3;i++){
     
				System.out.println(arrs[i]);
			}

上面代码中 [3] :中括号里面的3指的是数组长度

		ps:     在数组中,有一个属性,可以直接获得数组长度 
	
                 数组名称.length--------------获得数组的长度 

@@@@@@如果声明了数组,没有给数组中存储数据,数组将自动产生默认值

int数组的数据,默认值是0

String数组的数据,默认值是null

double数组的数据,默认值是0.0

boolean数组的数据,默认值是false

数组排序

@@@@假设,数组中存储多个值,现在要找出数组中的最大值或最小值

数组的排序:

   数据从小到大排列,这种排序方式,我们称为:升序排序 
   例如:  1   2    3    4   5


   数据从大到小排列,这种排序方式,我们称为:降序排序 
   例如:  5   4   3  2   1

问:随机生成10个学生的成绩,请找出最高分,最低分,平均分,总分

//随机生成10个学生的成绩,请找出最高分,最低分,平均分,总分
		int[] arrs =new int[10];//定义一个可以存10个数的数组
		double sum=0;//定义一个变量存放总数
		for(int i=0;i<arrs.length;i++) {
     //arrs.length 是数组的长度
			arrs[i]=(int)Math.round(Math.random()*100);//Math.round 的意思是四舍五入
			//Math.random  的意思是随机生成一个0-1的数
			System.out.print(arrs[i]+" ");
			sum +=arrs[i];//把每一个随机生成的数加到定义的总数中去
		}
		System.out.println();//换行
		int max=0;//定义一个数,存放最大数
		int mix=arrs[0];//假设第一个数是最小数
		for(int j=0;j<arrs.length;j++) {
     
			if(max<arrs[j]) {
     //和数组中的每一个数进行比较
				max=arrs[j];
			}
			if(mix>arrs[j]) {
     
				mix=arrs[j];
			}
		}
		System.out.println("最高分是:"+max);
		System.out.println("最低分是:"+mix);
		System.out.println("总分是:"+sum);
		System.out.println("平均分是:"+sum/arrs.length);

冒泡排序

在java的实例应用中,需要对数组中的数据进行排序,最常用、且最简单的排序的方式是: 冒泡排序

冒泡排序的关键思路:
	
	相邻的两个数,进行比较。较大数,向后放,较小的数向前放

	在java中,两个数要进行交换,必须定义一个临时变量,用于保存数据

目前,已经将顺序出来,但它还不是真正意义的冒泡排序

冒泡排序的公式是:

for(int i=0;i<数组长度-1;i++){
     

	for(int j=0;j<数组长度-1-i;j++){
     
	
	
	}
}

数组中,如果有N个数

外层循环数次: < n-1

内层循环次数: < n-1-i

在开发中,我们有一个系统提供的排序方式

Arrays.sort(arrs);//系统提供的排序方式  arrs是数组的名称

用这个方式,会自动从小到大排序

数组排序:最常用的排序方式有:

1、冒泡排序
	相邻的两个数,进行比较,大的向后,小的向前

2、选择排序
	当前值,分别与后面的每一个值,进行比较,小的向前放,大的向后放

之前的选择排序或者是冒泡排序都是练习算法

java中提供了一个数组类Arrays,它对排序的方法进行了封装,操作起来更加方便

Arrays.sort(数组); ---------它可以自动对数组排序
	
	这种排序方式,默认是采用升用排序,从小到大 

问题:之前我们的排序都是对int类型的数据,进行排序.String类型的数据是否可以排序?

答:字符串,可以排序。它的排序方式是根据ascii码的顺序进行排序

A---65
B---66
Z---90

a---97
b---98
z---122

问题:汉字是否可以排序?

答:汉字也是可以排序的,每一个汉字,将会转换成ascii码

之前,我们对for循环的使用,主要是通过下标循环遍历

java还提供了一种for循环的用法:

@@@@@@@@这种用法还有另一个名称: foreach

for循环的增强----------------------------这种用法,主要是对数组遍历时,比较方便

用法如下:

	for(数据类型  变量名称 :数组的名称){
	
	}

	@@@@@@@@@:如果要使用for循环增强的用法,需要jdk的版本,至少要1.5或者1.5以上

刚才,我们一直使用的是一维数组,java中还有二维数组、三维数组。。。。。。

此处,以int类型为例:

int[]  arrs = new int[3]; ---------一维数组

int[][]  arrs = new int[2][3];------二维数组

int[][][]  arrs = new int[2][3][3];------三维数组

问题:什么是二维数组?

答:存放一维数组的数组,就称为:二维数组

问题:什么是三维数组?

答:存放二维数组的数组就是三维数组

例如:

int[][]  arrs = new int[2][3];

2--------------代表:当前二维数组中,可以存放2个一维数组

3--------------代表:每一个一维数组中,可以存放3个int类型的数据

用法1:先声明,再赋值

	int[][] arrs = new int[2][3];
	
	arrs[0][0]=111;//将111存放 到第1个一维数组中的第1个位置
	arrs[0][1]=222;//将222存放 到第1个一维数组中的第2个位置
	arrs[0][2]=333;//将333存放 到第1个一维数组中的第3个位置

	arrs[1][0]=444;//将444存放 到第2个一维数组中的第1个位置
	arrs[1][1]=555;//将555存放 到第2个一维数组中的第2个位置
	arrs[1][2]=666;//将666存放 到第2个一维数组中的第3个位置

用法2:声明二维数组,直接赋值:

int[][] arrs = { { 1, 2, 3 }, { 4, 5, 6 } };

你可能感兴趣的:(笔记,JAVA学习,java)