gpt4 book ai didi

Java - 重载方法的奇怪任务

转载 作者:行者123 更新时间:2023-12-01 10:08:57 25 4
gpt4 key购买 nike

我有一个任务应该检查我是否理解重载方法...

但是这个任务让我更加困惑

这个事实的解释是什么?

    bar(i,c);
bar(l,c);

输出:

II
DL

是否有解决此类任务的方案、规则?

public class Foo{

static void bar(int a, double b){
System.out.println("ID");
}

static void bar(int a, int b){
System.out.println("II");
}

static void bar(double a, long b){
System.out.println("DL");
}

static void bar(float... a){
System.out.println("FS");
}

static void bar(int a, byte b){
System.out.println("IB");
}

static void bar(double a, double b){
System.out.println("DD");
}
public static void main(String[] args) {


int i=0;
long l =0;
float f=0;
double d=0;
char c='0';
bar(i,f);
bar(d,i);
bar(i,c,i);
bar(i,c);
bar(l,c);

}

}

最佳答案

如果有一个函数采用long作为参数,但没有一个函数采用long,并且提供了一个int ,那么 int 会自动提升long 类型。

如果有一个函数采用 double 作为参数,但没有函数采用 double,并且提供了 long ,那么 long 就会自动提升double 类型。请注意,此转换可能导致精度丢失:并非所有超过 2 的 53 次方的整数都可以用 double 精确表示。

当然,这些规则适用于采用多个参数的函数,并解释您所观察到的输出。

关于Java - 重载方法的奇怪任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com