Java中的重载方法 类重载{ 公共静态void main(字符串参数[]){ int[]数={1,2,3,4,5,6,7,8,9,10}; int[]num={1,2,3,4,5}; int i; 整数和=0; 总和=f(数); int sum1=f(num); System.out.println(“总和为“+sum+”); System.out.println(“总和为“+sum1+”); } 公共静态int f(int[]值){ int i,总计=0; 对于(i=0;i

Java中的重载方法 类重载{ 公共静态void main(字符串参数[]){ int[]数={1,2,3,4,5,6,7,8,9,10}; int[]num={1,2,3,4,5}; int i; 整数和=0; 总和=f(数); int sum1=f(num); System.out.println(“总和为“+sum+”); System.out.println(“总和为“+sum1+”); } 公共静态int f(int[]值){ int i,总计=0; 对于(i=0;i,java,methods,overloading,Java,Methods,Overloading,您的编译器认为将变量参数作为参数的方法可能与将数组作为参数的方法相同。也就是说,它认为存在具有相同数量参数的重复方法,这与重载规则相反 public void m1(int[] arr){ } public void m1(int...i){ } 唯一的区别是var args可以接受任意数量的int变量您的编译器认为将变量参数作为参数的方法可能与将数组作为参数的方法相同。也就是说,它认为存在重复cate方法具有相同数量的参数,这与重载规则相反 public void m1(int[] a

您的编译器认为将变量参数作为参数的方法可能与将数组作为参数的方法相同。也就是说,它认为存在具有相同数量参数的重复方法,这与重载规则相反

public void m1(int[] arr){

}

public void m1(int...i){

}

唯一的区别是var args可以接受任意数量的int变量您的编译器认为将变量参数作为参数的方法可能与将数组作为参数的方法相同。也就是说,它认为存在重复cate方法具有相同数量的参数,这与重载规则相反

public void m1(int[] arr){

}

public void m1(int...i){

}
public static int f(int... x)
基本相同。唯一的区别是var args可以接受任意数量的int变量

public static int f(int... x)
只是:-

public static int f(int[] x)
唯一的区别是,它不一定需要传递参数。当传递单个元素时,它们会在内部转换为数组。因此,实际上只传递一个
数组

而后者需要一个参数,至少是一个空数组

如果将数组作为参数传递,则这两个方法都可以被调用

因此,呼吁:

f(new int[] {1, 2});
这两种方法都可以。因此,存在歧义


但是,
f(5)
只能对第一个方法进行调用。因为,
5
不能分配给数组类型。 因此,只有在传递数组时才会出现歧义

只是:-

public static int f(int[] x)
唯一的区别是,它不一定需要传递参数。当传递单个元素时,它们会在内部转换为数组。因此,实际上只传递一个
数组

而后者需要一个参数,至少是一个空数组

如果将数组作为参数传递,则这两个方法都可以被调用

因此,呼吁:

f(new int[] {1, 2});
这两种方法都可以。因此,存在歧义


但是,
f(5)
只能对第一个方法进行调用。因为,
5
不能分配给数组类型。
因此,只有在传递数组时才会出现歧义。

方法签名是相同的。因此不可能重载。请更改方法签名

Java中有一个方法签名的定义

在Java编程语言中,方法签名是方法名称及其参数的数量和类型。返回类型和抛出的异常不被视为方法签名的一部分


在您的代码中,有两个方法具有相同的签名
f(int[]值)
。另一个函数使用
int..
作为参数,但它相当于
int[]
方法签名是相同的。因此不可能重载。请更改方法签名

Java中有一个方法签名的定义

在Java编程语言中,方法签名是方法名称及其参数的数量和类型。返回类型和抛出的异常不被视为方法签名的一部分


在您的代码中有两个具有相同签名的方法
f(int[]值)
。另一个函数使用
int..
作为参数,但它相当于
int[]

方法重载是java的一项功能,它允许您使用多个具有相同名称但不同参数列表的方法

方法重载也称为静态多态性

Argument list must be differ 
 1) Numbers of Parameters "not the same parameters"
 2) Data type of parameters "does not have the same datatype of parameters" 
 3) Sequence of Datatype of parameters "its may be possible to change the sequence the of datatype."
方法重载具有相同的参数,那么它必须是不同的返回类型

 public class Test
 {

   public int printVal(int i,int j)
   {
     System.out.println("Integer Return type")
      return i*j;
   }

   public double printVal(int i,int j)
   {
     System.out.println("Double Return type")
      return i*j;
   }

 }
在上面的类中,我们有两个方法,一个是int返回类型,另一个是double返回类型,因此可以在方法重载中使用

数据类型的顺序它的意思是

public class Test
{
  public void display(String surname ,String name)
  {
     System.out.println("Surname = "+surname);
     System.out.println("Name    = "+name);

  }

  public void display(String name,String surname)
  {

     System.out.println("Name    = "+name);
     System.out.println("Surname = "+surname);

  }
}

在上面的示例中,我们有两个方法作为相同的数据类型,但其顺序不同。这种情况也称为方法重载。

方法重载是java的一项功能,它允许您使用多个具有相同名称但不同参数列表的方法

方法重载也称为静态多态性

Argument list must be differ 
 1) Numbers of Parameters "not the same parameters"
 2) Data type of parameters "does not have the same datatype of parameters" 
 3) Sequence of Datatype of parameters "its may be possible to change the sequence the of datatype."
方法重载具有相同的参数,那么它必须是不同的返回类型

 public class Test
 {

   public int printVal(int i,int j)
   {
     System.out.println("Integer Return type")
      return i*j;
   }

   public double printVal(int i,int j)
   {
     System.out.println("Double Return type")
      return i*j;
   }

 }
在上面的类中,我们有两个方法,一个是int返回类型,另一个是double返回类型,因此可以在方法重载中使用

数据类型的顺序它的意思是

public class Test
{
  public void display(String surname ,String name)
  {
     System.out.println("Surname = "+surname);
     System.out.println("Name    = "+name);

  }

  public void display(String name,String surname)
  {

     System.out.println("Name    = "+name);
     System.out.println("Surname = "+surname);

  }
}

在上面的示例中,我们有两个方法作为同一数据类型,但其顺序不同。这种情况也被称为方法重载。

这并不是对varargs的很好的描述。它不像是一个可选参数-它是一个数组参数,其中的值可以单独指定。为了详细说明,Java将varargs转换为数组h封面,你不能有两个名称和签名相同的方法。@JonSkeet..是的,这是正确的。我编辑了我的帖子,引用了这一部分。@RohitJain brother你能给出正确的运行程序编码吗?因为当我调用f(5)它仍然给我error@Praveen..您将无法运行该代码,因为它根本不会编译。即使它适用于
f(5)
,也不能确定您是否不会使用
array
参数来调用该方法。因此,它被视为重复方法。请尝试删除每个方法,然后调用
f(5)