一个类型的问题!

sai_show 2009-01-06 08:52:46
在一个类中有两个方法
一个是:
private int getSomething(byte b)
{
return b;
}

这个在编译时候会报错。

而下面这个

public double getSomething()
{
return 2;
}
这个编译不会报错。

我疑惑的地方
第一个不能通过编译,因为类型不匹配。
但是第二个常量数值2,这个时候它没有写成 2.0。按道理来说应该判定为int型,应该也是类型不匹配,但是为什么不会出现编译报错呢?
对于 这样的常量数值 2,java到底如何去判定它真正属于的数据类型?
...全文
138 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sai_show 2009-01-09
  • 打赏
  • 举报
回复
终于知道了 原来这个题目是一个有错误的问题! 呵呵 现在问题已经解决 感觉大家的参与!
chensjmail 2009-01-08
  • 打赏
  • 举报
回复
研究
Dream_JavaWorld 2009-01-08
  • 打赏
  • 举报
回复
mark
likgui 2009-01-07
  • 打赏
  • 举报
回复
没错误
fzhaojunl 2009-01-07
  • 打赏
  • 举报
回复
private int getSomething(byte b)
{
return b;
}
没有错误啊!
hnnxzhoujia 2009-01-07
  • 打赏
  • 举报
回复
public int getsomenthing(int d)
{
return d;
}
public int getSomenthing(byte b)
{
return b;
}
public static void main(String[] ager){
BEAN a=new BEAN();
System.out.println(a.getsomenthing(8)+"");
System.out.println(a.getSomenthing((byte) 111)+"");

}
没有错误
fjyaihui 2009-01-06
  • 打赏
  • 举报
回复
byte的取值范围是-128到127。
wtmiao000 2009-01-06
  • 打赏
  • 举报
回复
你这么调用。
System.out.println(a.getSomenthing((byte)120)+"");
wtmiao000 2009-01-06
  • 打赏
  • 举报
回复
不知道你的答案全不全,
A、 private int getSomething(int i,String s){}; 不对因为没有返回类型。要加上return

C、 private int getSomething(byte b){return b}; 不对。return b后面没有;号。好了
答案是B、D
sai_show 2009-01-06
  • 打赏
  • 举报
回复
因为测试报错了, 所以我觉得一下子进入了一个迷茫的地方,所以就想明白,如果C 这个选项是错的,就想明白为什么是错的。
不过看大家都在说c 没错 不过我这里没有调试出来 还是报的错。
另外问下,


public class ClassName {

public int getsomenthing(int d)
{
return d;
}
public int getSomenthing(byte b)
{
return b;
}
public static void main(String[] ager){
ClassName a=new ClassName();
//下面这里因为我们基本没用过byte类型的数值,说实话不知道那些是byte类型的,我就按取值范围 丢了120 System.out.println(a.getSomenthing(120)+"");
System.out.println("hallo java");
}


}




sai_show 2009-01-06
  • 打赏
  • 举报
回复
我把整个完整的题目发出吧!
我用的myeclips编译的。是我低年级的一个同学问我的。

题目如下:

给定如下java代码,下列()方法可以加入到Sample类中,并且能够编译正确的。(选二项)
public class Sample{
public int getSomething(int d){
return d;
}

}

A、 private int getSomething(int i,String s){};
B、 public void getSomething(int i,String s){};
C、 private int getSomething(byte b){return b};
D、 public double getSomething(){return 2;};

如果选二项 那肯定B是没错的 因为符合重载的定义也符合方法的定义。
D 是也可以的。 但是我就在想如果D可以那应该C也应该可以啊! 但是C也可以的话 那这个题目就会有问题了。
那就应该有三个对的,后来我就做了测试,我测试C的时候是报了错,我把错发上来。
下面是报错的:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method getSomenthing(byte) in the type ClassName is not applicable for the arguments (int)

at ClassName.main(ClassName.java:44)
老紫竹 2009-01-06
  • 打赏
  • 举报
回复
没错误,如果有就是误报。 呵呵!
ZangXT 2009-01-06
  • 打赏
  • 举报
回复
不会在用JCreator吧?呵呵。
joejoe1991 2009-01-06
  • 打赏
  • 举报
回复
我也没看出问题。。byte做为int返回,应该可以的吧。。
ZangXT 2009-01-06
  • 打赏
  • 举报
回复
private int getSomething(byte b)
{
return b;
}
在我的编译器里不报错。
不知道你用的什么编译器,错误信息是什么?
sai_show 2009-01-06
  • 打赏
  • 举报
回复
谢谢楼上的,
这样的测试我做过了。
比较郁闷的

private double getSomething(int b)
{
return b;
}
这样也可以通过编译。
但是
private int getSomething(byte b)
{
return b;
}
肯定不行

我就想明白 为啥 int b return b 这样不会出现类型不匹配的错误 会自动转换
但是byte 就不能自动转换了
我想知道的为什么两个都是 低容量类型 转高容量类型 不能互转。
而且在 java核心编程思想里面 byte都是放在 整型里面。
所以我这里就跟不理解
xinji84 2009-01-06
  • 打赏
  • 举报
回复
我就纳闷儿,我也没看出有问题
老紫竹 2009-01-06
  • 打赏
  • 举报
回复
没看出来有问题!
yurui05 2009-01-06
  • 打赏
  • 举报
回复
return 2 把常量2赋值给double类型 可以
return b 把变量b赋值给不同的数据类型int 错

你要弄明白楼上的为什么给这个例子

62,614

社区成员

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

试试用AI创作助手写篇文章吧