数组里面的常见操作

一.求最值

public class Test22 {
    public static void main(String[] args){
        //需求:已知数组元素(33,5,22,44,55』
        //求数组中的最大值并打印在控制台;
        int[] arr={33,5,22,44,55};
        int max=arr[0];//临时认为0索引最大;
        //拿每一个元素和max进行比较;
        for (int i = 0; i max){
                max=arr[i];
            }
        }
        System.out.println(max);//55
    }
}

扩展问题:

1.为什么max要纪录为arr[0],默认值不能为0吗?

不能写0,max的初始值一定要是数组中的值;

2.循环中的开始条件一定为0吗?

循环中的开始条件如果为0,那么第一次循环的时候是自己跟自己比了一下,对结果没有任何影响,但是效率低,为了提高效率,我们减少一次循环次数,所以循环开始条件为1;

二.遍历数组求和

import java.util.Random;

public class Test23 {
    public static void main(String[] args) {
        //需求:生成10个1-100之间的随机数存入数组;
        //1.求出所有数据的和;
        //2.求所有数据的平均数;
        //3.统计有多少个数据比平均值小;
        int[] arr = new int[10];
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100)+1;
            arr[i] = number;
        }
        int sum=0;
        for (int i = 0; i < arr.length; i++) {
            sum=sum+arr[i];
        }
        System.out.println("数组中所有数据的和为:"+sum);
        int avg=sum/arr.length;
        System.out.println("数组中的平均数为:"+avg);
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]

三.交换数组中的数据

public class Test25 {
    public static void main(String[] args){
        int[] arr={1,2,3,4,5};
        for(int i=0,j=arr.length-1;i

四.打乱数组中的数据

import java.util.Random;

public class Test26 {
    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 randomiIndex = r.nextInt(arr.length);
            int temp = arr[i];
            arr[i] = arr[randomiIndex];
            arr[randomiIndex] = temp;
        }
            for (int i= 0; i < arr.length; i++) {
                System.out.print(arr[i]+"");
            }

        }
    }

五.Java内存分配:

1.栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行;

堆:存储对象或者数组,new来创建的,都存储在堆内存;

方法区:存储可以运行的class文件;

本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关;

寄存器:给CPU使用,和我们开发无关;

2.数组的内存图

因为数组里面的数据太多了,所以数组一般存储在打印出的地址值中;

注意:1.只要是new出来的一定是在堆里面开辟了一个小空间;

2.如果new了多次,那么在堆里面有多个小空间,每个小空间都有各自的数据;

3.两个数组指向同一个空间的内存图;

当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果了。

你可能感兴趣的:(Java,java,算法,数据结构)