JAVA 可变参数方法

【Java】Java反射调用可变参数的方法 1.概述 因为要Java反射调用可变参数的方法,所以参考了这篇文章:https://www.cnblogs.com/huqingchen/p/5979936.html 但是测试过程中,有一点我不明白,就是反射调用可变参数的方法时,为什么一定要保证传入的参数数组长度为1, 然后如下 package com.java.reflect.demo; public class BaseObject { public void getObjectName() { System.out.p. 阅读详情

转自:http://blog.youkuaiyun.com/testcs_dn/article/details/38920323

许多Java新人在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊?

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int... intArray){  
  3.           
  4.     }  
  5.       
  6.     public static void main(String args[]){  
  7.           
  8.     }  
  9. }  

这就是今天这篇blog的主角:可变的参数类型,也称为不定参数类型。英文缩写是varargus,还原一下就是variable argument type。通过它的名字可以很直接地看出来,这个方法在接收参数的时候,个数是不定的。那么好,现在就先来调用下这个方法。请看代码和输出:

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int... intArray){  
  3.         for (int i : intArray)  
  4.             System.out.print(i +" ");  
  5.           
  6.         System.out.println();  
  7.     }  
  8.       
  9.     public static void main(String args[]){  
  10.         dealArray();  
  11.         dealArray(1);  
  12.         dealArray(1, 2, 3);  
  13.     }  
  14. }  

输出:

[java]  view plain copy
  1. 1   
  2. 1 2 3   

通过main方法里的调用,可以看出来这个可变参数既可以是没有参数(空参数),也可以是不定长的。看到这里估计都能明白,这个不定长的参数其实和数组参数挺像的。事实上,也确实是这么回事儿。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。请看代码:

[java]  view plain copy
  1. dealArray(); //dealArray(int[] intArray{});  
  2.         dealArray(1); //dealArray(int[] intArray{1});  
  3.         dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});  

说到这里,那么可以来验证一下,看看是不是这个可变参数就是数组类参数?看代码:

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int... intArray){  
  3.         for (int i : intArray)  
  4.             System.out.print(i +" ");  
  5.           
  6.         System.out.println();  
  7.     }  
  8.       
  9.     public static void dealArray(int[] intArray){//会有Duplicate method dealArray(int[]) in type TestVarArgus的错误  
  10.         for (int i : intArray)  
  11.             System.out.print(i +" ");  
  12.           
  13.         System.out.println();  
  14.     }  
  15.       
  16.     public static void main(String args[]){  
  17.         dealArray();   
  18.         dealArray(1);  
  19.         dealArray(1, 2, 3);  
  20.     }  
  21. }  

从上面这段代码可以看出,这两个方法是冲突的,是无法重载的。到这里,再来做一个有意思的实验:

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int... intArray){  
  3.         for (int i : intArray)  
  4.             System.out.print(i +" ");  
  5.           
  6.         System.out.println();  
  7.     }  
  8.       
  9.     public static void main(String args[]){  
  10.         int[] intArray = {1, 2, 3};  
  11.           
  12.         dealArray(intArray);  //通过编译,正常运行  
  13.     }  
  14. }  

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int[] intArray){  
  3.         for (int i : intArray)  
  4.             System.out.print(i +" ");  
  5.           
  6.         System.out.println();  
  7.     }  
  8.       
  9.     public static void main(String args[]){  
  10.         dealArray(1, 2, 3);  //编译错误  
  11.     }  
  12. }  

从上面这两段代码可以看出来,可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。其实对于第二段代码而言,编译器并不知道什么可变不可变,在它看来,需要定义一个dealArray(int, int, int)类的方法。所以,自然就无法去匹配数组类参数的dealArray方法了。

 

写不完了,吃完午饭,下午继续...

 

吃好午饭,睡了一会儿,继续上午的话题,接下来谈一下Java的可变参数。

 

既然Java方法接收可变参数,那么接下来我们再来看一下下面的代码:

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int count, int... intArray){  
  3.           
  4.     }  
  5.       
  6.     public static void dealArray(int... intArray, int count){//编译报错,可变参数类型应该作为参数列表的最后一项  
  7.           
  8.     }  
  9.       
  10.     public static void main(String args[]){  
  11.             
  12.     }  
  13. }  

这段代码说明了,可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。估计你会想到一个词“优先级”。因为没有确切的说明,只是这样一种规定,这里可以借用“优先级”这个词来理解一下,请看下面的代码:

[java]  view plain copy
  1. public class TestVarArgus {  
  2.     public static void dealArray(int... intArray){  
  3.         System.out.println("1");  
  4.     }  
  5.       
  6.     public static void dealArray(int count, int count2){  
  7.         System.out.println("2");  
  8.     }  
  9.       
  10.     public static void main(String args[]){  
  11.         dealArray(1, 2);  
  12.     }  
  13. }  

代码贴出来估计都知道是输出2,而不是1。记住:能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的。

 

最后,大家都知道main方法的参数就是一个数组类型的,那么它其实也是可以改成不定参数类型。试一试吧,看看有没有编译错误。


Java中可变参数方法的实现 在方法内部,可变参数被当作数组来处理,我们可以使用数组的操作方法对参数进行处理。Java中引入了可变参数的语法糖,使得编写接受不定数量参数的方法更加方便。可变参数必须是方法的最后一个参数,并且在方法内部被当作数组来处理。使用可变参数方法时,我们可以传递任意数量的参数,包括零个参数。可变参数只能作为方法的最后一个参数,而且每个方法最多只能有一个可变参数。如果方法中有多个参数,可变参数必须放在参数列表的最后。当调用可变参数方法时,编译器会根据实际传递的参数类型选择合适的方法进行调用。方法接受一个可变参数。 阅读详情

相关推荐

SGLang HiCache实战:手把手教你配置KV Cache Offload,让大模型推理成本直降84%

本文详细介绍了SGLang HiCache在KV Cache Offload配置与调优中的实战应用,通过多级存储架构和智能卸载策略,显著降低大模型推理成本达84%。文章涵盖HiCache架构优势、环境配置、高级调优策略及生产环境最佳实践,帮助开发者优化GPU显存使用,提升并发处理能力。

weixin_29044713的博客 462

Java方法的可变参数类型

许多Java新人在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊? public class TestVarArgus { public static void dealArray(int... intArray){ } public static void main(String args[]){ } } 这就是...

技术代码资料库 1826

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 569

java int...的含义

Java int...的作用

qq_51149164的博客 2003

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4933

使用ADS进行LNA低噪放设计的详细教程

详细介绍了通过ADS软件进行LNA设计的过程,从晶体管的选型到稳定性系数分析、再到输入输出端匹配,完整的讲解了低噪放的设计流程,可以使新手小白以及学习射频放大器的朋友可以快速的了解掌握ADS的使用方法和LNA的设计方法。

weixin_41831333的博客 3449

可变长参数

1. 可变长参数的定义 使用…表示可变长参数,其中…在类型和变量名之间,例如 print(String... args){ ... } 在具有可变长参数的方法中,可以把参数当成数组使用,例如可以循环输出所有的参数值。 print(String... args){ for(String temp:args) System.out.println(temp); } 2. 可变长参数的方法的调用 调用的时候可以给出任意多个参数也可不给参数,例如: print();//传入参数为空时,相

若凡~~~ 1171

[cryoEM] cryoSPARC简介

cryoSPARC系统结构概述 cryoSPARC是一个后端和前端高性能计算软件系统,为单颗粒冷冻电镜提供数据处理和图像分析能力,以及丰富的基于浏览器的用户截面和命令行工具。 Master-worker模式 系统基于主用户模式。 主进程(web应用,核心应用程序和MongoDB数据库)一起在主节点上运行。主节点需要相对轻量级的资源(2+ CPU< 16GB+ RAM)。 工作程序进程可以在具有GPU的任何可用节点上生成,负责所有实际计算和数据处理,并由主节点调度。注意:同一节点可以同时充当主节点和辅

进阶中的程序员吃吃的博客 7796

Java—面向对象——可变参数

目录 一、注意事项和使用细节 基本概念 java允许将同一个类中多个同名同功能但参数个数不同的方法封装成一个方法,就可以通过可变参数实现。 基本语法 访问修饰符 返回类型 方法名(数据类型...形参名){ } 快速入门案例: //快速入门案例 public class VarParameter01{ public static void main(String[] args){ /* 可以计算 2 个数的和,3 个数的和 , 4. 5, 。。 ...

weixin_61843013的博客 851

15、导频辅助信道估计:挑战与解决方案

本文探讨了导频辅助信道估计在双选择性信道中的挑战,分析了传统方法的局限性,并提出了一种新的导频子载波结构。该结构综合考虑相干频率带宽与相干时间,通过动态移动导频位置并结合时间与频率分集,提升了高速移动环境下的信道估计性能。文章还讨论了其硬件实现、系统开销及兼容性等实际问题,并展望了优化策略、降低开销及与其他技术融合的未来研究方向。

o4p5q6r7s的博客 103

一文看懂EMMC原理及工作过程

CMD:用于设备初始化和命令传输的双向通道, CMD信号有2种工作模式:1#:漏极开路--->用于初始化模式2#:推拉--->用于快速命令传输其中命令从eMMC主机控制器发送到eMMC设备,响应从设备发送到主机。DAT [7:0]:双向数据信号,模式包括:1(DAT0);默认情况下,通电或重置后,只有DAT0用于数据传输。DAT信号在推挽模式下工作,eMMC设备包括数据线DAT1-DAT7的内部上拉。进入4位模式后,设备立即断开线路DAT1、DAT2和DAT3的内部上拉;

Airer_00的博客 2031

JAVA中的可变参数

好记性不如赖笔头……package com.Ckinghan.equalsDemo;public class DymainParam { /** * @描述:可变参数的定义及使用 */ public static void main(String[] args) { /** * intSumVal 是一个接收可变参数的方法,可

ckinghan58 学习工作分享空间 307

Visual Studio Code ADT Extension 能不能连接 ECC,答案是可以,但真正的门槛在 ABAP 后端版本

Visual Studio Code 版 ABAP Development Tools(ADT)支持连接传统 SAP ECC 系统,关键不在于系统名称,而在于底层 SAP NetWeaver AS ABAP 版本是否达到最低要求(7.31 SP04 及以上)。只要系统已支持 Eclipse ADT,即可无缝使用 VS Code ADT,无需升级后端。SAP 通过复用原有 ADT 技术栈,将兼容性逻辑置于客户端,实现对老系统的持续支持。尽管初期侧重 ABAP Cloud 模型,但 1.1 及后续版本已全面覆盖

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 50

Java中可变参数方法

Java中可变参数方法 J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。 Varargs的含义 大体说来,“Varargs”是“variable number of arguments”的意思。有时候也被简单的称为“variable arguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍...

Mr.Phoebe的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java方法、递归、重载、可变参数

在 Java 编程里,方法是构建程序的重要组成部分。它就像一个功能强大的工具盒,每个方法都能完成特定的任务,让代码结构更加清晰,可维护性和复用性大大提高。递归是一种强大且独特的编程技术,它允许方法在其自身的定义中调用自身。递归可以将复杂的问题分解为简单的子问题,从而简化代码逻辑,减少重复计算。方法是语句的集合,它将一系列的语句组合在一起,形成一个具有特定功能的代码片段。可以把它看作是解决某一类问题的有序步骤集合。方法通常包含在类或对象中,并且由方法头和方法体两部分构成。

weixin_63181475的博客 1414

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java方法03——构造方法与可变参数

第五天Java学习笔记,方法03—构造方法与可变参数,笔记根据学习进度更新。 我们应该有恒心,尤其要有自信心——居里夫人

Code_流苏:在代码中寻诗意,在实践中觅真知 2306

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java方法可变参数

package _VarArgs_kebiancanshu; /* * 当方法的参数类型已经确定,但方法的参数个数不确定,就可以使用可变参数 * * 使用格式:定义方法时使用 * 修饰符 返回值类型 方法名(数据类型.....变量名){} * * 可变参数的原理 * 底层是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数 * 根据传递参数的个数 可以是:0/1/2甚至是多个 */ public class _kebiancanshu { public static

weixin_44976835的博客 333

Java方法的可变参数个数

原文:Java方法的可变参数类型许多Java新人在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊?[java] view plaincopyprint?public class TestVarArgus {      public static void dealArray(int... intArray){                }        

无知人生,记录点滴 5万+

[Java] Java中的可变参数方法

Java SE 5.0 以前的版本中,每个Java方法都有固定数量的参数,现在的版本提供了可以用可变参数数量调用的方法。

Sugar_Joe 650

Java中的可变参数方法

1、一个小例子: 为了比较直观地说明Java的可变参数方法,我们举个例子: //求若干个整型数中的最大值 public int getMax(int... items){ //定义可变参数items int max = Integer.MIN_VALUE; //次数为int能表示的最小值,值为-2147483648 for(int item : items...

星空 2599

java 使用反射调用可变参数方法

使用反射操作对象-调用可变参数方法 要把可变参数都当做是其对应的数组类型参数; 如 show(XX... is)作为show(XX[] is)调用; 若可变参数元素类型是引用类型: JDK内部接收到参数之后,会自动拆包取出参数再分配给该底层方法,为此我们需要把这个数组实参先包装成一个Object对象或把实际参数作为一个Object一维数组的元素再传递。 若可变参数元素类...

weixin_30432579的博客 1579

Java学习(七)方法重载、可变参数、作用域、构造方法

本篇文章介绍了 Java 的方法重载、可变参数、作用域、构造方法。

weixin_42790691的博客 1903

java方法的可变参数

【代码】java方法的可变参数。

qq_39677376的博客 392

JAVA可变参数方法及它的重载

JAVA支持方法的可变参数。类似如下 public void method1(String... arg1);  这样,调用method1时候,参数的数量是可变的,如method1("1","2","3")。注意可变参数只能是最后一个参数。 JAVA内部是把这样的参数看成一个数组来处理。在获取多个参数的时候可以用数组遍历来完成。 for (String temp : arg1) { ...

iamxi的专栏 537

java 可变参数列表_java中可变参数列表的实现方法

我们在对可变参数有一定的认识后,可以引申一下它的使用范围。在数组中也会需要参数的传入,那么结合参数的数量不固定,我们在参数类型上也得到了增加,这就是本篇所要讲的可变参数列表。下面我们就java可变参数列表的概念、使用规则、以及代码示例分别带来介绍。1.可变参数列表概念从java5开始,java支持一种参数写法:Java类型后面三个点(如String…),叫可变参数列表。向其中传入参数时,它支持传入...

weixin_31813357的博客 1667
上一篇: Abstract Interface
下一篇: JAVA 枚举类型
cmdssd1
博客等级 码龄17年 24粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值