【Java学习】Java数组和图解分析以及python列表(5)

本文对比了Java数组与Python列表的特点,详细介绍了Python列表的动态性和操作方法,包括遍历、添加、复制等,同时深入解析了Java数组的定义、初始化及内存分配,通过实例展示了数组的索引、换值和遍历技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


学了Java数组之后就感觉和pythond的列表有点像

python

列表不用规定长度,可随意增加元素,随意删除元素,可循环遍历可直接打印

例1–打印遍历

list1 = [1,2,3,4,5,6]
print(list1)#打印列表
for i in list1:
    #遍历列表
    print(i)

[1, 2, 3, 4, 5, 6]
1
2
3
4
5
6

例2–添加元素

list1 = [1,2,3,4,5,6]
#末尾添加
list1.append([1,2,2])
list1.append(666)
list1.extend([100,200])#多个添加
list1.insert(2,'abc')#索引2处添加
print(list1)

[1, 2, 'abc', 3, 4, 5, 6, [1, 2, 2], 666, 100, 200]

索引取值

list1 = [1,2,3,4,5,6]

print(list1[0],list1[1])

例3–copy和赋值区别

list1 = [1,2,3,4,5,6]#原列表
print(list1)
print(id(list1))

list2 = list1.copy()#复制列表
print(list2)
print(id(list2))

list3 = list1#赋值列表
print(list3)
print(id(list3))

list4 = list1[:] #  :是从0到末尾切片的意思,相当于整个列表
print(list4)
print(id(list4))

id是系统生成的,每次运行都不一样.但是赋值的列表每次与原列表都相同
在这里插入图片描述

就不一一举例了
具体方法详见网址

Java

定义数组

package com.jingfei.csdn;

public class Array {
    public static void main(String[] args) {

        //一维数组定义,必须给出大小,并且定义了初始类型,数组类型必须一致.
        int arr[] = new int[5];//为初始化时候,默认为0
        int[] arr1 = new int[5];
        arr[0] = 1;
        arr[1] = 2;

        //直接初始化值
        int arr2[] = {1,2,3,4,5};
        int[] arr3 = {1,23,4,5};

        //二维数组定义,第一个初值必须给出,第二个数值可给可不给.
        //若没给出第二个初值,打印arrr[0],会是null,给了的话,会是一个地址值.
        int arrr[][] = new int[5][];
        int[][] arrr1 = new int[5][];
        int[] arrr2[] = new int[5][];
        System.out.println("第二个参数为空时:"+arrr[0]);
        int[][] arrr3 =new int[5][3];
        System.out.println("第二个参数不为空时:"+arrr3[0]);

        //初始化二维数组
        int[] a = {1,2,3};//常用
        int[] b = {4,5,6};
        arrr[0] = a;
        arrr[1] = b;

        //直接赋值的定义二维数组
        int[][] arrr4 = {{1,2,3},{4,5,6},{7,8,9}};//常用
        int[] arrr5[] = {{1,2,3},{4,5,6},{7,8,9}};
        int arrr6[][] = {{1,2,3},{4,5,6},{7,8,9}};
    }
}
第二个参数为空时:null
第二个参数不为空时:[I@1540e19d

内存分配的各个类型数组的初值

类型初值
byte/short/int/long0
char‘\u0000’
float/double0.0
booleanfalse
引用数据类型null

下面图解

在这里插入图片描述

注意: 二维数组中存的为一维数组的地址

程序运行流程图

在这里插入图片描述

例1–索引

1月: 31天
2月: 28天
3月: 31天
4月: 30天
5月: 31天
6月: 30天
7月: 31天
8月: 31天
9月: 30天
10月: 31天
11月: 30天
12月: 31天

package com.jingfei.month;

import java.util.Scanner;

public class MonthDemo {
    public static void main(String[] args) {


        int[] arr = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查询的月份1--12,例如一月就输入1");
        int mon = sc.nextInt();
        int monIndex = mon - 1;//索引与月份相差1
        if (monIndex >= 0 && monIndex < arr.length) {
            System.out.println(mon+"月有"+arr[monIndex]+"天!");
        } else {
            System.out.println("输入月份超过范围!");
        }
    }
}

例2–换值

一.
int[] arr = {11,22,33,44,55};
打印的结果为: [55,44,33,22,11]

package com.jingfei.day05;

public class ReArray1 {
    public static void main(String[] args) {
        int[] arr = {11, 22, 33, 44, 55};
        //打印的结果为: [55,44,33,22,11]
        Order(arr);
    }

    //抽一下方法吧;
    private static void Order(int[] arr) {
        for (int i = arr.length - 1; i >= 0; i--) {
            System.out.print(arr[i] + " ");
        }
    }
}

二.
[11, 32,55, 47,79,23]
置换后的数组元素为:
[23, 79, 47, 55, 32, 11]

package com.jingfei.day05;

public class ReArray {
    public static void main(String[] args) {
        //逆置数组
        int[] arr = {11,32,55,47,79,23};
        int temp = 0; //定义中间变量
        for (int i = 0; i <= arr.length / 2; i++) {
            temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;

        }
        System.out.println("逆序数组为:");
        for (int j = 0; j < arr.length; j++) {
            System.out.print(arr[j] + " ");
        }


    }
}


例3–遍历

一.
获取到二维数组中最大的元素,返回该元素的值

package com.jingfei.day05;

public class Max {
    public static void main(String[] args) {
        //获取数组中的最大值,直接来二位数组
        int[][] arr = {{1,2,3},{11,22,33},{10,20,30}};
        int result = maxdemo(arr);//调用
        System.out.println(result);
    }

    private static  int maxdemo(int[][] arr) {
        int max = arr[0][0];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                max = max>arr[i][j]?max:arr[i][j];
            }
        }
        return max;
    }

}



二.
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99

package com.jingfei.csdn;

public class Sum {
    
    public static void main(String[] args) {
        int[] a = {22, 66, 44};
        int[] b = {77, 33, 88};
        int[] c = {25, 45, 65};
        int[] d = {11, 66, 99};
        int[][] arr = {a, b, c, d};
        int sum = 0;

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                sum = sum+arr[i][j];

            }
        }
        System.out.println(sum);
    }
}

--------------------------------------------
谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值