JAVA黑马程序员学习day4(数组)

数组的静态初始化

在这里插入图片描述

    int[] arr1={11,12,13};
        System.out.println(arr1);//[I@1b6d3586
        /*扩展:
        * 地址值的格式含义[I@1b6d3586
        * [:表示当前是一个数组
        * I:表示当前数组里面的元素都是double类型的
        * @:表示一个间隔符号(固定格式)
        * 1b6d3586:才是数组真正的地址值(十六进制)
        * 平时我们习惯性的会把这个整体叫做数组的地址值。
         */

快速获取数组长度

public class test {
    public static void main(String[] args) {
    int[] arr1={11,12,13};
    /*在java中,关于数组的一个长度属性,length
    * 调用方式:数组名.length*/
        System.out.println(arr1.length);
        //扩展:自动的快速生成数组的遍历方式
        //idea提供的
        //数组名.fori
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }
    }
}

练习1:遍历数组求和

在这里插入图片描述

public class test {
    public static void main(String[] args) {
        int[] arr1={1,2,3,4,5};
        int sum=0;
        for (int i = 0; i < arr1.length; i++) {
            sum+=arr1[i];
        }
        System.out.println(sum);
    }
}

练习2:统计个数

在这里插入图片描述

public class test {
    public static void main(String[] args) {
        int[] arr1={1,2,3,4,5,6,7,8,9,10};
        int n=0;
        for (int i = 0; i < arr1.length; i++) {
            if(arr1[i]%3==0){
                System.out.println(arr1[i]);
                n++;
            }
        }
        System.out.println("能被3整除的个数为:"+n);
    }
}

在这里插入图片描述

练习3:变化数据

在这里插入图片描述

public class test {
    public static void main(String[] args) {
        int[] arr1={1,2,3,4,5,6,7,8,9,10};
        int n=0;
        for (int i = 0; i < arr1.length; i++) {
            if(arr1[i]%2==0){
                arr1[i]/=2;
            }
            else{
                arr1[i]*=2;
            }
        }
        //遍历数组
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]+",");
        }
    }
}

在这里插入图片描述

数组动态初始化

在这里插入图片描述

public class test {
    public static void main(String[] args) {
        String[] arr = new String[50];//动态初始化只指定数组长度
        //添加
        arr[0] = "ligen";
        arr[1] = "xieweihao";
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);//打印出来的是默认初始化值null
        
        //数组默认初始化值的规律
        //整数类型:默认初始化值0
        //小数类型:默认初始化值0.0
        //字符类型:默认初始化值'\u0000'空格
        //布尔类型:默认初始化值false
        //引用数据类型:默认初始化值null
    }
}

在这里插入图片描述

练习4:求最值

public class test {
    public static void main(String[] args) {
        int[] arr={33,5,22,44,55};
        int max=arr[0];//max初始化的值一定要是数组中的值
        for(int i=1;i<arr.length;i++){
        //循环开始的条件如果为0,那么第一次循环的时候是自己跟自己比了一下,对结果没有任何影响,但是效率偏低,为了提高效率,减少一次循环的次数,循环开始的条件可以写1.
            if(max<arr[i]){
                max=arr[i];
            }
        }
        System.out.println(max);
    }
}

在这里插入图片描述

练习5:遍历数组求和

在这里插入图片描述

练习6:交换数组中的数据

需求:定义一个数组,存入1,2,3,4,5。交换首尾索引对应的元素,
最终效果:5,4,3,2,1

public class test {
    public static void main(String[] args) {
        int[] a={1,2,3,4,5};
        for(int i=0,j=a.length-1;i<j;i++,j--){//
            int temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
        for(int k=0;k<a.length;k++){
            System.out.print(a[k]+",");
        }
    }
}

在这里插入图片描述

练习7:打乱数组中的数据

在这里插入图片描述
思路:利用随机数生成随机索引,从数组的0索引开始与随机索引指向的元素进行交换,实现数据的打乱。

import java.util.Random;
public class test {
    public static void main(String[] args) {
        int[] a={1,2,3,4,5};
        for (int i = 0; i < a.length; i++) {
            Random rd=new Random();
            int x=rd.nextInt(a.length);//获得0~4的随机索引
            int temp=a[i];
            a[i]=a[x];//拿随机索引指向的元素跟i指向的元素进行交换
            a[x]=temp;
        }
        //当循环结束之后,那么数组中的所有数据已经打乱顺序了
        for(int k=0;k<a.length;k++){
            System.out.print(a[k]+",");
        }
    }
}

数组的内存图

在这里插入图片描述

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

在这里插入图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值