public class Test{
public static void main(String[] args){


int i=1;
char ch='f';
float c=1.2f;

System.out.println(ch+i+c);




}
}
为什么执行结果为104.2;
而不是f11.2;

解决方案 »

  1.   

    字符和数字相加是先把字符转化为相应的ascii码再相加
      

  2.   

    因为char会自动转换成int与i进行计算
    你如果想输出f11.2
    改为
            System.out.println(String.valueOf(ch)+i+c);
      

  3.   

    public class Test {
        public static void main(String[] args) {
            int i = 1; 
            char ch = 'f'; 
            float c = 1.2f; 
            System.out.println("输出结果是:" + ch + i + c);      
        }
    }这样输出就是 f11.2 了,因为在字符串采用 + 时,内部采用的是 StringBuilder 来操作的,
    把后面都当成是字符串了。
    内部的操作可以描述成:
    new StringBuilder().append("输出结果是:").append(ch).append(i).append(c).toString();public class Test {
        public static void main(String[] args) {
            int i = 1; 
            char ch = 'f'; 
            float c = 1.2f; 
            System.out.println("输出结果是:" + (ch + i + c));
        }
    }把后面的加个括号,提高计算的优先级别,这样就先计算括号内的,结果还是 104.2 了。char 类型在内部是个数值类型,进行算术运算时,采用这个字符的 Unicode 码值来映射数值。
    'f' 的 Unicode 值是 U+0066 即十进制的 102,就是采用这个值进行计算。ch + i + c
    ch + i 后,由于 int 的类型比 char 类型的数据范围更宽,就自动提升为 int 类型
    再与 c 进行计算,前面的计算结果会自动提升为 float 类型,再与这个 float 进行计
    算并得出结果。
      

  4.   

    楼上说的很细,偶继续废话:
    ch->int 导致 'f'->102
    然后 int-> float
    最后导致:
    104.2
      

  5.   

    f11.2是这么来的
    System.out.println("输出结果是:" + ch + i + c);