Java数组和可变参数使用举例详解
1.数组的概述
数组指的是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换来考虑,建议容器的类型和存储的数据类型保持一致
2.数组的定义
格式一:
数据类型[] 数组名 int [] arra
格式二:
数据类型 数组名 [] int array[]
比如:
int[] a = new int[]{};
int b[] = new int[]{};一般格式一使用的多。
3.数组的静态初始化
完整格式:
数据类型[] 数组名 = new 数据类型[] {元素1,元素2,.....};
简化格式:数据类型[] 数组名 = {};
测试:
int[] a = new int[]{1,2,3};
// 简写
int[] b = {1,2,3};4.获取数组里的元素
格式:
组名[索引/下标] 注意数组下标从0开始
测试:
int[] a = new int[]{1,2,3};
// 简写
int[] b = {1,2,3};
int q = b[0];
System.out.println(q);5.把数据存储到数组当中
格式:
数组名[索引] = 具体数据/变量
测试;
// 简写
int[] b = {1,2,3};
b[0] = 100;
System.out.println(b[0]); // 100其实就是覆盖,一旦覆盖后,原来的数据就不存在
6.数组遍历
两种方法,即普通for和for-each
视情况使用。
int[] b = {1,2,3};
// 普通for
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
// for-each,不能操作索引
for (int i : b) {
System.out.println(i);
}7.数组的动态初始化
格式:
数据类型[] 数组名 = new 数据类型[数组的长度]
在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值
数组默认初始化值的规律:
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值'/u0000' 空格
布尔类型:默认初始化值false
引用数据类型:默认初始化值null
测试:
package org.example;
public class Test {
public static void main(String[] args) {
int[] a = new int[5];
for (int i : a) {
System.out.println( i);
}
}
}
结果:

8.数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常
比如修改for循环条件:
int[] b = {1,2,3};
// 普通for
for (int i = 0; i <= b.length; i++) {
System.out.println(b[i]);
}
结果:

9.可变参数
9.1.语法
可变参数:方法的形参的个数是可以发生变化的,是一个数组
格式:
属性类型...名字
细节:
在方法的形参中最多只能写一个可变参数
可变参数必须放在形参的最后
public class Test {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3};
test1(a);
}
public static void test1(int...arr){
for (int i : arr) {
System.err.println(i);
}
}
}
正常输出123
你提供的代码片段非常典型,它展示了可变参数的基本用法。下面我将为你详细解析数组和可变参数的区别,以及为什么我们需要可变参数。
可变参数(Varargs)本质上是编译器提供的一种“语法糖”。
在方法内部,可变参数 int... arr 完全被当作一个 int[] arr 数组来处理。可以对它进行遍历、获取长度等操作,就像操作普通数组一样。
编译器在编译时,会自动将可变参数转换为数组类型。
但是可变参数想对于数组较灵活,可以传入多个独立参数,也可以直接传入一个数组。
public class Test {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3};
test1();
test1(1,2,3);
}
public static void test1(int...arr){
for (int i : arr) {
System.err.println(i);
}
}
}结果:

9.2.可变参数的优势
1.避免繁琐的数组创建
在没有可变参数之前,如果你想调用一个方法处理一组不确定的数字,比如计算 1, 2, 3, 4, 5 的和,你必须写成 sum(new int[]{1, 2, 3, 4, 5})。这非常冗长。
有了可变参数,你可以直接写成 sum(1, 2, 3, 4, 5)。
2.替代大量的重载方法
假设你需要一个方法来打印不同数量的参数,在没有可变参数时,你可能需要写一堆重载方法:
// 没有可变参数时,需要大量重载
void print(int a) { ... }
void print(int a, int b) { ... }
void print(int a, int b, int c) { ... }
// ... 以此类推,代码冗余且难以维护使用可变参数,一个方法就能搞定所有情况:
// 使用可变参数,一个方法即可
void print(int... numbers) { ... }总结
到此这篇关于Java数组和可变参数的文章就介绍到这了,更多相关Java数组和可变参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
认证授权中解决AuthenticationManager无法注入问题
这篇文章主要介绍了认证授权中解决AuthenticationManager无法注入问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-10-10
springboot从application.properties中注入list, map方式
这篇文章主要介绍了springboot从application.properties中注入list,map方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
Spring Security实现禁止用户重复登陆的配置原理
这篇文章主要介绍了Spring Security实现禁止用户重复登陆的配置原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-12-12
IntelliJ IDEA 警告“Immutable object is&nbs
IntelliJ IDEA 作为业界领先的集成开发环境,凭借其强大的静态代码分析引擎,能够在编译阶段就敏锐地捕捉到此类潜在风险,并弹出 Immutable object is modified警告,下面我们就来看看如何解决吧2026-03-03


最新评论