Java学习笔记Part10-数组

目录

9 数组
9.1 什么是数组

数组(Array)是一种引用数据类型,可以解决大量数据的命名问题和大量数据存储和传递问题。


9.2 数组的创建

数组的创建分为静态创建和动态创建两种

静态创建;

  • 数据类型[] 数组名={数据};
  • 数据类型[] 数组名=new 数据类型[]{数据};

数组中的每一个数据叫元素,数组中的元素类型都是相同或者相近的。(可以在double[]里面放个float,但不可以在String[]中放个float)(隐式类型转换)

动态创建:

动态:当数组创建时,我们还不确定里面对的值是什么,仅仅知道数据的个数

  • 数据类型[] 数组名 = new 数据类型[数据的长度];

数组的长度:数组的元素个数

code:

public class code01 {
   
    public static void main(String[] args) {
   
        int[] stuCNScore = {
   100,98,115,72,96};
        int[] stuENScore = new int[]{
   101,120,119,118,95};
        int[] stuMathsScore = new int [5];
    }
}

9.3 数组的属性,特点,使用细节

数组的索引机制:

索引:多个数据虽然使用同一个标识符,但每个数据默认都有自己的编号。索引由数组自动生成并维护,默认第一个元素的索引为0,后面的索引依次递增。索引本身是整数 int。

访问数组中的元素:数组名[索引值]

修改数组中的元素:数组名[索引值] = 新值

或许数组长度属性:数组名.length

确定索引范围:0~(数组长度-1)

数组的特点:

  1. 内存特点:内存分为栈内存和堆内存,栈内存主要用于执行方法,存储量相对较小;堆内存用于存出大量数据,存储量相对较大。创建数组的时候,在堆内存上开辟出一段连续空间,用于存储数组中的元素,栈内存上实际存储的是数组首元素的地址,栈内存存储机制其实就是引用堆内存中的数据。
    基本数据类型创建的变量存储在栈内存中,是方法中的,内部的局部的变量。数据量比较小,一种临时的使用。
    引用数据类型创建的变量存储在堆内存中,栈内存引用堆内存上的地址,占用两块。数据量比较大,一种持久的使用。

  2. 数组一旦创建,长度是不可改变的。

  3. 数组存储数据增加和删除数据比较麻烦。但是根据索引访问数据非常快。
    数组根据索引查询数据的方式是计算得来的。目标元素的地址=首元素地址+索引+数据长度,通过较少次数的运算就可以快速定位元素,即使数组元素非常多,依据索引查询数据也是极快的。

  4. 数组存储数据的特点

    数组的数据在内存上是连续的

    根据索引查询数据快

    面对数据的增加和删除 需要大量移动元素或者重新创建数组

    一般经常修改或者查询,但是基本不会增加和删除的数据适合使用数组存储


9.4 数组的遍历
  • 使用for循环遍历

  • 使用增强型for循环——foreach循环遍历
    针对于数组的增强型for循环,简化了for循环
    for(数据类型 临时变量名:数组名){循环体}

foreach循环在写法上更为简单,没有索引
而for循环通过索引查询元素,在循环内部可以通过索引修改元素

code:

public class code03 {
   
    public static void main(String[] args) {
   
        int[] array = {
   13,54,24,76,45,53,23};
        //for循环
        for (int index = 0; index < array.length; index++){
   
            System.out.print(array[index]+"\t");
        }
        //foreach循环
        System.out.println();
        for (int i:array){
   
            System.out.print(i+"\t");
        }
    }
}

9.5 查找数组中的最大值,最小值及其索引

code:

public class code04 {
   
    public static void main(String[] args) {
   
        int[] arr = {
   12,45,78,35,49,65,33,1};
        int max=arr[0];
        int maxIndex=0;
        int min = arr[0];
        int minIndex= 0;
        for (int i = 0; i < arr.length; i++) {
   
            if(max<=arr[i]){
   
                max=arr[i];
                maxIndex=i;
            }
            if(min>=arr[i]){
   
                min=arr[i];
                minIndex=i;
            }
        }

        System.out.println("最大值为:"+max);
        System.out.println("最大值索引为"+maxIndex);
        System.out.println("最小值为:"+min);
        System.out.println("最小值索引为"+minIndex);
    }
}

9.6 查找数组中元素的索引

code:

public class code05 {
   
    public static void main(String[] args) {
   
        int target = 1;
        int index = -1, _index = -1;
        int[] arr = {
   455,123,4,1,3,6545,8,689,1,864,18648,385,86};
        //查找元素第一次出现位置
        for (int i = 0; i < arr.length; i++){
   
            if (arr[i] == target){
   
                index = i;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值