Java学习第四天----数组的学习

数组的概念:

1. 什么是数组?

可以存储多个元素,并且必须是同一种数据类型的元素的容器,叫数组.
数组定义格式:
格式一(推荐的方式):
数据类型[] 数组名;
格式二:
数据类型 数组名[];
实例:
定义一个数组,存储学生成绩 小数
double[] scores

             定义一个数组,存储学生的姓名
             String[] names

2. 数组的定义格式一_动态初始化

总结:
什么是动态初始化:

  • 我们给出数组的长度,由系统给出默认的初始化值;
    int a = 10;

数组的格式:
数据类型[] 数组名 = new 数据类型[长度];

定义一个数组,存储50个学生成绩 浮点数:
double[] scores = new double[50];

定义一个数组,存储80个学生的姓名
String[] names = new String[80];
格式解释:
数据类型: 数组中的存储的元素是什么数据类型
[]: 代表的是一维数组
数组名: 数组的名称 按照定义标识符的规则定义即可
new: 关键字,创建了一个数组
数据类型: 跟左边的数据类型是一致的
长度: 代表的是数组中可以存储多少个元素

3. 访问数组元素进行获取

1.直接打印数组变量名, 结果是什么?
数组的地址值
2.索引概念如何解释:
编号的意思,编号都是连续的
3.如何使用索引获取元素:
获取元素的格式:
数组名[索引]
给元素赋值格式:
数组名[索引] = 值;
4.数组中最小索引是: 0
最大索引是: 数组的长度-1

4. Java中的内存划分


  • 存储局部变量 在方法中或者是在方法的声明上()存储的变量,程序的运行都必须要进栈的.

  • 只要是能被new出来的都是存储在堆内存中地址值是以十六进制的形式打印出来的.
  • 方法区
    存储.class文件的
  • 本地方法区
    跟系统有关的
  • 寄存器
    跟CPU有关系的
  1. 数组的定义格式二_静态初始化
    静态初始化的基本格式为?

总结:
静态初始化:我们给出数组中的元素,由系统自动计算数组的长度.

标准的格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…};
简化的格式:
数据类型[] 数组名 = {元素1,元素2,元素3,…};

  • 静态初始化有长度吗?
    有, 长度是有系统计算的.
    常见问题_数组索引越界异常:
  1. 访问了不存在的索引 就会报 ArrayIndexOutOfBoundsException : 数组索引越界异常
    2.如何解决:
    只要访问存在的索引就可以解决这个问题
    常见问题_空指针异常:
    总结:
    引用类型变量 没有指向有效的堆内存中的地址了,就会报 NullPointerException: 空指针异常
    如何解决:
    只要让引用类型变量指向有效的堆存在中的地址即可,解决这个问题
    求出数组中的最值:
public class ShuZu{
        public static void main(String[] args){
            int[] arr = {23,544,56,1,23,45,21,1,78};
            int max=arr[0];
            for (int i = 1; i < arr.length; i++) {
                if(max < arr[i]){
                    max = arr[i];
                }
            }
            System.out.println(max);
        }
    }
    

此为案例二

import java.util.Random;
/*

1:设定一个长度为十的int类型数组
2:给该数组赋上随机值
3:打印个位十位不包含7的元素

 */

public class ZuoYe{
    public static void main(String[] args) {
//创建对象
         Random r = new Random();
//    创建一个元素总数为十的int类型的数组
         int[] shuzu = new int[10];
 //使用for循环对数组内的所有元素进行随机赋值.
        for(int l=0;l<shuzu.length;l++) {
            shuzu[l]=r.nextInt(80-50+1)+50;
            //展示所有元素的数值
            System.out.println(shuzu[l]);
        }System.out.println("---------");
        for(int l =0;l<shuzu.length;l++){
            shuzu[l]=r.nextInt(80-50+1)+50;
          //设置两个变量分别为个位数与十位数的取余
            int ge =shuzu[l]%10;
            int bai = shuzu[l]/10%10;
            //运用if语句对个位和十位数进行判断
            if (ge!=7&&bai!=7){
                //判断后进行打印
                System.out.println(shuzu[l]);
            }
        }
    }
}

案例三生成随机数组
/*
第五题:分析以下需求并实现
1.定义一个用于存放班级分数的数组 int[] score;数组长度为5,并使用随机数(范围为0-100)为数组赋值
2.求出班级不及格人数(分数低于60分的就是不及格)
3.求出班级的平均分
4.求出班级的总分数

*/

import java.util.Random;

public class ZuoYe{
    public static void main(String[] args) {
        Random r = new Random();
        //定义长度为5的数组
        int[] fenshu = new int[5];
        //利用for循环产生5个随机数并给数组
        int bujige = 0;
        double zongfen = 0;
        for (int j = 0; j < fenshu.length; j++) {
            //使用随机数给数组赋值
            fenshu[j] = r.nextInt(101);
            //这里是每次赋值后对所有的数值进行的加法计算并赋值给一个变量.
            zongfen += fenshu[j];
            //展示数组内的五个分数
            System.out.println("分数为:" + fenshu[j]);
            //此处用来计算不及格的人的数.
            if (fenshu[j] < 60) {
                bujige++;
            }
        }
        //这个语句为 平均分的计算  用所有的数值总和除以数组的元素个数,然后输出.
        double pingjunfen=zongfen/fenshu.length;
        System.out.println("不及格为" + bujige+"个");
        System.out.println("总分为:"+zongfen);
        System.out.println("平均分:"+pingjunfen);
    }
}

第三题:分析以下需求并实现
1.打印1到100之内的整数,但数字中包含9的要跳过
2.每行输出5个满足条件的数,之间用空格分隔
3.如:1 2 3 4 5

public class Test{
    public static void main(String[] args) {
        //使用for循环来实现1-100之间整数的打印
        //此处需要定义一个变量来进行换行
        int huanhang = 0;
        for (int shu = 1; shu <= 100; shu++) {
            //使数字中包含9的数字跳过
            if (shu % 10 != 9 && shu / 10 % 10 != 9) {
                System.out.print(shu + "  ");
                huanhang++;
                if (huanhang % 5 == 0) {
                    System.out.println();
                }
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值