说到不定长参数方法,其实有一个非常常用的方法,大家都用过的那就是main方法。下面就一起来看看不定长参数方法的demo;
package com;
public class UnfixedParameter {
public static void main(String[] args) {
testOne(new String[]{});
testOne(new String[]{"a","b","c"});
testTwo();
testTwo("a","b","c");
}
public static void testOne(String[] args){
for(String arg : args){
System.out.println(arg);
}
}
public static void testTwo(String... args){
for(String arg : args){
System.out.println(arg);
}
}
}
我们可以看出无论用String[]方式还是String...方式其实本质都是传入的一个字符串数组。这里还可以看出这种不定长参数方法的传参个数为>=0个。如果你希望必须传入一个或多个参数,那么可以在其前面添加参数(不能在后面添加,否则编译不通过),例如:
public static void test(int i,String par,String... args){}
不定长参数方法方法重载:
package com;
public class UnfixedParameter {
public static void main(String[] args) {
test(new String[]{});
test(new String[]{"a","b","c"});
test();
test("a","b","c");
}
public static void test(String... args){
for(String arg : args){
System.out.println(arg);
}
}
public static void test(String par,String... args){
System.out.println(par);
for(String arg : args){
System.out.println(arg);
}
}
}
你一定会发现test("a","b","c")编译不通过。因为编译器无法确定你调用的是哪个方法。这里我故意给第一个方法传入的是String[]类型,上面我已经说过String[]和String...方式本质都是传入一个字符串数组,所以写成同名方法的话不叫方法重载,会导致编译报错。这里test(new String[]{})和test(new String[]{"a","b","c"})一定调用的是第一个方法,而test("a","b","c")无法确定调用的是哪个方法。因为你可以把第二个方法当成是传入一个字符串和一个字符串数组,也可以当成传入>=1个字符串。
总结:
1.两种方式本质都是传入的字符串数组,所以不能同时出现,否则编译无法通过
2.String...参数必须放在最后面,否则编译无法通过
3.第一种方式(即String[]方式)可以使用方法重载,第二种方式(即String...方式)使用方法重载时,调用方法时会编译不通过(参数个数为0个的时候除外)
原文永久地址:
http://jsonliangyoujun.iteye.com/blog/2364491
分享到:
相关推荐
此外,不定长参数的使用也需要注意一些规则,例如,在调用方法的时候,如果能够和固定参数的方法匹配,也能够与可变长参数的方法匹配,则选择固定参数的方法。例如: package com; import static java.lang.System...
下面将详细讲解STC单片机串口通信中断接收不定长数据的基本原理、实现方法以及源代码分析。 1. **串口通信基础** 串口通信是基于串行数据传输的通信方式,通常使用TX(发送)和RX(接收)两根线进行数据交换。在STC...
这就是Python的不定长参数发挥作用的地方。在Python中,有两种方式来处理不定长参数:一种是使用星号(*)前缀的参数,通常称为`*args`,用于接收位置参数;另一种是使用两个星号(**)前缀的参数,通常称为`**kwargs`,...
本文将深入探讨STM32如何利用DMA(直接内存访问)进行串口接收不定长数据,并通过实际应用代码来阐述这一过程。 STM32是一款基于ARM Cortex-M内核的微控制器,其内置的串行通信接口(USART或UART)可以实现全双工的...
本文将深入探讨“串口协议接收”这一主题,特别是涉及到1588串口、不定长数据帧、串口帧头帧尾以及串口不定长数据的处理方法。 首先,1588串口,全称为IEEE 1588 Precision Time Protocol (PTP),是一种用于网络...
总结,通过结合STM32的串口空闲中断、DMA和FreeRTOS消息队列,我们可以实现高效、灵活的不定长数据接收方案。这种方法不仅可以提高系统的实时性,还能优化资源利用率,是嵌入式开发中的常见实践。在实际应用中,还...
"不定长中文识别keras"是一个项目,旨在利用Keras这一强大的深度学习框架来解决中文文字识别的问题。Keras是Python库,允许用户以简单、高效的方式构建和训练深度学习模型,它在TensorFlow、Theano或CNTK等后端上...
STM32F103通过串口的IDLE中断接收不定长数据是一种高效且灵活的方法。在配置好串口参数并启用IDLE中断后,通过中断服务程序处理接收到的数据。由于数据长度未知,需要在程序中实现数据帧的解析和校验,以确保数据的...
本课程“python数据分析与可视化-27-不定长参数之关键字参数”聚焦于Python中的一个高级特性——不定长参数,特别是关键字参数,这对于编写灵活且易于理解的函数至关重要。 关键字参数允许我们在调用函数时,通过...
在本文中,我们将深入探讨如何在华大HC32F460 KETA微控制器上实现串口3的DMA(直接存储器访问)接收不定长数据。华大半导体的HC32F460系列是高性能、低功耗的32位微控制器,广泛应用于嵌入式硬件系统,如机器人控制...
本文将重点讨论使用 `params` 关键字来实现向函数传递不定参数的方法。 `params` 关键字允许我们在函数定义时创建一个可变长度的参数列表。这个关键字后面通常跟着一个数组类型,表示函数可以接受零个或多个该类型...
本文将深入探讨如何在STM32单片机上使用HAL库进行串口接收不定长数据的操作。 首先,我们需要了解HAL库。STM32 HAL库是由STMicroelectronics公司推出的高性能、低功耗的硬件抽象层库,旨在简化STM32微控制器的编程...
### 串口DMA接收不定长数据的方法 #### 1. 引言 在现代嵌入式系统设计中,串行通信是一种广泛应用的数据交换方式。在众多串行通信接口中,串口(通常指通用异步收发传输器,即USART/UART)因其简单易用而受到工程师...
在实际应用中,经常需要处理串口通信,其中接收不定长数据是一项常见且重要的任务。在这种情况下,STM32的DMA(直接内存访问)和空闲中断功能可以有效地解决这一问题,提高系统的实时性和效率。 首先,理解STM32的...
以上就是使用STM32F407的DMA+串口空闲中断接收不定长数据的基本原理和实现方法,配合STM32CubeMX生成的初始化代码,开发者可以快速搭建起这样的通信系统。通过详细的注释和示例代码,初学者也能更好地理解和应用这些...
STM32串口接收不定长数据是嵌入式开发中的常见任务,特别是在使用STM32F407ZGT6这种高性能微控制器时。本文将详细介绍两种实现方式:方法1利用串口空闲中断和串口接收中断配合,以及方法2结合串口空闲中断与DMA...
本文将详细探讨如何在STM32中利用DMA实现USART的不定长数据接收。 首先,了解USART的基本工作原理。USART是一种全双工通信协议,它可以同时进行发送和接收数据。在STM32中,通常使用中断(Interrupt)或DMA(Direct...
Java中的可变长参数(Varargs)是一种非常实用的语言特性,它允许我们在定义方法时接受一个不定数量的参数。这种特性使得我们无需为每个可能的参数组合定义单独的方法,简化了代码并提高了代码的可读性和灵活性。...
在本文中,我们将深入探讨如何使用STM32F746微控制器的HAL库,结合DMA(直接存储器访问)和485通信接口来实现不定长字节的数据输入输出。485通信协议通常用于长距离、多节点的串行通信,而DMA则能够高效地处理大量...