黑马JAVA入门学习笔记3

一、数组

1、静态初始化数组

1.1 格式

数据类型【】 数组名=new 数据类型【】{元素1,元素2,....}

简化:数据类型【】 数组名={元素1,元素2,....}

另一种写法:数据类型  数组名【】={元素1,元素2,....}

1.2 数组在计算机中的基本原理

元素的地址传送给数组变量,然后由数组变量指向数组对象,就可以访问数据了。

数组是一种引用数据类型。

1.3 数组的访问

数组名【索引】

修改: 数组名【索引】=新的值

1.4 数组的长度

数组名.length

1.5 循环遍历数组快捷方式

数组名.fori+回车,就可以得到循环的框架。

for (int i = 0; i < ages.length; i++) {
    
}

1.6 案例-求和

public class Test {
    public static void main(String[] args) {
        int[] money={16,26,36,6,100};
        int sum=0;
        for (int i = 0; i < money.length; i++) {
            sum+=money[i];
        }
        System.out.println(sum);
    }
}

2、动态初始化数组

先不存入具体元素值,只确定数组存储的数据类型和数组的长度

2.1 格式

数据类型【】 数组名=new 数据类型【长度】

数组名【索引】=数值

2.2 堆内存

2.3 动态初始化数组默认值规则

2.4 案例-录入评委打分,得出平均分

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        double[] scores=new double[6];
        Scanner sc =new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.println("请输入第"+(i+1)+"个评委的分数");
            double score=sc.nextDouble();
            scores[i]=score;
        }
        double sum=0;
        for (int i = 0; i < scores.length; i++) {
            sum+=scores[i];
        }
        System.out.println("选手得分是"+sum/scores.length);
    }
}

3、数组在计算机中的执行原理

3.1 java内存分配介绍

3.2 数组在计算机中的执行原理

简单说 int a=20; int[] arr=new int[3] 执行原理

  • a是变量,直接放在栈中,a变量中存储的数据就是20这个值。
  • new int[3] 是创建一个数组对象,会在堆内存中开辟区域存储3个整数。
  • arr是变量,在栈中,arr中存储的是数组对象在堆内存的地址值。

3.3 多个变量指向同一个数组 

  • 多个数组变量中存储的是同一个数组对象的地址
  • 多个变量修改的都是同一个数组对象中的数据
  • 如果某个数组变量存储的地址是null,那么变量不再指向任何数组。可以输出这个变量,但是不能用它去访问数据或者访问数组长度,会异常。

4、数组常见案例

4.1 数组反转

public class Test2 {
    public static void main(String[] args) {
        int[] arr={10,20,30,40,50};
        for (int i = 0, j = arr.length-1;i<j; i++,j--) {
            int temp =arr[j];
            arr[j]=arr[i];
            arr[i]=temp;

        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

4.2 随机排名

  • 使用动态初始化数组方式录入员工的工号
  • 依次遍历数组的每个数据
  • 每遍历一个数据,都随机一个索引值出来,让当前数据与该索引位置的数据交换
public class Test3 {
    public static void main(String[] args) {
        //动态初始化数组
        int[] codes=new int[5];
        //提示用户输入员工号,并存入数组
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            System.out.println("请您输入第"+(i+1)+"个员工的工号");
            int code =sc.nextInt();
            codes[i]=code;
        }
        //打乱顺序
        Random r=new Random();
        for (int i = 0; i < codes.length; i++) {
            int index=r.nextInt(codes.length);
            int temp=codes[index];
            codes[index]=codes[i];
            codes[i]=temp;
        }
        for (int i = 0; i < codes.length; i++) {
            System.out.print(codes[i]+" ");
        }
    }
}

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值