java的一些简单问题求助
第一张的第六题第一个System.out.printf的结果是98第二张的第二个System.out.printf是80,本来应该是8.0为什么变成80了
第三张的第一个System.out.printf为什么会去到float x,float y哪里去数据类型都不一样把,数字后面没有f,第二个不应该是20吗??
{:10_263:} 帮帮忙
一
super就是父类 传入10和8 调用A的f就是10+9=18 传给m
再m+10*8=18+80=98
二
实际跑一下,结果就是8.0
https://s1.ax1x.com/2020/10/29/BJwujO.png
三
在有函数重载的情况下,java编译器会自动选择最匹配的函数进行调用
class B {
void f(float x){
System.out.println(1);
}
void f(double x){
System.out.println(2);
}
}
public class E {
public static void main(String[] args) {
B b = new B();
b.f(3);
}
} 请看 mrcrisis 发表于 2020-10-29 20:01
一
super就是父类 传入10和8 调用A的f就是10+9=18 传给m
再m+10*8=18+80=98
我发了书里的例子,你看下和你对于第三个问题的回答不太一样,书上是说出现歧义则无法通过编译,而你却说会自动匹配相近的 gzq44 发表于 2020-10-29 22:50
我发了书里的例子,你看下和你对于第三个问题的回答不太一样,书上是说出现歧义则无法通过编译,而你却说 ...
这样子理解 类型会自动匹配 优先级是 int->float->double
所以我的例子是传一个int过去 编译器把他看成了float
在看你的
你没发代码 我估计应该是这样定义的
cry(double, int)
cry(int, double)
然后传两个int进去,但是都是int转double,是第一个转还是第二个转,编译器无法确定 一样的书,敢问实验八写了吗
页:
[1]