java基础(数组) 二

本文详细介绍了Java数组的静态与动态初始化,包括数组的访问、元素默认值。接着讨论了数组的遍历,如快速遍历,并通过案例展示了数组元素求和、求最值等操作。此外,还讲解了冒泡排序算法的基本思想和实现步骤。
摘要由CSDN通过智能技术生成

数组

⚫ 数组就是用来存储一批同种类型数据的内存区域(可以理解成容器)
结论:数组适合做一批同种类型数据的存储。

静态初始化数组

⚫ 定义数组的时候直接给数组赋值。

// 完整格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2 ,元素3… };
double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
int[] ages = new int[]{12, 24, 36}

// 简化格式
数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };
int[] ages = {12, 24, 36};
在这里插入图片描述

  1. 数组的静态初始化的写法是和特点什么样的?
    数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };
    int[] ages = {12, 24, 36, 48, 60};
    double[] scores = {89.9, 99.5, 59.5};
    // 完整格式
    数据类型[] 数组名 = new 数据类型[]{ 元素1,元素2 ,元素3… };
    int[] ages = new int[]{12, 24, 36, 48, 60};
  2. 数组是属于什么类型,数组变量名中存储的是什么?
    ⚫ 引用数据类型,存储的数组在内存中的地址信息。

数组的访问

在这里插入图片描述

  1. 如何访问数组的元素?
    数组名称[索引]

  2. 如何访问数组的长度?
    数组名称.length

  3. 数组的最大索引怎么获取?
    数组名. length – 1 // 前提:元素个数大于0
    在这里插入图片描述

动态初始化数组

在这里插入图片描述在这里插入图片描述

  1. 动态初始化的写法是什么样的?
    数据类型[] 数组名 = new 数据类型[长度];
    int[] ages = new int[4];

  2. 两种数组定义时的特点和场景有什么区别
    ⚫ 当前已经知道存入的元素值,用静态初始化。
    ⚫ 当前还不清楚要存入哪些数据,用动态初始化。

动态初始化数组的元素默认值

在这里插入图片描述
两种初始化的的使用场景总结、注意事项说明:
⚫ 动态初始化:只指定数组长度,后期赋值,适合开始知道数据的数量,但是不确定具体元素值的业务场景。
⚫ 静态初始化:开始就存入元素值,适合一开始就能确定元素值的业务场景。
⚫ 两种格式的写法是独立的,不可以混用。
在这里插入图片描述

  1. 动态初始化数组后元素的默认值是什么样的?
    ⚫ byte、short、int 、char、long类型数组元素的默认值都是0
    ⚫ float、double类型数组元素的默认值都是0.0
    ⚫ boolean类型数组元素的默认值是false、String类型数组元素的默认值是null

数组的遍历

⚫ 遍历:就是一个一个数据的访问。
⚫ 为什么要遍历? 搜索、数据统计等等都需要用到遍历。
在这里插入图片描述

快速遍历

//快速遍历用String展示
	public static void main(String[]args){
	int [] arr= {10,20,30,40};
	String result = java.util.Arrays.toString(arr);
	System.out.println(result);
	}

案例

数组元素求和

在这里插入图片描述

数组求最值
  1. 数组元素求最大值如何实现的?
    ① 数据拿到程序中去,用数组装起来。
    ② 定义一个变量用于记录最大值,这个变量建议默认存储第一个元素值作为参照。
    ③ 遍历数组的元素,如果该元素大于变量存储的元素,则替换变量存储的值为该元素。
    ④ 循环结束后输出最大值变量即可。
    在这里插入图片描述
猜数字游戏

猜数字游戏
需求
开发一个幸运小游戏,游戏规则如下:
游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:
➢ 未猜中提示:“未命中”,并继续猜测
➢ 猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的位置,且输出全部5个数据, 最 终结束本游戏。
分析
① 随机生成5个1-20之间的数据存储起来 —> 使用数组
② 定义一个死循环,输入数据猜测,遍历数组,判断数据是否在数组中,如果在,进行对应提示并结束死
循环;如果没有猜中,提示继续猜测直到猜中为止。

1. 猜数字游戏的实现步骤?
① 动态初始化数组,存入5个随机的1-20之间的数据
② 定义一个死循环,不断的猜数据,遍历数组,判断数据是否在数组中,如果在,进行
对应提示并结束死循环;如果没有猜中,提示继续。

在这里插入图片描述在这里插入图片描述

随机排名
  1. 如何实现随机排名的?
    ① 定义一个动态初始化的数组用于录入数据。
    ② 遍历数组中的每个元素,每次随机一个索引值,让当前元素与该索引位置处的元素进行交换。
    ③ 遍历输出数组中的内容即可。
    在这里插入图片描述

数组排序

冒泡排序

⚫ 每次从数组中找出最大值放在数组的后面去
实现冒泡排序的关键步骤分析
⚫ 确定总共需要做几轮: 数组的长度-1.
⚫ 每轮比较几次:
在这里插入图片描述⚫ 当前位置大于后一个位置则交换数据
在这里插入图片描述

  1. 冒泡排序的思想
    ⚫ 从头开始两两比较,把较大的元素与较小的元素进行交换
    ⚫ 每轮把当前最大的一个元素存入到数组当前的末尾。
  2. 冒泡排序的实现步骤。
    ⚫ 定义一个外部循环控制总共需要冒几轮(数组的长度-1) ⚫ 定义一个内部循环,控制每轮依次往后比较几个位置(数组长度-i-1)。
    ⚫ 如果当前位置的元素值>后一个位置的元素值,两者交换。
public static void bubbleSort(int arr[]) {
for(int i =0 ; i< arr.length-1 ; i++) {
for(int j=0 ; j < arr.length-1-i ; j++) 
{ if(arr[j]>arr[j+1]) 
{ int temp = arr[j]; 
arr[j]=arr[j+1]; 
arr[j+1]=temp; } } } }

在这里插入图片描述

数组内存图

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值