黑马程序员技术交流社区

标题: 有关数组遍历问题 [打印本页]

作者: 金辉    时间: 2013-5-9 17:53
标题: 有关数组遍历问题
本帖最后由 金辉 于 2013-5-9 18:36 编辑
  1. public class ParaDemo{
  2. public static void main(String[] args)
  3. {  
  4.   char[] ch = {'d','b','2'};
  5.   System.out.println(ch);
  6. }
复制代码
刚才看到的,上面代码是不是证明char类型数组可以不用遍历就直接输出,如果是,为什么呢?
作者: zn123_4    时间: 2013-5-9 17:58
本帖最后由 zn123_4 于 2013-5-9 18:07 编辑

哥,这输出的肯定是char[]数组的首地址,要遍历的话可以看下毕姥爷的视频,很详细
  1. /*
  2.                 需求:遍历数组
  3.         */
  4.         public static void printArray(int[] arr)
  5.         {
  6.                 for(int x=0; x<arr.length; x++)
  7.                 {
  8.                         if(x==arr.length-1)
  9.                         {
  10.                                 System.out.print(arr[x]);
  11.                         }
  12.                         else
  13.                         {
  14.                                 System.out.print(arr[x]+",");
  15.                         }
  16.                 }
  17.                 System.out.println();
  18.         }
复制代码

作者: 孙浩    时间: 2013-5-9 18:13
本帖最后由 孙浩 于 2013-5-9 18:21 编辑

我调试了一下:发现它底层走的是   
public void write(char cbuf[]) throws IOException {        write(cbuf, 0, cbuf.length);
    }
out流对象的println()方法有重载方法:println(char []  x)
作者: 殇_心。    时间: 2013-5-9 18:17
本帖最后由 殇_心。 于 2013-5-9 18:24 编辑

是可以的。
原因是: System.out.println(char [] x)这样一个方法存在
               
作者: 金辉    时间: 2013-5-9 18:21
zn123_4 发表于 2013-5-9 17:58
哥,这输出的肯定是char[]数组的首地址,要遍历的话可以看下毕姥爷的视频,很详细 ...

你为什么不动手验证下我的代码呢
作者: 黑马-雷钊    时间: 2013-5-9 18:26
    public class Demo{
public static void main(String[] args)
{  
  char[] ch = {'d','b','2'};
  System.out.println(ch);
  String ch1 = "db2";//其实你上面的语句和这行代码的意义是一样的。因为java字符串可以转为一个数组。反过来就是字符数组本身就是一个字符串。
  System.out.println(ch1);
}
}
作者: 黑马-雷钊    时间: 2013-5-9 18:27
至于为什么不用遍历道理就很简单了  ,因为打印字符串也不需要遍历
作者: 金辉    时间: 2013-5-9 18:30
殇_心。 发表于 2013-5-9 18:17
是可以的。
原因是: 字符数组的toString()方法重写时,是这么定义的。 ...

刚刚查了下,是有这个方法




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