public class p
{
public static void main(String[]args)
{
char g='k';
char j='l';
char b=j+g;
为什么这要转型呢?而
char v='l'+'k';
不需要呢

解决方案 »

  1.   

    没有转型啊char b=j+g; char v='l'+'k';这两个没什么区别吧
      

  2.   

    'k' 才是char类型 char g='k';
    char j='l';
    char b=j+g;  g、j是char类型 所以不用转 char v='l'+'k';  ‘l’是g, ‘k’相当于j 所以不用转 2种方式都没有转 只是char v='l'+'k';  这种方式 或者char b=j+g; 超过char数据类型的最大长度后会强制转型
      

  3.   

    char b=j+g;
     j是char类型  g是char类型  两者都咱有 char的内存空间 加起来就有可能是两个char的空间,所以不能
    而char v='l'+'k'; 系统会把他们加起来 组成一个char类型赋值给V  
      

  4.   

    这里面不存在转型的问题吧。
    char g='k';
    char j='l';
    char b=j+g;
    char v='l'+'k'
    'k','l'是char型,j和g也是char型,b=j+k;所以直接将j和gASCII码对应值加起来的值所对应的字符赋给b。而char v='l'+'k';同理,是将字符赋给v。不存在转型啊
      

  5.   

      我认为 char b=j+g; 是对j和g字符所对应的ascll码进行了运算 结果为int型;
      而char v='l'+'k' 则是匹配l与k相加后的字符...
      

  6.   

    j和g是字符变量,字符变量不能直接相加,用C++的说法是两个char类型相加需要重载运算符“+”;
     字符字面量可以直接相加,等同于数字相加。
      

  7.   

    我明白楼主的意思了,我试了,char b=j+g;这句编译通不过,说有精度损失。必须得这样用char b=(char)(j+g);因为char b=j+g;中,java语言会将j和g先转换成int型,j+k的结果是int型,你要将一个int型变量赋给一个char型变量,存在精度损失。必须先将它转换成char型才可以赋值。而char v='l'+'k';中'l'+'k'过程不转换类型,结果还是char型,直接赋值即可
     
      

  8.   

    byte char short类型的数据进行运算时要先转换为int 型才会参与运算而且结果也是int型,所以要进行强制类型转换
      

  9.   

    强制转换一下就好了。、
    class A{
    public static void main(String args[]){
    char a='k';
    char b='l';
    char c=(char)(a+b);
    char d='k'+'l';
    System.out.println(c);
    System.out.println(d);
    }
    }
      

  10.   

    ‘l'+'k'是用其对应的ASCII码进行相加的,不是已转换成int型了吗
      

  11.   

    'l'+'k'与j+g不是都是用其对应的ASCII码进行相加的吗