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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 @白纸嘿字@ 于 2015-9-2 10:31 编辑
  1. package com.itheima.stringbuffer;

  2. public class StringBufferDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                
  8.                 int[] arr = new int[] { 21, 32, 2, 45 };
  9.                 System.out.println(toString(arr));

  10.         }

  11.         public static String toString(int[] arr) {
  12.                 String str = "[";
  13.                 for (int i = 0; i < arr.length; i++) {
  14.                         if (i != arr.length - 1) {
  15.                                 str += arr[i] + ",";
  16.                         } else {
  17.                        ——>         str += arr[i] + ']';
  18.                         }
  19.                 }
  20.                 return str;
  21.         }

  22. }
复制代码

执行结果,一个:[21,32,2,138,另一个:[21,32,2,45]。

']'和"]"有什么差别(见“箭头”)?为什么执行结果会不一样?
不是说,在内存中过程是这样(举的例子,和本代码无关): String str="a"+4+'c',划分一个字符缓冲空间,将数据(无论基本数据类型,还是引用类型)存储起来,然后将它们变成字符串,
new StringBuffer().append("a").append(4).append('c').toString()

2 个回复

倒序浏览
至尊幽蓝 来自手机 中级黑马 2015-9-2 07:28:45
沙发
你代码的if else部分,arr应该是arr[i]吧,arr[i]是int型,']'是char,它和int相加被自动转化为int,如果我没猜错,']'的unicode码应该是138-45吧,同时第一种结果还少打印了一个']'。
回复 使用道具 举报
自动装箱了。
你把单引号该双引号就是字符串输出了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马