联系博主          博客地图
           

请教一个关于char的问题

Posted on 2007-11-15 10:49 怎么羡慕天空的飞鸟 阅读(411) 评论(6)  编辑  收藏 所属分类: java
    下面的程序段会输出什么?知道原因的请说明,谢谢
    
public class test {
 
    
public void func(int i){
        System.out.println(
"invoke int");
    }

    
public void func(String i){
        System.out.println(
"invoke String");
    }

    
public void func(byte i){
        System.out.println(
"invoke byte");
    }

    
    
public static void main(String []arg){
    test test1
=new test();
    
char a='a';
    test1.func(a);
    }

}


    核心: 勇敢进取年轻的心

 

Feedback

# re: 请教一个关于char的问题  回复  更多评论   

2007-11-16 10:35 by 千里冰封
当然是int了

# re: 请教一个关于char的问题  回复  更多评论   

2007-11-20 13:27 by kenzhang
输出的结果是“invoke int”。

# re: 请教一个关于char的问题  回复  更多评论   

2007-11-20 21:53 by 怎么羡慕天空的飞鸟
请谈谈你们的看法啊,为什么会输出"invoke int"呢?
我是从默认数据类型转换和内存实际存放数据的形式考虑的,感觉不是很正确,请高手指点

# re: 请教一个关于char的问题  回复  更多评论   

2007-11-21 09:50 by lk
首先,感谢你的回复!过来打个招呼顺便给点意见。


程序调用public void func(int i)方法,打印invoke int

原因:java的8种基本类型中short 、 int 、 long 、 float 、 double 、 char 之间可以互相转换,但有时需要强制转换并且会损失精度,如果你print i , i的值= char型的ASCII 值,如果int等数字型转char型 那char型返回的就是该int值对应编码值的字符,具体编码方式我还不清楚 int 从19968开始输出的char就是汉字 。
boolean和 byte 于其他类型的转换没用过也没有研究。
如果还问为什么那只能告诉你这是规定,java的规定,“规定”懂不懂,就是王8的屁股^o^……开个玩笑!
你要是非要刨根问底,那就找点java基础的书看一看,再不行就去sun的官方网站去留言(要用英文),sun的技术人员一定知道!
如果你找到了boolean和 byte 于其他类型的转换别忘了给我发一份!

我的意见就这样了,祝你好运!

# re: 请教一个关于char的问题  回复  更多评论   

2007-11-21 16:27 by 怎么羡慕天空的飞鸟
@lk
兄弟挺幽默啊!
boolean:
boolean型变量不同与其它基本数据类型变量,也就是说这种数据类型不能强制转化成其它数据类型,而且其他数据类型也不能强制转化成boolean型。
byte:
byte和short、int同是整型数据类型,不同的是byte类型占内存空间1字节(8个二进制位),short类型占内存空间2个字节(16个二进制位),int占4字节(32个二进制位)
我也就知道这么点,它们存储的长度不同。

# re: 请教一个关于char的问题  回复  更多评论   

2008-01-12 04:42 by say
呵呵~~有意思,期待完美的答案~!

只有注册用户登录后才能发表评论。


网站导航:
 

Copyright © 怎么羡慕天空的飞鸟