巩固java(六)----java中可变参数方法(非常实用哦)
java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义。
import java.util.ArrayList;
import java.util.List; public class VariableParameter { //求若干个整型数中的最大值
public int getMax(int... items){ //定义可变参数items int max = Integer.MIN_VALUE; //次数为int能表示的最小值,值为-2147483648
for(int item : items){
max = item > max? item : max; //取大值
}
return max;
}
//返回比number大的数的个数
public int getLagerNum(int number,int... items){ //若除了可变长参数还有其它参数,可变长参数一定要放在最后
int sum = 0;
for(int item : items){
if(item > number){
sum++;
}
}
return sum;
} public static void main(String[] args) {
VariableParameter vp = new VariableParameter();
System.out.println("最大值:"+vp.getMax()); //可以不写参数
System.out.println("最大值:"+vp.getMax(2,1,4,7,2,-1,3,3)); //可以在参数中直接写入若干个参数
System.out.println("最大值:"+vp.getMax(-1,4,5,0,1)); //可以在参数中直接写入若干个参数 System.out.println("比number大的数的个数:"+vp.getLagerNum(9, 1,11,5,14,-1,9,21)); //9为number,后边的是items
int a[] = new int[] {1,11,5,14,-1,9,21};
System.out.println("比number大的数的个数:"+vp.getLagerNum(9,a)); //items也可以用数组替代 } }
运行结果如下:
最大值:-2147483648
最大值:7
最大值:5
比number大的数的个数:3
比number大的数的个数:3
从上面代码可以看出:
1.在方法中定义可变参数后,我们可以像操作数组一样操作该参数;
2.如果该方法除了可变参数还有其它的参数,可变参数必须放到最后;
3.调用使用了可变参数的方法时:
a.可以不写参数,即传入空参;
b.可以直接在里边写入参数,参数间用逗号隔开;
c.可以传入一个数组;
继续往下看:
public class VariableParameter {
public void comp(int... items){
System.out.println("1");
}
public void comp(int item1,int item2){
System.out.println("2");
}
public static void main(String[] args) {
VariableParameter vp = new VariableParameter();
vp.comp(1, 2);
}
}
运行结果:
2
由此可以看出:
4.拥有可变参数的方法可以被重载,在被调用时,如果能匹配到参数定长的方法则优先调用参数定长的方法。
继续:
public class VariableParameter {
public void comp(int... items){
System.out.println("1");
}
public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
System.out.println("2");
}
public static void main(String[] args) {
}
}
当试图使用数组作为参数去实现重载时,会报错,说明可变参数与数组冲突,但是:
public class VariableParameter {
public void comp(int[] items){ //会报错:Duplicate method comp(int[]) in type VariableParameter
System.out.println("2");
}
public static void main(String[] args) {
VariableParameter vp = new VariableParameter();
vp.comp(1,2,3,4); //The method comp(int[]) in the type VariableParameter is not applicable for the arguments (int, int, int, int)
}
}
如果定义一个参数为数组的方法,像调用可变参数的方法一样调用它是会报错,说明可变参数并不是一个数组,由此我们可以总结出:
5:可变参数可以兼容数组参数,但数组参数无法兼容可变参数。
版权声明:本文为博主原创文章,未经博主允许不得转载。
巩固java(六)----java中可变参数方法(非常实用哦)的更多相关文章
- java 使用反射调用可变参数方法
使用反射操作对象-调用可变参数方法 要把可变参数都当做是其对应的数组类型参数; 如 show(XX... is)作为show(XX[] is)调用; 若可变参数元素类型是引用类型: JDK内部接收到参 ...
- C# 中的可变参数方法(VarArgs)
首先需要明确一点:这里提到的可变参数方法,指的是具有 CallingConventions.VarArgs 调用约定的方法,而不是包含 params 参数的方法.可以通过MethodBase.Call ...
- Java 中可变参数
可变参数 Java 中可变参数 现在需要编写一个求和的功能,但是不知道有几个参数,在调用的时候才知道有几个参数,请问这如何实现呢? Java 给我们提供了一个 JDK 1.5 的新特性---可变参数 ...
- 编写Java程序,通过给定可变参数方法,计算任意给定的多个int类型数据之和
返回本章节 返回作业目录 需求说明: 通过给定可变参数方法,计算任意给定的多个int类型数据之和. 实现思路: 定义可变形参方法,参数类型是int类型. 定义变量 sum 接受最终的和. 通过 for ...
- Java 8 接口中的默认方法与静态方法
Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...
- java基础-java与c#的可变参数
正文 可变参数,必须最为参数的最后一个参数:可变参数只能有一个: c#可变参数例子: class Program { static void Main(string[] args) { T ...
- java获取request中的参数、java解析URL问号后的参数
java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...
- 2017.10.28 针对Java Web应用中错误异常处理方法的运用
针对Java Web应用中错误异常处理方法的运用 在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理.Java同 ...
- java.nio.Buffer 中的 flip()方法
在Java NIO编程中,对缓冲区操作常常需要使用 java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...
随机推荐
- HBase 协处理器实现二级索引
HBase在0.92之后引入了coprocessors,提供了一系列的钩子,让我们能够轻易实现访问控制和二级索引的特性.下面简单介绍下两种coprocessors,第一种是Observers,它实际类 ...
- 本人在CSDN上的技术博客访问量突破了10万次,特此截图留念
从 2011-11-16在CSDN开博至今,将近三年. 在近三年的时间里,本博的访问量于2014-07-01突破了10万次,单篇博文<软件开发高手须掌握的4大SQL精髓 ...
- python 内置标准库socketserver模块的思考
socketserver模块简化了编写网络服务器的任务, 在很大程度上封装了一些操作, 你可以看成是事件驱动型的设计, 这很不错.它定义了两个最基本的类--服务器类 BaseServer, 请求处理类 ...
- 高性能缓存系统Memcached在ASP.NET MVC中应用
在Memcached中实体类型未经序列化不能在Memcached中缓存,因此需要对实体类进行处理,才能缓存下来. Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库 ...
- ## 分享一下Mac(苹果电脑)里面好用的软件!
该文章主要分享 Mac电脑常用的软件 文章来源于 github小弟调调™的仓库转载 说明 [Open-Source Software][OSS Icon] 表示 开源软件 ,点击进入 开源 仓库: ...
- c#实例化继承类,必须对被继承类的程序集做引用
0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Culture=neutral, PublicKeyTo ...
- Mego(04) - NET简单实现EXCEL导入导出
前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ...
- jfinal的回滚
有两种方法 1. @Before(Tx.class) public void test() throws Exception { } 优点:简单,不需要去处理每个异常,直接抛出异常: 缺点:不能详细的 ...
- mysql Access denied for user \'root\'@\'localhost\'” 本人解决方案:
直接上图 昨天还是好的今天就不行了,密码是没错的,就是本地的连接不上,Linux上的mysql可以连, 网上找各种解决方案,什么权限,什么加一句话,还有这个 如果连这个都进不去那就直接重装吧,其实 ...
- Python 3 利用 Dlib 19.7 实现摄像头人脸识别
0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,提取人脸特征,通过计算欧氏距离来和预存的人脸特征进行对比,达到人脸识别的目的: 可以自动从摄像头中抠取人脸图片存储到本地: 根据抠取的 ...