数组的定义和练习

  一.数组的概述  
    1.  数组的理解,数据(Array) 是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,
    并通过编号的形式对这些数据进行统一管理。
    2.数组相关概念
      1).数组名
      2).元素
      3).角标,下标,索引
      4).数组的长度,元素的个数
    
    3.  数组的特点
     1) 数组是有序排列的
     2) 数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
     3) 创建数组对象会在内存中开辟一整块的连续空间
     4) 数组的长度一旦确定,就不能更改。

    4.  数组的分类
     1) 按照维数 一维数组 二维数组 二维也是嵌套数组多维同理
     2) 按照数组元素的类型,基本数据类型元素的数组,引用数据类型元素的数组
     
    5. 一维的数组的使用
        1》一维数组的声明和初始化
        2》如何调用数组指定位置的元素
        3》如何获取数组的长度
        4》如何遍历数组
        5》数组元素的默认初始值
        6》数组的内存解析
    

定义的数组名处于栈中,new出来的数组处于堆中

public static void main(String[] args) {		
		
		// 1》一维数组的声明和初始化
		int num;//声明
		num = 10; // 初始化
		int id = 1 ; // 声明+初始化
		
		int[] ids; // 声明
		// 静态初始化: 数组的初始化和赋值操作同时进行
		ids = new int[]{1001,1002,1003,1004};
		// 动态初始化: 数组的初始化和赋值操作分开进行 创建一个长度为5的数组不指定数据
		String[] names = new String[5];
		
		// 2 如何调用数组指定位置的元素,通过角标的方式调用
		// 数组的角标是从0开始,到数组的长度-1结束
		names[0] ="a";
		names[1] ="b";
		names[2] ="c";
		names[3] ="d";
		names[4] ="e";
		
		//3 获取数组的长度
		System.out.println(ids.length);
		System.out.println(names.length);
		
		//4. 遍历数组元素
		for (int i = 0; i < names.length; i++) {
			System.out.println("int"+i);
		}

		short[] name = new short[5];
		for (int i = 0; i < name.length; i++) {
			System.out.println("short"+name[i]);
		}
		
		char[] name1 = new char[5];
		for (int i = 0; i < name1.length; i++) {
			System.out.println("char"+name1[i]);
		}
		
		float[] name2 = new float[5];
		for (int i = 0; i < name2.length; i++) {
			System.out.println("float"+name2[i]);
		}
		
		double[] name3 = new double[5];
		for (int i = 0; i < name3.length; i++) {
			System.out.println("double"+name3[i]);
		}
		
		
// 二维数组 也就是嵌套数组
	
	// 类型推断
		int[] a = new int[]{1,2,3};
		int[] b = {1,2,3};
	//1、 二维数组初始化
		// 第一层三个元素 第二层4个元素
		// 静态初始化创建
		int [][] c = new int[][] {{1,2,3,4},{1,9,3,4},{1,2,3,5}};
		// 动态初始化创建
		int [][] d = new int[3][];
		
	//2、二维数组调用
		//调用数组指定元素 调用9
		System.out.println(c[1][1]);
		
		// 给数组d 第二个元素赋值 长度为4
		d[1] = new int[4];
		System.out.println(d[1]);
	
	//3、 获取长度
		System.out.println(d.length);
		// 0么有值,空指针
		System.out.println(d[1].length);
	
	//4、 遍历
		// 双层循环
	}	

小练习

  1.数组遍历和反转


	
	public static void main(String[] args) {
		
		String[] str = new String[] {"aa","bb","cc","dd","ee","ff","gg"};
		// str 的复制
		String[] str1 = new String[str.length];
		for (int i = 0; i < str.length; i++) {
			str1[i] = str[i];
			System.out.println(str1[i]);
		}
		
		// 反转
		String[] str2 = str1;
		String center = str2[0];
		System.out.println("\n center \t"+center);
		for (int i = 0; i < str2.length/2; i++) {
			center = str[(str2.length-1) -i];
			str2[(str2.length-1) -i] = str[i];
			str2[i] =  center;
		}
		for (int i = 0; i < str2.length; i++) {
			System.out.println(str2[i]);
		}
	}


	

  2.生成长度为6的数组,元素内容随机为1-10不重复的数组   并求和 平均值,最大 最小



	public static void main(String[] args) {
		int[] nums = new int[6];
		// 创建一个长度为6  内容为 1-10且不重复的数组
		for (int i = 0; i < 6; i++) {
			nums[i] = (int) ((Math.random() * 10) + 1);
			for (int j = 0; j < i; j++) {
				if (nums[i] == nums[j]) {
					i--;
					break;
				}
			}
		}
		for (int i = 0; i < nums.length; i++) {
			System.out.println(nums[i]);
		}
		
		// 基本运算
		int random1 = (int)(Math.random() *10 +1);
		System.out.println("随机数random1为:"+random1);
		int[] array = new int[random1];
		for (int i = 0; i < array.length; i++) {
			array[i] = (int)(Math.random() *10);
			System.out.println(array[i]);
		}
		
		// 最大值
		int maxvalue = array[0];
		for (int i = 0; i < array.length; i++) {
			if(maxvalue < array[i]) {
				maxvalue = array[i];
			}
		}
		System.out.println("maxvalue:"+maxvalue);
		// 最小值
		int minvalue = array[0];
		for (int i = 0; i < array.length; i++) {
			if(minvalue > array[i]) {
				minvalue = array[i];
			}
		}
		System.out.println("minvalue:"+minvalue);
		
		// 求和
		int sum = array[0];
		for (int i = 0; i < array.length; i++) {
			sum+= array[i];
		}
		System.out.println("sum:"+sum);
		// 平均值
		System.out.println(sum/array.length);

	}

  3.随机生成n个学生的成绩,并判断等级(ABCD)



	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入学生人数");
		int nums = scan.nextInt();
		int[] stu = new int[nums];
		System.out.println("请输入" + nums + "名学生成绩");
		for (int i = 0; i <= nums - 1; i++) {
			System.out.println("请输入第" + (i + 1) + "名学生成绩");
			stu[i] = scan.nextInt();
		}
		int garde = 0;
		for (int i = 0; i < stu.length - 1; i++) {
			if (garde <= stu[i]) {
				garde = stu[i];
			}
		}
		System.out.println("最高成绩为" + garde);
		for (int i = 0; i < stu.length; i++) {
			if (garde - stu[i] <= 10) {
				System.out.println("第" + (i + 1) + "位的学生成绩为" + stu[i] + "得分为:A");
			} else if (garde - stu[i] <= 10) {
				System.out.println("第" + (i + 1) + "位的学生成绩为" + stu[i] + "得分为:B");
			} else if (stu[i] >= garde - 30) {
				System.out.println("第" + (i + 1) + "位的学生成绩为" + stu[i] + "得分为:C");
			} else {
				System.out.println("第" + (i + 1) + "位的学生成绩为" + stu[i] + "得分为:D");
			}
		}

	}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值