黑马程序员技术交流社区

标题: 小问题……求解答 [打印本页]

作者: Michael_xpd    时间: 2013-11-20 17:23
标题: 小问题……求解答
java学的太糙了,我今天在输出一个数组时,写了这样一句:System.out.print(arr[i]+' '),结果就出错了,而我把这句话改成System.out.print(arr[i]+" ")就没问题了,这是为什么啊?小弟不懂,还请大神指点!
作者: 文涛    时间: 2013-11-20 17:31
单引号‘’括起来的叫做字符,而双引号""括起来叫做字符串,print方法打印的就是字符串,并且在字符串使用+号的时候,其他类型会自动的升级为字符串类型,于是System.out.print(arr[i]+" ")就对了,因为arr[i]被自动升级为字符串,并连接上" ",但是后面一个System.out.print(arr[i]+' ')是不行的,因为字符是char型,而arr[i]这个元素是另一个类型,如果这个元素是int,那么char会自动升级为int型,结果就会是这个元素加上空格对应的asc码
  总之,这涉及到类型自动转换的问题
作者: wjj410830911    时间: 2013-11-20 18:15
“”是字符串  类型String
‘’是字符  类型char
与“”字符串相加  相当于与字符串连接  变成一个新的字符串  而且“ ”里面不是什么都没有 有个\n 空格
与‘’字符相加  相当于与字符char类型运算   数据类型不同运算,要么强转要么自动类型提升,更何况数组是引用数据类型  char是基本数据类型 根本就不能运算 所以会报错
作者: hurryup    时间: 2013-11-20 18:57
  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.
作者: smileven    时间: 2013-11-20 19:06
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这一节会讲到),






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