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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Michael_xpd 中级黑马   /  2013-11-20 17:23  /  1463 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java学的太糙了,我今天在输出一个数组时,写了这样一句:System.out.print(arr[i]+' '),结果就出错了,而我把这句话改成System.out.print(arr[i]+" ")就没问题了,这是为什么啊?小弟不懂,还请大神指点!

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

4 个回复

倒序浏览
单引号‘’括起来的叫做字符,而双引号""括起来叫做字符串,print方法打印的就是字符串,并且在字符串使用+号的时候,其他类型会自动的升级为字符串类型,于是System.out.print(arr[i]+" ")就对了,因为arr[i]被自动升级为字符串,并连接上" ",但是后面一个System.out.print(arr[i]+' ')是不行的,因为字符是char型,而arr[i]这个元素是另一个类型,如果这个元素是int,那么char会自动升级为int型,结果就会是这个元素加上空格对应的asc码
  总之,这涉及到类型自动转换的问题

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

回复 使用道具 举报
“”是字符串  类型String
‘’是字符  类型char
与“”字符串相加  相当于与字符串连接  变成一个新的字符串  而且“ ”里面不是什么都没有 有个\n 空格
与‘’字符相加  相当于与字符char类型运算   数据类型不同运算,要么强转要么自动类型提升,更何况数组是引用数据类型  char是基本数据类型 根本就不能运算 所以会报错
回复 使用道具 举报
  1. public class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] c={2,4,6};
  6.                 System.out.println(c[1]+' ');       
  7.         }
  8. }
复制代码
可以的楼主,你的代码给我看下,字符可以用+‘ ’
我给个代码你看:
结果是36.
回复 使用道具 举报
java学的太糙了,我今天在输出一个数组时,写了这样一句:System.out.print(arr[i]+' '),结果就出错了,而我把这句话改成System.out.print(arr[i]+" ")就没问题了,这是为什么啊?小弟不懂,还请大神指点!

你的目的是想输出数组中的值,然后每个值用空格分开吧?
System.out.print();括号里面的值可以是任何的基本数据类型。
(1)System.out.println(arr[i]+""):
因为arr[i]的优先级比空格字符的优先级高,
所以这样是将arr[i]的值与空格字符的ascII值相加,当然就不是arr[i]的值了。
(2)System.out.print(arr[i]+“ ”)是:
将arr[i]和空格连成了一个字符串,
所以你在这输出的是一个字符串。(这些在String这一节会讲到),

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马