Java 语法基础 day-04 数组

一、一维数组的静态定义

public class array_1d {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        //下为数组的静态定义,定义时数组里的元素已然确定好
        String[] names = {"张三" , "李四" , "王五" , "赵六"};
        for(String name : names) {
            System.out.println(name);
        }
    }
}

tips:

1.for 循环的另一种用法:

for(小范围 : 大范围){

执行语句

}

相当于python中的for num in nums ,写成for( num : nums)

2.访问数组的长度:直接array.length即可(访问字符串的长度也一样),根据索引访问数组元素跟python无异

二、一维数组的动态初始化

实现并不知道数据,只能使用动态初始化。

语法格式:数据类型[] 数组名字 = new 数据类型 [数组长度];

实际上,int数组的初始默认值为0;double数组初始默认值0.0;boolean数组初始默认值false。

//需求,存储八名学生的成绩
public class array_1d_dynamic {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        double[] scores = new double[8];
        for (int i=0 ; i <scores.length ; i++) {
            scores[i] = 2*i;
        }
        int a = (int) scores[5];
        System.out.println(scores[1]);
        System.out.println(a);
    }
}

三、二维数组

public class array_2d_stationary {
    public static void main(String[] args) {
        test1();
        test2();
    }
    public static void test1() {
        //1.静态初始化,生成一个4行3列矩阵二维数组里面的元素同样是数组
        int[][] stationary_array = {
                {1,2,3} , {4,5,6} , {7,8,9} , {10,11,12}
        };
        System.out.println(stationary_array[0][2]);
        System.out.println("---------------------");
    }
    // 2.动态初始化,生成一个全零的四行三列数组
    public static void test2() {
        int[][] array_dynamic = new int[4][3];
        for(int i = 0 ; i < 4; i ++){
            for(int j = 0 ; j < 3 ; j ++){
                array_dynamic[i][j] = 0;
            }
        }
        System.out.println(array_dynamic[0][2]);

    }
}

几个问题:(回答摘自gpt)

1.不能直接打印数组出来,像python那样吗?

在 Java 中,直接打印数组(如 System.out.println(array[0]);)会打印出数组的引用地址,而不是数组的内容。这是因为 Java 的数组没有重写 toString 方法,因此默认调用 Object 类的方法。

需要使用toString 或 deepToString方法

public class print_array {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        int[][] array = {
            {1,2,3},{4,5,6},{7,8,9}
        };
        System.out.println(Arrays.toString(array[1]));//对于一维数组
        System.out.println(Arrays.deepToString(array));//对于多维数组
    }
}

2.java中的数组,可以像python一样append吗?可以通过索引修改Java中数组的值吗?

在 Java 中,数组的行为与 Python 中的列表有所不同。以下是关于 Java 数组的一些关键点:

1. 数组的创建和大小

  • 固定大小: Java 中的数组在创建时大小是固定的,不能动态增加或减少。这意味着一旦定义了数组的大小,就无法像 Python 的列表那样使用 append() 方法添加元素。

    java

    复制
    int[] array = new int[5]; // 创建一个大小为 5 的整数数组
    

2. 修改数组元素

  • 通过索引修改: 在 Java 中,您可以通过索引直接修改数组中的元素。这与 Python 类似。

    java

    复制
    array[0] = 10; // 修改第一个元素的值
    

3. 替代 append 的方法

虽然 Java 数组本身不支持 append,但您可以使用以下方法来实现类似的功能:

  • 创建一个新的数组: 如果您想向数组添加元素,可以创建一个新的更大数组,并将旧数组的元素复制到新数组中。

    java

  • 复制
    int[] newArray = new int[array.length + 1];
    System.arraycopy(array, 0, newArray, 0, array.length);
    newArray[newArray.length - 1] = 20; // 添加新元素
    
  • 使用集合框架: 更常见的做法是使用 Java 的集合类,如 ArrayList,它提供了动态大小和 add() 方法来添加元素。

    java

    复制
    import java.util.ArrayList;
    
    ArrayList<Integer> list = new ArrayList<>();
    list.add(1); // 添加元素
    list.add(2);
    

示例代码

以下是一个简单的示例,展示了如何在 Java 中修改数组元素和使用 ArrayList 来实现动态添加:

java

复制

import java.util.ArrayList;

public class ArrayExample {
    public static void main(String[] args) {
        // 使用数组
        int[] array = new int[3];
        array[0] = 1;
        array[1] = 2;
        array[2] = 3;

        // 修改元素
        array[1] = 5; // 修改第二个元素
        System.out.println("Array after modification: ");
        for (int num : array) {
            System.out.print(num + " ");
        }
        
        // 使用 ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1); // 添加元素
        list.add(2);
        list.add(3);
        
        // 添加新元素
        list.add(4);
        System.out.println("\nArrayList after adding an element: " + list);
    }
}

总结

  • 在 Java 中,数组的大小是固定的,不能像 Python 列表那样使用 append() 方法。
  • 可以通过索引直接修改 Java 数组的值。
  • 对于需要动态大小的情况,使用 ArrayList 是更合适的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值