黑马程序员技术交流社区

标题: 分析一下为什么这四个语句不同吧 [打印本页]

作者: 小洋人最happy    时间: 2012-12-6 14:45
标题: 分析一下为什么这四个语句不同吧
class lianxi
{
public static void main(String[] args)
{
  System.out.println('a'+1);
  System.out.println(""+'a'+1);
  System.out.println(""+"ab"+1);
  System.out.println(""+"a"+1);
}
}

作者: 黑马_张伟    时间: 2012-12-6 14:51
第一个是将字符a的ASCII码97与1相加,然后再转换成字符串打印。之后的都是空字符串与后面的内容相加,字符串的+是将后面的视为字符串然后进行连接操作打印。结果应该是,98,a1,ab1,a1
作者: 李桐    时间: 2012-12-6 14:52
System.out.println('a'+1);//指向ascii码+1=98
  System.out.println(""+'a'+1);//有个"",先变成了字符串所以是a1,你如果把""放到后面就又会变成98
  System.out.println(""+"ab"+1);
  System.out.println(""+"a"+1);//最后两个都是字符串+字符串+1
作者: netboy032    时间: 2012-12-6 15:15
第一个:由于1它默认为int型,所以是char类型和int型相加,char类型自动转化为int型的值,a对应的ascii值为97,所以最终值为98;
第二个:string类型先和char型相加,得到string型的"a",然后再与1相加,string型和int型使用"+"符号的话,这个符号就是连接符,不是加号。所以值为a1
第三个:值为ab1,原因同上
第四个:a1,原因同上
作者: 胡高德    时间: 2012-12-6 19:10
class lianxi
{
public static void main(String[] args)
{
   System.out.println('a'+1);//先将a对应的ASCII码97与1相加,再打印,结果为98
   System.out.println(""+'a'+1);//""相当与一个空的字符串,用+号衔接后边的内容。结果是a1
   System.out.println(""+"ab"+1);//""相当与一个空的字符串,用+号衔接后边的内容。结果为ab1
   System.out.println(""+"a"+1);//""相当与一个空的字符串,用+号衔接后边的内容。结果为a1
}
}
作者: 杨从强    时间: 2012-12-7 00:22
这四个语句其实是关于单引号与双引号的问题。
class lianxi
{
public static void main(String[] args)
{
  System.out.println('a'+1);**********1单引号转换为ascii对应的数字然后参加运算----相加
  System.out.println(""+'a'+1);*******2这个双引号在前后面的就直接参加字符串的运算了----连接
  System.out.println(""+"ab"+1);*****同2
  System.out.println(""+"a"+1);******同3
}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2