A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燕国庆 高级黑马   /  2012-10-9 09:12  /  2749 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燕国庆 于 2012-10-23 17:41 编辑

System.out.println(10+‘b’)与System.out.println(10+“b”)有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

12 个回复

倒序浏览
本帖最后由 qhasilver 于 2012-10-9 09:26 编辑

1.单引号里的数据是char类型,双引号里的数据是String类型的
2.单引号里只允许有一个字符,双引号里可以有0个或以上字符
3. char类型与int类型做运算时,char自动转换为ascii码后与int进行运算

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
System.out.println(10+‘b’)
char、byte、short与int计算的时候,类型会提升为int,
结果是'b'的ASCII值98,加上10,等于108.

System.out.println(10+“b”)
中间的“+”号,是字符串连接符,结果是10b
这种做法很常见,比如10+""就变成了一个字符串。

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1,、运算结果不一样10+'b'=108     10+"b"=10b   
2、在运算时 . char类型与int类型做运算时,char自动转换为ascii码后与int进行运算   此时的+是算数运算符中的加 字符b的ascll码是98   运算结果就是 108
  在运算 10+“b”时+为字符串相加。所以运算结果为10b。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
同意楼上说法
回复 使用道具 举报
'b'和"b"的区别:
              char a = 'b',a是char类型变量,值可以改变;
              String a = "b",a是一个类类型变量,"b"是一个对象,初始化后是不可以被改变的。
实际上是变量与对象的区别!
回复 使用道具 举报
楼主的应该看看或者学习一下java的自动类型提升。在进行不同数据类型运算时,程序会自动将低数据类型提升到高类型,比如楼主的这题来讲:10是int型的,‘b’是字符型型的,系统会将该运算提升为int型的,运行后获得108。而10+“b”则系统提升为字符串类型,因此运算结果为10b.

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
路过   学到了
回复 使用道具 举报
System.out.println(10+‘b’)与System.out.println(10+“b”)

与类型提升有关

'b'是字符型,在与int型10做运算时会提升类型。b对应数字98。所以第一句话输出是int型数字

第二句“b”是字符串型,+代表连接符,所以是10b
回复 使用道具 举报
区别好大,一个是字符,另一个是字符串
回复 使用道具 举报
System.out.println(10+‘b’)
单引号是字符(char),当和int类型运算,就会向上转型

System.out.println(10+“b”)
双引号是字符串,任何类型和字符串相加,结果为字符串
回复 使用道具 举报
单引号是字符类型,双引号是字符串,
回复 使用道具 举报
第一个:结果是108.10是int型常量,'b'是char类型。int型的常量与char类型运算,因为两者的类型不同,所以首先会有自动类型提升,char类型的'b'提升成int型,因为其对应的ASCII码值是98,所以该表达式就是10+98=108.
第二个:结果是10b。"b"是字符串。毕老师视频中讲过,字符串和任意数据使用“+”相连接,最终都是字符串。因此,结果就是10b。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马