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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈冲 中级黑马   /  2012-7-8 09:46  /  2589 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈冲 于 2012-7-8 10:06 编辑
  1. class ArrayDemo5
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr={34,19,11,109,3,56};
  6.                 selectSort(arr);
  7.                 getArr(arr);
  8.         }

  9.         /*
  10.         选择排序:
  11.         思路:
  12.                 1.第一个元素与后边的所有元素比较,将最小值放在arr[0],比较次数为arr.length-1
  13.                 2.需要多轮排序,且每次的比较次数 -1
  14.                 3.需要一个变量作为中转
  15.                 4.返回排好序的数组
  16.         */
  17.         public static void selectSort(int[] arr)
  18.         {
  19.                 for (int i=0;i<arr.length-1 ;i++ )
  20.                         for (int j=i+1;j<arr.length ;j++ )
  21.                         {
  22.                                 if (arr[i]>arr[j])
  23.                                 {
  24.                                         int temp;
  25.                                         temp=arr[i];
  26.                                         arr[i]=arr[j];
  27.                                         arr[j]=temp;
  28.                                 }
  29.                         }
  30.                         //getArr(arr);
  31.         }

  32.         /*
  33.         遍历取出数组中的元素
  34.         */
  35.         public static void getArr(int[] arr)
  36.         {
  37.                 for (int i=0;i<arr.length ;i++ )
  38.                 {
  39.                         System.out.print(arr[i]+','); //使用System.out.print(arr[i]+','),输出结果为47556378100109,而使用System.out.print(arr[i]+“,")则能正常输出3,11,19,34,56,109,
  40.                 }
  41.                 System.out.println();
  42.         }
  43. }
复制代码
为什么在getArr函数中,
使用System.out.print(arr+','),输出结果为47556378100109,而使用System.out.print(arr+“,")则能正常输出3,11,19,34,56,109,在这里使用' '和" ",有什么区别

7 个回复

倒序浏览

本帖最后由 feigecal 于 2012-7-8 10:05 编辑

''是字符""是字符串,+在字符间用于加法运算在字符串中表示连接作用,第一种写法会把,号提升,输出它的ASCLL值,是44再加上你要输出的数做为结果输出
回复 使用道具 举报
arr[i]是一个整数型的值,而‘,’是一个char类型的值,int类型+char类型=int类型,所以你用‘,’连接后,得到的是int类型的值,而int类型+string类型不能进行转化,只能在int类型后进行添加,所以会输出你想要的正确结果

点评

欧了,原来如此,是char型隐式转化为int型了,多谢了~  发表于 2012-7-8 09:56

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
arr[i]是一个整数型的值,而‘,’是一个char类型的值,int类型+char类型=int类型,所以你用‘,’连接后,得到的是int类型的值,而int类型+string类型不能进行转化,只能在int类型后进行添加,所以会输出你想要的正确结果
回复 使用道具 举报
很简单,双引号引起来的JAVA认为是字符串,整数和字符串执行+运算,就相当于将整数的字面值和字符串进行连接,因此打印出来的结果是你想要的。
用单引号引起来的,JAVA识别为char类型,int和char类型做加法char类型被按照ASCII码的数值强转为int类型,','的值是44,所以打印出来的就是那一长串数字,你看,数组的第一个值是3,3+44刚好是47,对吧,一次类推,你验算一下就知道了

点评

多谢,了解了,已解决  发表于 2012-7-8 09:57
回复 使用道具 举报
这是因为你前面的arr[i] 是一个 int 型 int 与chr 进行运算时会自动把char转换成一个int 型

java 中 ' '单引号表示char," " 双引号表示String

你可以单独试一下
public class Test {

        public static void main(String[] args) {
                System.out.println((int)',');//这里输出44
                System.out.println(1+',');//这里输出45
        }

}

点评

多谢,了解了,已解决  发表于 2012-7-8 09:57
回复 使用道具 举报
System.out.print(arr[i]+',');
这么写最后输出的结果是arr[i]加上  , 的ASCII值,而  , 的ASCII值是44,所以最后的打印结果及时47556378153100。
你试试用正常打印结果,每个数加上44,就会得出上面的结果
回复 使用道具 举报
public static void getArr(int[] arr)

        {

                for (int i=0;i<arr.length ;i++ )

                {

                        System.out.print(arr+',');
                }//使用System.out.print(arr+','),((arr【i】+',')意思是将数组元素打印时候加上 逗号(,)的aASCII码值,而逗号的ASCII值为 44  
                //  所以每次输出的结果(3+44   11+44  。。。)  由于你没有用什么分隔的修饰
输出结果为47556378153100

              //,而使用System.out.print(arr+“,") (使用双引号代表该字符为字符串(即 逗号),所以此时的+相当与和 (即3和逗号   11和逗号...))则能正常输出3,11,19,34,109,56,

                System.out.println();

        }

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