黑马程序员技术交流社区

标题: 基础题的疑惑 [打印本页]

作者: 燕国庆    时间: 2012-10-9 09:12
标题: 基础题的疑惑
本帖最后由 燕国庆 于 2012-10-23 17:41 编辑

System.out.println(10+‘b’)与System.out.println(10+“b”)有什么区别吗?
作者: qhasilver    时间: 2012-10-9 09:14
本帖最后由 qhasilver 于 2012-10-9 09:26 编辑

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


作者: 李建强    时间: 2012-10-9 09:35
System.out.println(10+‘b’)
char、byte、short与int计算的时候,类型会提升为int,
结果是'b'的ASCII值98,加上10,等于108.

System.out.println(10+“b”)
中间的“+”号,是字符串连接符,结果是10b
这种做法很常见,比如10+""就变成了一个字符串。
作者: yangfengxiao    时间: 2012-10-9 09:43
1,、运算结果不一样10+'b'=108     10+"b"=10b   
2、在运算时 . char类型与int类型做运算时,char自动转换为ascii码后与int进行运算   此时的+是算数运算符中的加 字符b的ascll码是98   运算结果就是 108
  在运算 10+“b”时+为字符串相加。所以运算结果为10b。


作者: 刘伟平    时间: 2012-10-9 10:03
同意楼上说法
作者: 葛旭东    时间: 2012-10-9 10:50
'b'和"b"的区别:
              char a = 'b',a是char类型变量,值可以改变;
              String a = "b",a是一个类类型变量,"b"是一个对象,初始化后是不可以被改变的。
实际上是变量与对象的区别!
作者: 王震阳老师    时间: 2012-10-9 12:42
楼主的应该看看或者学习一下java的自动类型提升。在进行不同数据类型运算时,程序会自动将低数据类型提升到高类型,比如楼主的这题来讲:10是int型的,‘b’是字符型型的,系统会将该运算提升为int型的,运行后获得108。而10+“b”则系统提升为字符串类型,因此运算结果为10b.
作者: 杨华东    时间: 2012-10-9 15:06
路过   学到了
作者: 刘 佳    时间: 2012-10-9 23:15
System.out.println(10+‘b’)与System.out.println(10+“b”)

与类型提升有关

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

第二句“b”是字符串型,+代表连接符,所以是10b
作者: unfanwei    时间: 2012-10-10 00:07
区别好大,一个是字符,另一个是字符串
作者: 李润根    时间: 2012-10-10 01:15
System.out.println(10+‘b’)
单引号是字符(char),当和int类型运算,就会向上转型

System.out.println(10+“b”)
双引号是字符串,任何类型和字符串相加,结果为字符串
作者: 朱金林    时间: 2012-10-10 05:53
单引号是字符类型,双引号是字符串,
作者: 打工人    时间: 2012-10-10 07:16
第一个:结果是108.10是int型常量,'b'是char类型。int型的常量与char类型运算,因为两者的类型不同,所以首先会有自动类型提升,char类型的'b'提升成int型,因为其对应的ASCII码值是98,所以该表达式就是10+98=108.
第二个:结果是10b。"b"是字符串。毕老师视频中讲过,字符串和任意数据使用“+”相连接,最终都是字符串。因此,结果就是10b。




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