黑马程序员技术交流社区

标题: 关于 可变参数的问题 [打印本页]

作者: 刘学明       时间: 2013-5-9 16:55
标题: 关于 可变参数的问题
本帖最后由 刘学明    于 2013-5-11 13:55 编辑

public class ParaDemo{
public static void main(String[] args)
{
  int[]  arr ={3,5,6};
  char[] ch = {'d','b','2'};
  show(arr);   // 为什么这里打印的是一个数组地址 。不是只有是引用数据类型才是打印数组地址的吗 Integer不才是引用数据类型吗
  show(ch);    //为什什么这里就是打印的是元素的值。
}
public static void show(char...arr)
{
       System.out.println(arr);
}
public static void show(int...arr)
{
       System.out.println(arr);
}
}


作者: 薛淑凯    时间: 2013-5-9 17:15
不明白。帮顶
作者: 仲伟    时间: 2013-5-9 17:40
public class Simple{
   public static void main(String[] args)
   {
     int[]  arr ={3,5,6};
     char[] ch = {'d','b','2'};
     show(arr);   // 为什么这里打印的是一个数组地址 。不是只有是引用数据类型才是打印数组地址的吗 Integer不才是引用数据类型吗
     show(ch);    //为什什么这里就是打印的是元素的值。
  }
  public static void show(char...arr)
   {
       for (char c : arr) {
    System.out.println(c);
   }
         
  }
   
   public static void show(int...arr)
   {
          for (int i : arr) {
     System.out.println(i);
    }
   }
   }
作者: 仲伟    时间: 2013-5-9 17:41
仲伟 发表于 2013-5-9 17:40
public class Simple{
   public static void main(String[] args)
   {

因为数组在jvm中也是有自己字节码的
作者: 金辉    时间: 2013-5-9 17:47
  1. public class ParaDemo{
  2. public static void main(String[] args)
  3. {
  4.   int[]  arr ={3,5,6};
  5.   char[] ch = {'d','b','2'};
  6.   show(arr);  
  7.   show(ch);  
  8.   System.out.println(ch);//这句话证明char数组好像可以不用遍历就输出
  9. }

  10. public static void show(char...arr)
  11. {
  12.        System.out.println(arr);
  13. }
  14. public static void show(int...arr)
  15. {
  16.         for(int i:arr)
  17.        System.out.print(i);
  18.        System.out.println();
  19. }
  20. }
复制代码
现在可以判断出int类型的数组是因为没有遍历,而char类型的可以不用遍历,个人理解,调试你代码得出的结论
作者: 金辉    时间: 2013-5-9 18:33
是我理解错了,刚才查了下有System.out.println(char [])这个方法
作者: Sword    时间: 2013-5-9 18:39
如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
作者: 刘学明       时间: 2013-5-9 22:24
仲伟 发表于 2013-5-9 17:40
public class Simple{
   public static void main(String[] args)
   {

没明白啊 你把我的输出语句改了 如果不改的情况下 为什么输出结果是那样。
作者: 仲伟    时间: 2013-5-10 00:01
刘学明    发表于 2013-5-9 22:24
没明白啊 你把我的输出语句改了 如果不改的情况下 为什么输出结果是那样。 ...

就是说那样不能获取数组的内容,到时可以用Array.asList(ch);
你去看看那个张孝祥老师的
《25_黑马程序员_张孝祥_Java基础加强_数组的反射应用》课程你就有了解了啊
作者: Sword    时间: 2013-5-10 00:05

如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢合作
作者: 黑马-雷钊    时间: 2013-5-10 00:08
你好,因为字符串可以转换成字符数组。反过来就是字符数组其实就是字符串。所以打印的时候会被直接打印出来。这是String类的特性。
作者: 刘胜寒    时间: 2013-5-10 10:18
楼主要多看基础视频啊 。。。。

作者: 飞鸟青崖    时间: 2013-5-10 19:24
show(arr);   此时可变参数arr就指向一个int数组,所以输出的是地址。
  show(ch); 此时arr指向的是一个char型的数组,由于System.out.println()可直接输出char[]中的内容,所以就把ch中的内容给输出了。
作者: 刘学明       时间: 2013-5-11 13:55
刘胜寒 发表于 2013-5-10 10:18
楼主要多看基础视频啊 。。。。

{:2_33:}这个很基础么
作者: 刘胜寒    时间: 2013-5-11 14:28
刘学明    发表于 2013-5-11 13:55
这个很基础么

你认为呢。。
作者: 刘学明       时间: 2013-5-11 14:31
刘胜寒 发表于 2013-5-11 14:28
你认为呢。。

{:2_33:}但是回答 的人里面 只有一个是回答对的  
作者: 刘胜寒    时间: 2013-5-11 14:57
刘学明    发表于 2013-5-11 14:31
但是回答 的人里面 只有一个是回答对的

system.out.println();
打印一个数组变量要看数组变量是否是引用类型还是基本类型
char boolean  short int long  float  double 是基本类型 打印出来的都是地址什么东西的
Integer  String 是引用类型,打印出来的不是地址什么东西的。

好像是这么回事吧。。





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