哥,真报错了!

allysniper 2010-03-10 03:37:08
为什么

public class B
{
public int b(int x,long y){return 1;}
public double b(double x,int y){return 1;}
public static void main(String[] args)
{
System.out.println(new B().b(3,3));
}
}

这段代码报错.


public class B
{
public int b(long y){return 1;}
public double b(double y){return 1;}
public static void main(String[] args)
{
System.out.println(new B().b(3));
}
}

这段代码不报错?求解...!!!
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huajia136651 2010-03-10
  • 打赏
  • 举报
回复
楼主真厉害,能想出这种问题来。佩服。果然NB
hjh811 2010-03-10
  • 打赏
  • 举报
回复
引用 6 楼 zhouyongyang621 的回复:
public int b(int x,long y){return 1;}
    public double b(double x,int y){return 1;}

如果你改成
public int b(int x,int y){return 1;}
    public double b(double x,int y){return 1;}
就没问题,,

就是说如果两个方法中的二个参数必须是有一个大小之分,,,
像你写的二个方法 int < double ,而long > int 这个时候JVM就不知道是应该执行哪个,,
JVM默认是执行范围小的.......

二个方法中的参数必须满足 a.参数1 > b.参数1 且a.参数2 >= b.参数2
re~~正解~~
梦_枫 2010-03-10
  • 打赏
  • 举报
回复
我所说的是参数的范围大小。。。。
梦_枫 2010-03-10
  • 打赏
  • 举报
回复
public int b(int x,long y){return 1;}
public double b(double x,int y){return 1;}

如果你改成
public int b(int x,int y){return 1;}
public double b(double x,int y){return 1;}
就没问题,,

就是说如果两个方法中的二个参数必须是有一个大小之分,,,
像你写的二个方法 int < double ,而long > int 这个时候JVM就不知道是应该执行哪个,,
JVM默认是执行范围小的.......

二个方法中的参数必须满足 a.参数1 > b.参数1 且a.参数2 >= b.参数2
princess_rosie 2010-03-10
  • 打赏
  • 举报
回复
System.out.println(new B().b(3,3)); 报错是因为
你这句表达式里的两个3没有指明类型,而通常情况下单独输入一个数字,则虚拟机自动将其转型为int,但是却没有相应的两个都是int类型的参数,它找到一个方法输入的两个参数类型不一样,所以虚拟机也蒙了,不要认为工具是万能的,,你或者可以改代码为
System.out.println(new B().b(int 3,long 3)); 这样参数类型就可以对号入座,
而你下面那个之所以执行不报错是因为,3除了是Int,也可以是double , long, 所以当它找到了一个可以对号入座的方法时,随即执行.
allysniper 2010-03-10
  • 打赏
  • 举报
回复
我当然知道指明类型就可以不报错,我只是想知道产生这个现像的正确解释
allysniper 2010-03-10
  • 打赏
  • 举报
回复
有歧义为什么第二个不报错了?
newarraylist 2010-03-10
  • 打赏
  • 举报
回复
有歧义,3可以是int型,可以是long,可以是double,可以是short,可以是byte
soli11722984 2010-03-10
  • 打赏
  • 举报
回复
你指明一下传入的参数的类型好吧

62,568

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告