初学Java---数组的声明、创建、赋值和遍历


第五单元 如何使用数组


一、动手任务

1.数组声明-创建-赋值-遍历
(1).数组声明
  • 数组声明的时候不能指定大小。
  • 示例如下:
        int score[];
        //推荐写以下的方法
		int [] salary;
	    //int score [4]; 错误
(2).数组创建
  • 数组在使用new创建的时候才可以指定数组的大小;数组元素有默认值,规则和类型属性一致。
  • 示例如下:
   int[] score = new int[5];
(3).数组赋值:有数组,等号左侧一定是空的
  • (1).静态初始化
  • 示例如下:
        int[] len = {2,3,45,56};
		int[] ken = new int[] {0,1,2,3,5};
		score[0] = 20;//一个各赋值
  • (2).动态初始化

  • 示例如下:

         for(int i = 0;i < score.length;i++) {
			score[i] =  i * 10;
		} 
  • 若数组已经声明或创建,用动态赋值,或者一个个赋值
(4).数组遍历
  • Java中数组不可以越界取值。
  • for循环示例如下:
	     //for循环取值
		for(int i = 0;i < score.length;i++) {
			System.out.println("score[" + i + "] = " + score[i]);
		}
  • for-each循环示例如下:
		
		//for-each循环  JDK1.5之后的新特性
		for(int x:score) {
			System.out.println(x);
		}
2.引用类型数组
  • 示例如下:
public class StudentArray {
	public static void main(String[] args) {
		Student[] stu = new Student[3];
		stu[0] = new Student("zs", 19);
		stu[1] = new Student("ls", 20);
		
		Student[] tyuststu = {new Student("zs", 19),new Student("ls", 20),new Student("ww", 21)};
		Student[] titstu = new Student[] {new Student("zs", 19),new Student("ls", 20),new Student("ww", 21)};
		
		for (int i = 0; i < titstu.length; i++) {
			System.out.println(titstu[i].name);
		}
 	}
}

class Student {
	String name;
	int age;
	
	public Student(String name,int age) {
		this.name = name;
		this.age = age;
	}
}
3.数组相关程序练习题:
  • (1).创建数组包含5位学生的Java课程成绩

  • (2).老师输入5位学生的Java课成绩保存到数组并输出

  • (3).对5位学生的成绩从小到大排序(使用冒泡排序)

  • (4).对5位学生的成绩从小到大排序(使用Java API)

  • (5).创建包含3位学生数组,并输出3位学生的信息

  • (6).创建一个int型二维数组并遍历

二、准确口述

  • 1.一个数组中能否存放不同类型的数据?

    • 答:不能。
  • 2.数组元素默认值规则?

    • 答:与类属性默认值规则一样
  • 3.数组能否越界取值?

    • 答:Java中数组不可以越界取值。
  • 4.一维数组在定义时能否指定长度?

    • 答:定义时不能指定长度,只有创建时才可以指定长度。
5.一维简单类型数组在内存中是如何存放的?
6.一维引用类型数组在内存中是如何存放的?
  • 以上两个问题等过后再解决。

  • 7.二维数组第1维的大小可以不指定吗?第2维呢?

    • (1)二维数组的第一维的大小必须指定,第二维可以不指定。
    • (2)二位数组遍历需要使用双重for循环。
    • (3)Java中的二维数组是通过一维数组叠加形成的。
  • 8.冒泡排序示例(从小到大) 示例如下:

         int temp = 0;
		for(int i = 0;i < before.length - 1;i++) {
			for(int j = 0;j < before.length - i - 1 ;j++) {
				if(before[j] < before[j + 1]) {
					temp = before[j];
					before[j] = before[j + 1];
					before[j + 1] = temp;
				}
			}
		}
  • 9.Arrays.sort():Java中自带的排序方法
    • (1).Java中的自带排序方法Arrays.sort() 从小到大。
    • (2).Arrays叫做数组实用类
    • (3).Java中的sort用的是哪种排序方法:DualPivotQuicksort 快速排序;与一般的快速排序不同。
    • 示例如下:
Arrays.sort(score);
for (int i = 0; i < score.length; i++) {
	System.out.println(score[i]);
}
  • 10.以下两个方案哪个更好?
    • 示例如下:
	A方案
	for(执行5次) {
        for(执行3次) {
            A方案
        }
	}
	B方案
	for(执行3次) {
        for(执行5次) {
            A方案
        }
	}
  • 答:B方案更好,内外层切换比较费时,B方案的切换次数较少,效率更高。

三、课后任务

  • 1.将5位学生的Java成绩由大到小排序
public class Scoresort {
	/**
	 * 由大到小排序
	 * @param score 原始数组
	 * @return 排序后的数组
	 */
	public int[] sort(int []score) {
		int temp = 0;
		for (int i = 0; i < score.length; i++) {
			for (int j = 0; j < score.length - i - 1; j++) {
				if (score[j] < score[j + 1]) {
					temp = score[j];
					score[j] = score[j + 1];
					score[j + 1] = temp;
				}
			}
		}
		return score;
	}
	public static void main(String[] args) {
		Scoresort ss = new Scoresort();
		int score [] = {60,90,75,80,65};
		int[] result = ss.sort(score);
		for (int i = 0; i < result.length; i++) {
			System.out.println(score[i]);
		}
	}
}
  • 2.输出5位学生Java课程的平均分
public class Averagearray {
	public static void main(String[] args) {
		int[] score = {60,90,80,75,65};
		int sum = 0;
		for (int i = 0; i < score.length; i++) {
			sum += score[i];
		}
		double average = sum * 1.0 / score.length;
		System.out.println(average);
	}
}
  • 3.输出成绩数组中80出现的总次数和索引
public class Count {
	public static void main(String[] args) {
		int[] score = {80,20,60,80,50,80,70,80};
		int count = 0;
		for (int i = 0; i < score.length; i++) {
			if (score[i] == 80) {
				count++;
				System.out.println("80的索引是:"+ "score[" + i + "]");
				
			}
		}
		System.out.println("80总共出现的次数是:"+ count + "次");
	}
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕兮IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值