6Java数组

Java数组

数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。▪数组一旦初始化,长度不可变。长度确定下来了!!!
一维数组的声明方式:类型数组名[] 或类型[] 数组名;例如:inta[];int[]a1;doubleb[];Date[]c;//对象数组▪单独声明数组时不能指定其长度(数组中元素的数),例如:inta[5]; //非法▪这两种定义做完了,数组中是没有元素值的。
初始化
Java中的数组必须先初始化,然后才能使用所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值Java中可以使用关键字new创建数组对象,完成静态初始化或动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值格式:数据类型[] 数组名= new 数据类型[数组长度];数组长度其实就是数组中元素的个数举例:int[] arr= newint[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长
格式:数据类型[] 数组名= new 数据类型[]{元素1,元素2,…};举例:int[] arr= new int[]{1,2,3};
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
其实这种写法还有一个简化的写法:int[] arr= {1,2,3};在这里插入图片描述

输出数组中元素的值
定义并用运算符new为之分配空间后,才可以引用数组中的某个元素;
每个数组都有一个属性length 指明它的长度,例如:a.length指明数组a 的长度(元素个数)
数组名和编号的配合就可以获取数组中的指定编号的元素。这个编号的专业叫法:索引(下标)。
数组元素的引用方式:数组名[数组元素下标]
数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i]
数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 至n-1
内存结构

动态初始化数组时,由系统给出初始值,初始值为0。
看下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意

int[] a = new int[]; new的时候就要分配内存,不指定就不知道分配多少

数组一旦初始化,长度不可变。长度确定下来了!!!

int[] a ={1,2,3};也可以

int[] a

a={1,2,3};错误
数组常见问题
数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生
空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时
多维数组
在这里插入图片描述
在这里插入图片描述
数组排序
冒泡排序的基本思路:假设要被排序的数组arr[0…n-1]是垂直放置的,我们将其中的每个元素都看成重量为arr[i]的气泡。那么,根据常识,我们知道重量轻的气泡会向上冒。所以我们制定轻气泡不能在重气泡下的原则。现在,我们从下向上扫描数组arr[n]中的每个元素,凡是发现违反本原则的轻气泡,就使其向上“冒”,反复的执行这个过程,直到所有元素都满足该原则。
冒泡算法原理
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
在这里插入图片描述
在这里插入图片描述
选择排序
算法描述:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止。
在这里插入图片描述
练习
1.求出学生成绩的总分、平均分、最高分、最低分

package com.hpe.java;

public class Demo04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//求学生成绩的总分。平均分,最高分,最低分
		int[] score =new int[]{90,80,10,23,78,99};
		
		//总分
		int sum = 0;
		for(int i=0;i<score.length;i++){
			sum+=score[i];
		}
		  System.out.println("总分:"+sum);
		  //平均分
		  double avg=sum/score.length;
		  System.out.println("平均分:"+avg);
		  //最高分
		int max=score[0];
		for(int i=0;i<score.length;i++){
			if(max<score[i]){
				max=score[i];
			}
		}
		System.out.println("最高分:"+max);
		  //最低分
		int min=score[0];
		for(int i=0;i<score.length;i++){
			if(min>score[i]){
				min=score[i];
			}
		}
		System.out.println("最低分:"+min);
	}
	
	}

2.{“C语言“,”C++“,”C#“,”Java“,”Python“}; 逆序输出

package com.hpe.java;

public class Demo041 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// {“C语言“,”C++“,”C#“,”Java“,”Python“}; 逆序输出。
		String[] strs=new String[]{"C语言","C++","C#","Java","Python"};
        for(int i=0;i<strs.length/2;i++){
        	String str=strs[i];
        	strs[i]=strs[strs.length-i-1];
        	strs[strs.length-i-1]=str;
        	
        }
        for(String str:strs){
        	System.out.println(str);
        	
        }
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值