public class MyTest {
public long sayChar(long c){
System.out.println(c+" is long");
return c;
}
public int sayChar(int c){
System.out.println(c+" is int");
return c;
}
public static void main(String[] args){
char c='a';
MyTest mt=new MyTest();
mt.sayChar(c);
System.out.println(mt.sayChar(c));
}
}输出结果
97is a int
97is a int
97为什么将c传过去 被判断为int ?????????????
public long sayChar(long c){
System.out.println(c+" is long");
return c;
}
public int sayChar(int c){
System.out.println(c+" is int");
return c;
}
public static void main(String[] args){
char c='a';
MyTest mt=new MyTest();
mt.sayChar(c);
System.out.println(mt.sayChar(c));
}
}输出结果
97is a int
97is a int
97为什么将c传过去 被判断为int ?????????????
基本数据类型可以从地精度隐式转换成高精度的数据
你的char 类型可以范围明显低于int和long所以它即能转化成int也能转换成long char中的a转换成基本数据类型,其数值型就是97 ,是int类型,
而int类型可以隐式转换成long类型!
不会被传入 参数为long的方法中
这个说的对。mt.sayChar(c);
这句打印出 “97is a int”;System.out.println(mt.sayChar(c));
括号内先 打印出 “97is a int”,后回返回一个97,
也就相当于 “System.out.println(97);”
java中在运算的时候char、byte、short自动转换为int。
这个是正确的,int转换成long也是隐式转换
这个对,char是不能自动转为long类型的,可以自动转为int类型
public chae sayChar(char c)
{
system.out.println(c + "is char");
return c;
}
public class MyTest {
public long sayChar(long c){
System.out.println(c+" is long");
return c;
}
public static void main(String[] args){
char c='a';
MyTest mt=new MyTest();
mt.sayChar(c);
System.out.println(mt.sayChar(c));
}
}
97 is long
97 is long
97
上面的运行结果说明调用sayChar()时,会首先查找是否有sayChar(char c),若有的话会调用它,若没有则把char转换成其他类型,首先当然是int型,若没有的话还可以进一步转化为long