栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java学习之数组

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java学习之数组

什么是数组

数组就是用来存储一批同种类型数据的内存区域

数组适合做一批同种类型数据的存储。

数组的定义格式 第一种

数据类型[ ] 数组名

for example:
int [] arr;
double [] arr;
char [] arr;
第二种

数据类型 数组名[ ]

int arr[]
double arr[]
char arr[]
数组动态初始化

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

int [] arr = new int[3];

等号左边:
int :数据类型为整形
【】:表示这是一个数组
arr :数组名
等号右边:
new:为数组开辟空间
【】:这是一个数组
3:代表数组的长度

数组元素访问

数组名[索引]

package 数组;

public class itheima01 {
    public static void main(String[] args) {
        int [] arr = new int[3];
        System.out.println(arr); // 数组的地址
        System.out.println(arr[0]); // 初始时候没有赋值默认为0
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

内存分配 内存概述
  • 内存是计算机中的重要原件,临时存储区域,作用是运行程序。
  • 我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。
  • 必须放进内存中才能运行,运行完毕后会清空内存。
  • ​Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。
java中的内存分配
  • 目前我们只需要知道2个内存:栈内存和堆内存
对数组元素赋值
package 数组;

public class itheima01 {
    public static void main(String[] args) {
        int [] arr = new int[3];
        System.out.println(arr); // 数组的地址
        System.out.println(arr[0]); // 初始时候没有赋值默认为0
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        System.out.println("对数组元素进行赋值");
        arr[0] = 100;
        arr[1] = 200;
        // 再次输出
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

多个数组的赋值

比较简单这里直接以代码为例

package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        // 定义两个数组
        int [] arr = new int[3];
        int [] arr1 = new int[3];
        // 分别输出
        System.out.println("数组1");
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println("数组2");
        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);

        arr[0] = 100;
        arr[1] = 200;

        arr1[0] = 111;
        arr[1] = 222;
        System.out.println("赋值后的数组1");
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println("赋值后的数组2");
        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
    }
}

内存分配 多个数组指向相同

语言比较晦涩,直接上代码,然后通过代码解释。

package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        // 定义两个数组
        int [] arr = new int[3];

        arr[0] = 100;
        arr[1] = 200;
        arr[2] = 300;
        System.out.println("第一个数组");
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        // 定义第二个数组指向第一个数组
        // 注意这里指向的是第一个数组的地址
        // 也正因为指向第一个数组的地址,所以对arr2赋值也直接把arr数组的值给改变了。
        int [] arr2 = arr;
        arr2[0] = 111;
        arr2[1] = 222;
        arr2[2] = 333;
        System.out.println("第二个数组");
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
        System.out.println("第一个数组");
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);


    }
}

通过结果我们可以发现第一个数组和第二个数组的地址是相同的,第二个数组指向第一个数组,所以对第二个数组赋值的同时,因为第二个数组的栈内存的索引地址和第一个是一样的,所以第二个数组的赋值直接也会把第一个数组的值进行改变。

静态数组初始化

定义数组时候直接给数组进行赋值

数组的访问

package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        // 定义两个数组
        int [] arr = {1,3,5,7,9};
        // int [] arr = new int [] {1,3,5,7,9}
        for(int i =0;i < arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

数组的几个注意事项

数组的动态初始化与静态初始化的区别


数组的遍历
package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        // 定义两个数组
        int [] arr = {1,3,5,7,9};
        // int [] arr = new int [] {1,3,5,7,9}
        for(int i =0;i < arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        int [] arr = {16,26,36,6,100};

        int sum = 0;
        for(int i =0;i < arr.length;i++){
            sum += arr[i];
        }
        System.out.println("总销售额度为:"+sum);
        }
    }



package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {15, 9000, 10000, 20000,9500, -5};

        int max = 0;
        for (int i =0;i < arr.length;i++){
            if (arr[i] > max){
                max = arr[i];
            }
        }
        System.out.println("最大值为:"+max);

    }
}



扩展

package 数组;

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {15, 9000, 10000, 20000,9500, -5};

        // int len = arr.length;
        // int [] arr2 = new int[len];

        int mid = 0;
        for (int i =0;i < arr.length;i++){
            for(int j =0;j < arr.length;j++){
                if(arr[i] > arr[j]){
                    continue;
                }else {
                    mid = arr[i];
                    arr[i] = arr[j];
                    arr[j] = mid;
                }
            }
        }
        for (int j =0;j 


package 数组;
import java.util.Random;
import java.util.Scanner;
public class ArrayDemo {
    public static void main(String[] args) {
        Random r = new Random();
        Scanner sc = new Scanner(System.in);
//        int num = r.nextInt(20);

        int [] arr = new int[5];

        for (int i = 0;i < arr.length;i++){
            int num = r.nextInt(20);
            arr[i] = num;
            System.out.println(arr[i]);
        }

        while (true){
            System.out.println("请输入一个0-20之间的数去猜测数是否再数组中");
            int guess = sc.nextInt();

            for(int j = 0; j < arr.length;j++){
                if(arr[j] != guess){
                    continue;
                }else {
                    System.out.println("END!!!");
                    break;
                }
            }
            break;
        }

    }
}


内存分配



参考

黑马程序员:blob:https://www.bilibili.com/4140246d-9003-4a74-bc20-d6900819797a

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号