Java中数组的学习与使用

数组是什么?

数组可以理解为存放相同数据类型的内存区域(可以理解为容器)。

举例:

如果班级里进行随机点名但是没有使用数组会出现什么情况?

String name1 = "张三";

String name2 = "李飞";                                                  

String name3 = "小二";

String name4 = "王五";

String name5 = "李四";

......                                                  

代码冗余量大,特别繁琐,业务功能实现繁琐。

使用数组完成:

String [] names = { 张誉 , 刘疏桐 , 田启峰 张学颖 , 李沁霖 , 陈侃 ,};

数组的定义

  数组分为静态化数组和动态化数组

{

静态化数组格式:

              // 完整格式
              数据类型 [] 数组名 = new 数据类型 []{ 元素 1 ,元素 2 ,元素 3… };
              // 简化格式
              数据类型 [] 数组名 = { 元素 1 ,元素 2 ,元素 3 … }; 、
动态化数组格式:
            数据类型[] 数组名= new 数据类型[长度] ( 定义数组的时候 只确定元素的类型和数组的长度,之后再存入具体数据
            
int[] arr = new int[3];
// 后赋值
arr[0] = 10;
System.out.println(arr[0]); // 10

思考?

什么时候使用静态数组什么时候使用动态数组:当数据元素确定时使用静态数组,当不确定时使用动态数组。

两种格式的写法是独立的,不可以混用。

}

数组的访问

数组名[索引]

int[] arr = {12,343,53,65};
// 取值
System.out.println(arr[0]); // 12
// 赋值
arr[2] = 100;
System.out.println(arr[2]); // 53
// 获取数组的长度(就是数组元素的个数)
System.out.println(arr.length); // 4

数组的注意事项:

①数据类型[] 数组名   完全等价于  数据类型 数组名[]

什么类型的数组存放什么类型的数据,否则报错

数组一旦定义出来,程序执行的过程中,长度、类型就固定了。

元素默认规则
 

数组的遍历

数组的遍历就是一个一个的访问数据

int[] ages = {20, 30, 40, 50};
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}

 来一些经典案例吧!

❶数组元素求和

public class TestDemo1 {
    public static void main(String[] args) {
        //目标:学会使用数组元素求和
        //1定义一个静态数组
        int[] money = {10,222,45,64};
        //             0   1   2  3
        //2对这个数组进行遍历
        //3定义一个求和变量sum
        int sum = 0;
        for (int i = 0; i < money.length ; i++) {
            sum += money[i];
        }
        System.out.println("数组的和为"+sum);
    }

}

开发一个幸运小游戏,游戏规则如下: 游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字

package TestDemo;

import java.util.Random;
import java.util.Scanner;

public class TestDemo2 {
    public static void main(String[] args) {
        //随机生成一个1-20的数据存到数组中进行猜测,若猜中返回第一次猜中数据在数组中的位置
        //1生成一个动态数组
        int[] date = new int[5];
        //2随机生成5个数并存入到数组中去
        Random r = new Random();
        for (int i = 0; i < date.length ; i++) {
            date[i] = r.nextInt(1,20);
        }
        //3使用一个死循环进行猜测
        Scanner sc = new Scanner(System.in);  //进行扫描,从键盘输入数
        Out:
        while (true){
            System.out.println("请输入1-20之间的数进行猜测");
            int guessdate = sc.nextInt();
           //对数组进行遍历
            for (int i = 0; i < date.length; i++) {
                  if (guessdate == date[i]){
                      System.out.println("您猜中了,首次出现的地方为" + i);
                      break Out;//结束整个循环
                  }
            }
            System.out.println("您当前的猜测不在数组中请重新猜测");
        }
        //4输出整个数组是用户自行判断猜测是否正确
        for (int i = 0; i < date.length; i++) {
            System.out.print(date[i] +"\t");
        }
    }
}

❸随机排名

package TestDemo;

import java.util.Random;
import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        //录入一组员工工号,随机进行输出22
        //1定义一个动态数组
        int[] gonghao = new int[5];
        //2利用循环输入一组员工的工号
        //需要一个扫描器
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < gonghao.length ; i++) {
            System.out.println("您输入的工号是第" + (i+1) +"个员工的工号");
            int hao = sc.nextInt();
            gonghao[i] = hao;
        }
        //3随机生成一个索引值并进行工号的交换
        Random r = new Random();
        for (int i = 0; i < gonghao.length; i++) {
            int index = r.nextInt(gonghao.length);//随机生成01234的索引
            int temp = gonghao[index];
            gonghao[index] = gonghao[i];
            gonghao[i] = temp;
        }
        for (int i = 0; i < gonghao.length; i++) {
            System.out.print(gonghao[i] + "\t");
        }
    }
}

❹冒泡排序

package TestDemo;

public class Test4 {
    public static void main(String[] args) {
        //冒泡排序
        int[] arr = {3,5,1,4};
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
    }
}

 部分内容来自黑马程序员!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值