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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余银桂 中级黑马   /  2012-6-12 22:27  /  1636 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余银桂 于 2012-6-12 23:38 编辑
  1. class Test2
  2. {
  3.         void test(int i){
  4.                 System.out.println( " int " );
  5.         }
  6.         void test( String s ){
  7.                 System.out.println( " String " );
  8.         }
  9.         public static void main(String[] args){
  10.                
  11.                 Test2 t = new Test2();
  12.                 char ch = 'y';
  13.                 t.test(ch);
  14.         }
  15. }
复制代码
目测一下,你们认为答案应该是什么?
我被目测给打败了!
谁对这种玩意比较在行的,指点一下迷津!!!

6 个回复

倒序浏览
int ,因为int和char都是基本数据类型,相互间根据ASCII可以转换
回复 使用道具 举报
潘东升 发表于 2012-6-12 22:31
int ,因为int和char都是基本数据类型,相互间根据ASCII可以转换

有没有一些详细的转换资料!
回复 使用道具 举报
本帖最后由 薄炳鑫 于 2012-6-12 22:46 编辑

我目测的结果是y所对应的ascii码的值,因为char和int都是基本数据类型可以相互转换。
java中基本数据类型的相互转换的链接。http://www.wlcmx.cn/showart.asp?id=74
回复 使用道具 举报
楼上给的链接很有用,{:soso_e179:}
回复 使用道具 举报
  1. public class Test2
  2. {
  3.         void test(int i){
  4.                 System.out.println( " int " );
  5.         }
  6.         void test( String s ){
  7.                 System.out.println( " String " );
  8.         }
  9.         void test(char c){
  10.                 System.out.println("char");
  11.         }
  12.         public static void main(String[] args){
  13.                
  14.                 Test2 t = new Test2();
  15.                 char ch = 'y';
  16.                 t.test(ch);
  17.         }
  18. }
复制代码
我在你的代码中加入了一个char参数的重载方法,然后再运行代码结果就打印出了char。因为Java中有一种自动向上转型的机制,基本类型数据可以从一个较小的类型自动提升为一个较大的类型。。当有方法重载的时候,如果没有找到与该参数匹配的就会向上转型,所以当没有char型的参数当然打印int了!!
回复 使用道具 举报
本帖最后由 梁清平 于 2012-6-12 23:23 编辑

楼主有什么不明白啊。。。
分析一下吧。。。这个问题涉及到两个知识点:
1.重载。。
2.基本类型数据运算时相互转换

重载意味着程序在运行时会根据参数的个数以及类型不同选择相对应的方法。
这个小程序中你传了一个char类型的参数进来一定是调用接收int型参数的方法。。
这里涉及到基本数据类在运算时。。byte short char会自动提升为int型。
这里实际上是这样的表达式 int i = 'y'。。。这样的话还有什么不解吗?
public static void main(String[] args){        
       Test2 t = new Test2();
       char ch = 'y';
        t.test(ch);
   }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马