第八题(重载,类型转换)
来源:互联网 发布:质量分析软件 编辑:程序博客网 时间:2024/06/10 21:24
依然是一个重载的问题,参考第五题
第五题是关于重载中参数个数不同时的匹配问题,而这道题是重载方法中参数类型不同时的匹配问题
先看看程序的运行结果
Wrapper.java:10: 错误: 对于fun(int), 找不到合适的方法
fun(z);
^
方法 Wrapper.fun(Long)不适用
(无法通过方法调用转换将实际参数int转换为Long)
方法 Wrapper.fun(Short)不适用
(无法通过方法调用转换将实际参数int转换为Short)
方法 Wrapper.fun(short)不适用
(无法通过方法调用转换将实际参数int转换为short)
1 个错误
接下来分析问题的本源
看几个段代码
- import java.util.*;
- public class Wrapper{
- public static void fun(int n){System.out.println("int");}
- public static void fun(Short n){System.out.println("SHORT");}
- public static void fun(Long n){System.out.println("LONG");}
- public static void main(String[] args){
- short y = 0;
- int z = y;
- fun(y);
- fun(z);
- }
- }
int
int
short可以优先转型成int
- import java.util.*;
- public class Wrapper{
- //public static void fun(int n){System.out.println("int");}
- public static void fun(Short n){System.out.println("SHORT");}
- public static void fun(Long n){System.out.println("LONG");}
- public static void main(String[] args){
- Integer y = 0;
- //int z = y;
- fun(y);
- //fun(z);
- }
- }
- ~
是由于Integer不能转型成Long型
- import java.util.*;
- public class Wrapper{
- //public static void fun(int n){System.out.println("int");}
- public static void fun(Short n){System.out.println("SHORT");}
- public static void fun(Long n){System.out.println("LONG");}
- public static void main(String[] args){
- int y = 0;
- //int z = y;
- fun(y);
- //fun(z);
- }
- }
int不能转成其他的封装类
结论
1、调用方法时,Java编译器会寻找最精却的匹配方法,如果无法判断哪个是最精却(歧义调用)的就会出现编译错误。
如:max(double,int)和max(int,double)
2、关于类型转换问题
a.char->int->long,short->int-long
b.基本数据类型->包装类
c.包装类之间不能转换
d.基本数据类型优先考虑转换成基本数据类型,如果没有,再考虑转成对应的包装类(只能是对应的,int不能转成Long) 0 0
- 第八题(重载,类型转换)
- 第八题(重载,类型转换)
- 重载与类型转换
- 第八章。指针类型转换
- string重载和类型转换
- 类型转换运算符重载
- 重载类型转换运算符
- (十四)重载与类型转换
- operator 类型转换及重载
- C++ 重载类型转换符
- (类型转换)运算符重载
- 重载运算与类型转换
- 重载+异常处理+类型转换
- operator 类型转换及重载
- 实参类型的强制转换(重载函数的匹配)
- C++中重载强制类型转换
- 类型转换和操作符重载 (c#)
- 怎样重载强制类型转换操作符
- AutoLayout详解
- python的*args和**kwargs用法
- SQL 简单,复杂查询,基本函数查询
- 数据库中慎用float数据类型
- Android UI开发第二十四篇——Action Bar
- 第八题(重载,类型转换)
- 如何写软件设计文档
- leetcode-125 Valid Palindrome
- Xcode 报错 ERROR ITMS-90096
- 线程、更新主线程UI的其它方法
- Git Clone时报 "fatal: index-pack failed error: RPC failed; result=18, HTTP code = 200"
- JQuery处理json与ajax返回JSON实例
- Elasticsearch之Nested Object Mapping
- EL表达式