黑马程序员技术交流社区

标题: 获取百度的ip地址数组,打印结果不明白 [打印本页]

作者: 郭冰川    时间: 2013-1-8 13:56
标题: 获取百度的ip地址数组,打印结果不明白
本帖最后由 郭冰川 于 2013-1-8 14:21 编辑

获取百度的ip地址数组,显示数组长度是22,遍历出来以后结果是这样:www.baidu.com/61.135.169.125www.baidu.com/61.135.169.105  求大神解答

import java.net.InetAddress;

public class Test {

        public static void main(String[] args) throws Exception {
               
                InetAddress[] ia = InetAddress.getAllByName("www.baidu.com");
                for (int i = 0; i < ia.length; i++) {
                  
                       System.out.println(ia);
                      }
             }
}

第一遍少写了,不好意思了.
{:soso_e110:}
作者: 郑传庆    时间: 2013-1-8 13:59
在打印语句这样写:    System.out.print(ia[i]);                        
作者: 杨建聪    时间: 2013-1-8 14:00
你这代码本身就有问题,for循环里面的 i数组角标还是数组元素?,你这样写打印出来肯定是数组的哈希值!
作者: 黑马王振宇    时间: 2013-1-8 14:07
首先哥们你要知道是打印数组还是数组中的元素,
我举个简单的例子你就能明白了:
int[] a = new int [5];
这里的a,他是引用,存在stack中,可以理解为是指向,数组实际在heap中,
a中存放的是指向heap中数组的引用(理解为地址),
所以你要是s.o.p(a)的话,打印出来的是引用,
要打印值,需要遍历,以for循环为例遍历并打印值:
for(int x=0; x<a.length; x++){
  System.out.println(a[x]);
}
作者: 郭冰川    时间: 2013-1-8 14:12
郑传庆 发表于 2013-1-8 13:59
在打印语句这样写:    System.out.print(ia);

多谢解答,刚才那题太幼稚了
作者: 陈丽莉    时间: 2013-1-8 14:29
本帖最后由 陈丽莉 于 2013-1-8 14:30 编辑

用getAllByName()方法时,输出用for循环是为了遍历获取到的所有IP地址,而不是为了按指针输出IP地址所存字符串的。下面为改后的代码,已测试。
import java.net.InetAddress;
public class Test
{
    public static void main(String args[])throws Exception
     {   
         InetAddress[] ia=InetAddress.getAllByName("www.baidu.com");
        for(InetAddress addr:ia)
         {
             System.out.println(addr);
         }
     }
}

作者: 郑传庆    时间: 2013-1-8 15:33
郭冰川 发表于 2013-1-8 14:12
多谢解答,刚才那题太幼稚了

楼上的for循环增强也可以的,但是for循环增强慎用




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