如何在 Java 中打印不同的参数多态方法?
How to print different parametric-polymorphic methods in Java?
我已经声明了三个同名的方法 "sum" 目的是为了简单地演示参数多态性是如何工作的,但我不知道如何分别调用每个方法,这是什么我想帮忙。
我怎样才能调用每个方法并知道我在调用哪个方法?
我已经尝试了一个简单的 System.out.println(sum(2,3));
which returns 5 但是如果我将其中一个数字设置在整数范围之外我会得到一个错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 3000000000 of type int is out of range
at codeTester.main.main(main.java:30)
/*
Author: Maxim Wilmot
Created: 18/04/2019
Polymorphism - Parametric
*/
package codeTester;
public class main {
//integer between -2 147 483 648 and 2 147 483 647
public static int sum(int a, int b) {
return a + b;
}
//decimal between -3,4.10^38 and 3,4.10^38
public static float sum(float a, float b) {
return a + b; //
}
//decimal between -1,7.10^308 and 1,7.10^308
public static double sum(double a, double b) {
return a + b;
}
public static void main(String args[]) {
System.out.println(sum(2,3)); //call a method, which one ?
}
}
我想要 3 种不同的输出,每种方法 1 种。那可能吗 ?可能为每种方法计算不同的数字?
感谢您的帮助,
最大
方法重载(编译时多态性)在 java 中基于方法签名(即方法名称、参数类型和参数顺序)工作。
在您的情况下,字面值为 3000000000,则该值位于长数据范围内。
在java中,如果声明字面值大于2 147 483 647,则应在字面后加上字母'l'或'L.
因此将您的参数作为 3000000000L 或 3000000000l 与另一个 int 参数一起传递,然后将调用 float 参数方法(这将通过参数的向上转换来完成)
对于原始类型,向上转换的工作方式如下。
byte -> short -> int -> long -> float -> double
对于下一行
System.out.println(sum(3000000000L, 3));
你会得到答案
3.0E9
此输出将由 float 参数类型方法生成。
我已经声明了三个同名的方法 "sum" 目的是为了简单地演示参数多态性是如何工作的,但我不知道如何分别调用每个方法,这是什么我想帮忙。 我怎样才能调用每个方法并知道我在调用哪个方法?
我已经尝试了一个简单的 System.out.println(sum(2,3));
which returns 5 但是如果我将其中一个数字设置在整数范围之外我会得到一个错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 3000000000 of type int is out of range
at codeTester.main.main(main.java:30)
/*
Author: Maxim Wilmot
Created: 18/04/2019
Polymorphism - Parametric
*/
package codeTester;
public class main {
//integer between -2 147 483 648 and 2 147 483 647
public static int sum(int a, int b) {
return a + b;
}
//decimal between -3,4.10^38 and 3,4.10^38
public static float sum(float a, float b) {
return a + b; //
}
//decimal between -1,7.10^308 and 1,7.10^308
public static double sum(double a, double b) {
return a + b;
}
public static void main(String args[]) {
System.out.println(sum(2,3)); //call a method, which one ?
}
}
我想要 3 种不同的输出,每种方法 1 种。那可能吗 ?可能为每种方法计算不同的数字?
感谢您的帮助, 最大
方法重载(编译时多态性)在 java 中基于方法签名(即方法名称、参数类型和参数顺序)工作。
在您的情况下,字面值为 3000000000,则该值位于长数据范围内。
在java中,如果声明字面值大于2 147 483 647,则应在字面后加上字母'l'或'L.
因此将您的参数作为 3000000000L 或 3000000000l 与另一个 int 参数一起传递,然后将调用 float 参数方法(这将通过参数的向上转换来完成)
对于原始类型,向上转换的工作方式如下。
byte -> short -> int -> long -> float -> double
对于下一行
System.out.println(sum(3000000000L, 3));
你会得到答案
3.0E9
此输出将由 float 参数类型方法生成。