美文网首页js css html
Java可变参数与数组

Java可变参数与数组

作者: Tinyspot | 来源:发表于2022-08-04 06:12 被阅读0次

1. 可变参数

  • 可接收多个同类型实参,本质是一个数组
  • 语法:数据类型... 形参名
  • 必须定义在参数列表的最后,且一个方法只能有一个可变参数
Class<?>... parameterTypes
Class<?>[] types

可变参数和数组作为方法参数时的区别:

  1. 可变参数只能有一个,数组可以有多个
  2. 可变参数只能定义在参数列表的末尾,数组可以在任何位置
  3. 可变参数可以传数组、null、0个参数、一到多个参数;数组可以传数组引用、数组对象、null

2. 数组

  • 特点:一段连续的内存空间,相同数据类型,可根据索引查询
  • 数组创建
  • 数组扩容
  • 数组复制

2.1 数组内存分析

数组属于引用类型,存储在堆中,栈中存储的是堆中数组的引用(地址)

2.2 数组创建

方式一:先声明,再分配空间

int[] values;
values = new int[10];

方式二:声明并分配空间

int[] values = new int[10];
values[0] = 1;

方式三:声明并赋值(简 / 繁)

int[] values = {1, 2};
int[] values = new int[] {1, 2};

2.3 数组的复制

int[] values = {11, 22, 3, 4, 5};
// more是升序
Arrays.sort(values);
System.out.println(Arrays.toString(values));

System.arraycopy(array, 0, array2, 2, 2);

2.5 数组倒置

/**
 * 数组倒置:
 *  第一个数与倒数第一个数交换
 *  第二个数与倒数第二个数交换
 *  以此类推
 *
 *  交换的次数看数量是奇数还是偶数
 */
public void inverse() {
    int[] nums = {1, 2, 3, 4, 5};
    for (int i = 0; i < nums.length / 2; i++) {
        int temp = nums[i];
        nums[i] = nums[nums.length - 1 - i];
        nums[nums.length - 1 -i] = temp;
    }
    System.out.println(Arrays.toString(nums));
}

2.6 main()

  • 自 JDK1.5 引入动态参数后,String[] 数组也可以使用String... args来实现

3. 二维数组

概念:一维数组中的一维数组;数组中的元素还是数组
查找元素需要两个下标, X[n][m] 第 n 行 第 m 列

int [][] nums = new int [3][5];
nums.length // 3
nums[0].length // 5

二维数组的遍历

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

3.1 二维数组的内存分配

image.png

高维数组中的每一个元素,保存了低维数组的地址
例如:访问 array[0] 等价于在访问 0x0000A111

3.1 N 维数组

  • N 维数组有 n 个 []

4. 地址的复制

  • 基本数据类型变量存储值
  • 引用数据类型变量存储地址值
  • num = newNum, 将新数组的地址复制给 num, 后续操作 num 时,相当于操作 newNum

4.1 数组类型参数

  • 基本数据类型传递:值传递。一方改变不会影响另一方
  • 引用数据类型传递:值传递(地址值)。一方改变影响另一方

相关文章

  • Java可变参数与数组

    1. 可变参数 可接收多个同类型实参,本质是一个数组 语法:数据类型... 形参名 必须定义在参数列表的最后,且一...

  • [转]谈一谈java的可变参数

      Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。 ...

  • Java 可变参数

    概述 Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理(...

  • 6.java可变参数(转)

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:...

  • 可变参数

    可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。如下所示:print()方法,用于...

  • Java可变参数方法

    Java1.5增加了新特性: 可变:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。 注意:...

  • java反射调用可变长度参数的方法

    在java中可以用可变长度参数,这样可以给调用者更大的灵活度,可变长度参数在编译后就是一个数组参数,不用担心可变长...

  • 可变参数列表

    可变参数列表 数组可以向可变参数传值,反之,不行 可变参数列表作为参数时只能放在参数的最后面 可变参数列表的方法是...

  • Java基础——可变参数

    .. 从java5开始出现了可变参数,这是对java方法及数组的拓展!方法中可以接受的参数不再是固定个数的,而是随...

  • Obejct数组与可变参数

    可变参数的本质就是接收一个Obejct数组数组的本质是一个Object对象

网友评论

    本文标题:Java可变参数与数组

    本文链接:https://www.haomeiwen.com/subject/wzsbirtx.html