鱼C论坛

 找回密码
 立即注册
查看: 4454|回复: 5

java的一些简单问题求助

[复制链接]
发表于 2020-10-29 17:25:59 | 显示全部楼层 |阅读模式
30鱼币
第一张的第六题第一个System.out.printf的结果是98
第二张的第二个System.out.printf是80,本来应该是8.0为什么变成80了
第三张的第一个System.out.printf为什么会去到float x,float y哪里去数据类型都不一样把,数字后面没有f,第二个不应该是20吗??
帮帮忙

QQ图片20201029171853.jpg
QQ图片20201029171903.jpg
QQ图片20201029171908.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-29 20:01:18 | 显示全部楼层

super就是父类 传入10和8 调用A的f就是10+9=18 传给m
再m+10*8=18+80=98

实际跑一下,结果就是8.0

                               
登录/注册后可看大图


在有函数重载的情况下,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);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-29 22:49:17 | 显示全部楼层
请看
QQ图片20201029224758.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-29 22:50:25 | 显示全部楼层
mrcrisis 发表于 2020-10-29 20:01

super就是父类 传入10和8 调用A的f就是10+9=18 传给m
再m+10*8=18+80=98

我发了书里的例子,你看下和你对于第三个问题的回答不太一样,书上是说出现歧义则无法通过编译,而你却说会自动匹配相近的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-30 09:23:30 | 显示全部楼层
gzq44 发表于 2020-10-29 22:50
我发了书里的例子,你看下和你对于第三个问题的回答不太一样,书上是说出现歧义则无法通过编译,而你却说 ...

这样子理解 类型会自动匹配 优先级是 int->float->double
所以我的例子是传一个int过去 编译器把他看成了float
在看你的
你没发代码 我估计应该是这样定义的
cry(double, int)
cry(int, double)
然后传两个int进去,但是都是int转double,是第一个转还是第二个转,编译器无法确定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-31 00:37:55 From FishC Mobile | 显示全部楼层
一样的书,敢问实验八写了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表