A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁青松 黑马帝   /  2012-1-13 21:02  /  1958 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

void f(char x){
}
void f(int x){
}
void f(long x){
}
2个方法,当我们传入char x = ‘x’时,会出现什么情况?请再分析下原因。如果此时定义int x =5,或long x =5,会出现什么情况?

4 个回复

倒序浏览
传入对应类型的数据,就会调用对应类型的方法。
如你传入char类型的数据,就会调用参数类型为char的那个方法,而传入int类型的数据时,就会调用参数类型为int型的方法。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
宋双 发表于 2012-1-13 21:13
传入对应类型的数据,就会调用对应类型的方法。
如你传入char类型的数据,就会调用参数类型为char的那个方 ...

我只是偶尔想到这会不会和类型转换有关系。。。。
回复 使用道具 举报
本帖最后由 Simple 于 2012-1-14 00:08 编辑

重载就是一个方法名,但传入的参数不同。
方法1:void f(char x){}
方法2:void f(int x){}
方法3:void f(long x){}
你给出的三个方法,当调用f方法时,传入的参数是char就调用方法1。
传入int就调用方法2.  传入long 就调用方法3, 与类型转换无关、

f(8);               //int型
f((long)8.0f);  //long型
f((char)97);    //char型

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
public class Test2 {
        public static void main(String[] args) {
                f(5);
                f('a');
                f("a");
                f(2.5);
        }
        public static void f(Integer a){
                System.out.println(a.getClass());
        }
        public static void f(Character a){
                System.out.println(a.getClass());
        }
        public static void f(String a){
                System.out.println(a.getClass());
        }
        public static void f(Double a){
                System.out.println(a.getClass());
        }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马