回 帖 发 新 帖 刷新版面

主题:请大虾分析一下 类型强制转换  急!

public class TestConvert{
    public static void  main (String []args){
    char c1 = 'a',c2 = 125;
        byte b = (byte)(c1+c2-1);
        char c = (char)(c1+c2-1);
        System.out.println(b);
        System.out.println(c);

    }
}

请高手分析一下具体是怎么 强制转换的
输出的结果是 -35 和 ?

回复列表 (共2个回复)

沙发


  
          兄弟,注意赋值的时候[color=FF0000][size=2]不要超出范围[/size][/color]就没问题啦!
          
          试试改一下:
                        char c1 = 'B',c2 = 50;

板凳


应该注意的是,在 byte b = (byte)(c1+c2-1);中)(c1+c2-1)是一个整型int值(这是java的规定),当强制转换时,(c1+c2-1)的值可能已经超出了byte类型的范围,故转换失去精确度,结果是负数也不奇怪;在char c = (char)(c1+c2-1);中同样道理!

我来回复

您尚未登录,请登录后再回复。点此登录或注册