Java——可变参数

Posted Hello-world-noname

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java——可变参数相关的知识,希望对你有一定的参考价值。

package com.demo.day;
/*
java 允许将同一个类中多个同名同功能 但 参数个数不同的方法,封装成一个方法,就可以通过可变参数实现
 */
public class Varparameter 
    public static void main(String[] args) 
        HspMethod m = new HspMethod();
        System.out.println(m.sum(1,4,3,2,4,53,34));
    

class HspMethod
    public int sum(int n1,int n2)
        return n1 + n2;
    
    public int sum(int n1,int n2,int n3)
        return n1 + n2 + n3;
    
    public int sum(int n1,int n2,int n3,int n4)
        return n1 + n2 + n3 + n4;
    
    //int... 表示接受的是可变参数,类型是int,即可以接收多个int(0~n)
    //使用可变参数时,可以当作数组来使用,即nums可以当作数组
    //遍历 nums 求和即可
    public int sum(int... nums)
//        System.out.println("接收的参数个数=" + nums.length);
        int res = 0;
        for (int i = 0;i < nums.length;i++)
            res += nums[i];
        
        return res;
    
    //可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数是在最后
    //一个形参列表中只能有一个可变参数
    public void f2(String str,double... nums)

    


package com.demo.day;

import java.util.Scanner;

public class VarParameterExercise 
    public static void main(String[] args) 
        YshMethod ysh = new YshMethod();
        Scanner sc = new Scanner(System.in);
        System.out.println(ysh.showScore("游书恒",78.5,99,56,56,45,34,65,34,88));
    

class YshMethod 
    public String showScore(String name,double score1,double score2)
        double res = score1 + score2;
        return "姓名:" + name + "\\n两门总分:" + res;
    
    public String showScore(String name,double score1,double score2,double score3)
        double res = score1 + score2 + score3;
        return "姓名:" + name + "\\n三门总分:" + res;
    
    public String showScore(String name,double score1,double score2,double score3,double score4,double score5)
        double res = score1 + score2 + score3 + score4 + score5;
        return "姓名:" + name + "\\n五门总分:" + res;
    

    public String showScore(String name,double... scores)
        double res = 0;
        int num = 0;
        for (int i = 0;i<scores.length;i++)
            res += scores[i];
            num++;
        
        return "姓名:" + name + "\\n" + num + "门总分:" + res;
    


Java中方法内的可变参数怎么使用

Java1.5增加了新特性:可变参数:


适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。


可变参数的特点:

(1)、只能出现在参数列表的最后; 

(2)、...位于变量类型和变量名之间,前后有无空格都可以;

(3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

public class Varable 
 public static void main(String [] args)
  System.out.println(add(2,3));
  System.out.println(add(2,3,5));
 
 public static int add(int x,int ...args)
  int sum=x;
  for(int i=0;i<args.length;i++)
   sum+=args[i];
  
  return sum;
 

参考技术A

Java1.5增加了新特性:可变参数:


适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。


可变参数的特点:

(1)、只能出现在参数列表的最后; 

(2)、...位于变量类型和变量名之间,前后有无空格都可以;

(3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

public class Varable 
 public static void main(String [] args)
  System.out.println(add(2,3));
  System.out.println(add(2,3,5));
 
 public static int add(int x,int ...args)
  int sum=x;
  for(int i=0;i<args.length;i++)
   sum+=args[i];
  
  return sum;
 

参考技术B Java中方法内的包含可变参数的方法
创建一个工程,或者在已有工程中,创建一个包,写一个类,我命名为Parameters,大家随便。
核心就是这个方法, 把参数is理解成一个数组就是了:
private static void function(int... is)
  for (int i = 0; i < is.length; i++)
    System.out.print(is[i]+" ");
  

为了使这个方法更复杂一点点呢,我们可以填一点儿小功能。
比如,我想得到累加值,嘿嘿,很简单的。
方法之初申明一个int类型变量,赋初值为零。for中与数组中每一个值进行累加。如图
好了,写一个很简单的方法测试一下。
main()里面写
function(new int[] 1, 2, 3, 9, 7,);
最后,运行一下结果,很简单的吧?
参考技术C java方法内的可变参数主要是针对于从前台页面传值过来,可变参数接值;
当前台有访问此java类中的某一个方法的同时传过来一个值,可变参数接到值之后进行相应的处理。

以上是关于Java——可变参数的主要内容,如果未能解决你的问题,请参考以下文章

java可变参数

java 可变参数获取参数名

Java 可变参数基本使用

关于Java可变参数问题?

java之可变数组

Java中方法内的可变参数怎么使用