在一个类中有两个方法
一个是:
private int getSomething(byte b)
{
return b;
}这个在编译时候会报错。而下面这个public double getSomething()
{
return 2;
}
这个编译不会报错。我疑惑的地方
第一个不能通过编译,因为类型不匹配。
但是第二个常量数值2,这个时候它没有写成 2.0。按道理来说应该判定为int型,应该也是类型不匹配,但是为什么不会出现编译报错呢?
对于 这样的常量数值 2,java到底如何去判定它真正属于的数据类型?
一个是:
private int getSomething(byte b)
{
return b;
}这个在编译时候会报错。而下面这个public double getSomething()
{
return 2;
}
这个编译不会报错。我疑惑的地方
第一个不能通过编译,因为类型不匹配。
但是第二个常量数值2,这个时候它没有写成 2.0。按道理来说应该判定为int型,应该也是类型不匹配,但是为什么不会出现编译报错呢?
对于 这样的常量数值 2,java到底如何去判定它真正属于的数据类型?
return b 把变量b赋值给不同的数据类型int 错你要弄明白楼上的为什么给这个例子
这样的测试我做过了。
比较郁闷的private double getSomething(int b)
{
return b;
}
这样也可以通过编译。
但是
private int getSomething(byte b)
{
return b;
}
肯定不行我就想明白 为啥 int b return b 这样不会出现类型不匹配的错误 会自动转换
但是byte 就不能自动转换了
我想知道的为什么两个都是 低容量类型 转高容量类型 不能互转。
而且在 java核心编程思想里面 byte都是放在 整型里面。
所以我这里就跟不理解
{
return b;
}
在我的编译器里不报错。
不知道你用的什么编译器,错误信息是什么?
我用的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)
不过看大家都在说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");
}
}
A、 private int getSomething(int i,String s){}; 不对因为没有返回类型。要加上returnC、 private int getSomething(byte b){return b}; 不对。return b后面没有;号。好了
答案是B、D
System.out.println(a.getSomenthing((byte)120)+"");
{
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)+"");
}
没有错误
{
return b;
}
没有错误啊!