java06数组

一.数组

数组是一种容器,可以用来存储同种数据类型的多个值;数组容器在存储数据的时候,需要结合隐式转换考虑。(最好保持数组的数据类型和存储的数据的类型一致)


1.数组的定义与初始化

        int  [ ]  array  或者 int  [ ]  array

        a.数组的静态初始化

初始化,就是在内存中为数组容器开辟空间,并将数据存入容器的过程;

完整格式:数据类型【】 数组名 = new 数据类型 【】 {元素1,元素2……}

简化格式:数据类型【】 数组名 = {元素1,元素2……},数组定义之后,其长度就不会发生变化

2.数组的地址值

       在内存中的位置,直接打印数组名,结果会是数组的地址值

public class Test5arr {
    public static  void main(String[] args){
        int arr [] = {1,2,3,4};
        System.out.println(arr);
    }
}

3.数组元素访问和添加   

       数据类型 变量名= 数组名[索引]  将这个元素赋值给变量

       数组名[索引] = 具体数据/变量   将数据存储到数组中 一旦覆盖后,原来的数据就不存在了

4.数组的遍历

        在Java中关于数组的长度属性length    调用方式:数组名.length

5.数组的动态初始化

        初始化时只指定数值的长度,由系统为数组分配初始

         数组类型[] 数组名 = new 数组类型 [数组长度]    int [ ] arr = new int [3];

数组默认初始化值的规律:

        整数类型默认初始化值为0;小数类型为0.0;字符类型为空格;布尔类型为false;引用数据类型为null

只明确元素的个数,不明确具体的数值,使用动态初始化;需求中已明确数值,则直接动态初始化

6.数组常见操作

        a.求最值

public class Test5arr {
    public static  void main(String[] args){
       int [] arr ={33,5,22,44,55};
       int max = arr[0];
       for(int i = 0;i<arr.length;i++){
           if(arr[i] > max){
               max = arr[i];
           }
       }
        System.out.println(max);
    }

}

初始化值一定要是数组里面的值

        b.求和并且统计个数

import java.util.Random;

public class Test5arr {
    public static  void main(String[] args){
        int arr[]=new int[10];
        Random r = new Random();
        int count = 0;

        int sum = 0;
        for(int i = 0;i<arr.length;i++){
            int number = r.nextInt(100)+1;
            arr[i] = number;
            sum =sum +arr[i];
            System.out.print(arr[i]+" ");
        }

        System.out.println("sum:"+sum);
        int avg = sum /arr.length;
        System.out.println("avg:"+avg);
        for (int i = 0;i<arr.length;i++){
            if(arr[i]<avg){
                count++;
            }
        }
        System.out.println("count:"+count);

    }

}

c.交换数据

public class Test5arr {
    public static  void main(String[] args){
        //交换首位索引对应的元素
        int []arr={1,2,3,4,5};
        for(int i = 0,j=arr.length-1;i<j;i++,j--){
            int temp =arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        for( int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }


    }

}

d.打乱数组中的数据

如何获取数值中的随机索引 

 int [] arr ={1,2,3,4,5}
        Random r = new Random();
        int randomindex = r.nextInt(arr.length);
        System.out.println(randomindex);
import java.util.Random;

public class Test5arr {
    public static  void main(String[] args){
        int [] arr ={1,2,3,4,5};
        Random r = new Random();
       for(int i = 0;i <arr.length;i++){
           int randomindex = r.nextInt(arr.length);
//           System.out.println(randomindex);
           int temp = arr[i];
           arr[i]=arr[randomindex];
           arr[randomindex]=temp;
       }
        for( int i = 0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
    }
}

7.数组的内存图

        栈:方法运行时使用的内存,比如程序的主入口(main方法,开始时会进栈,代码执行完毕时会出栈

        

public class Test5arr {
    public static  void main(String[] args){
        int arr1 []={11,22};//堆里面有一个地址存储11,22
        int arr2 []=arr1;//将arr1的地址赋给arr2,即arr1和arr2指向同一个地址
        System.out.println(arr1[0]);
        System.out.println(arr2[0]);

        arr2[0] = 33;
        System.out.println(arr1[0]);
        System.out.println(arr2[0]);
   }

}

堆:用new关键字创建的,都存储在堆内 有一个地址值

当两个数组指向同一个小空间的时候,其中一个数组中对小空间的值发生了变化,其他数组访问的时候就是修改后的结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值