import java.net.InetAddress;
public class TestInetAddress{
     public static void main(String[]args){
          try{
             InetAddress ia = InetAddress.getLocalHost();
             show.Info(ia);
             
              ia = InetAddress.getByName("www.sina.com.cn");
              show.Info(ia);
          }catch(java.net.UnknownHostException e){
                 e.printStackTrace();
           }
     }
      public static void showInfo(InetAddress ia){
          String name = ia.getHostName();
          String address = ia.getHostAddress();
     
          System.out.println(name);
          System.out.println(address);
          System.out.println("------------------");
      }
}

解决方案 »

  1.   


    我想说的问题是为什么上面这句InetAddress ia = InetAddress.getLocalHost(); 不是这样InetAddress ia = new InetAddress(); 我也查了一下API发现这个类没有构造方法,想问这样定义对象是什么原理啊?平时少见啊!
    再有就是上面定义了两个 ia对象这样不算重复吗?搞不清楚啊,求大牛帮忙
      

  2.   

    1.这个是静态方法,不需要new对象来调用
    2.这个ia只是对象的引用,你那2个ia是引用的同一个对象
      

  3.   

    错了,不是作用域不同,我以为你说的上面的ia跟下一个方法里的ia,sry
      

  4.   

    这个叫单子模式,可以保证在整个应用中只有一个实例,具体的参考,讲解很详细
    http://blog.csdn.net/lenotang/article/details/2586918
      

  5.   

    我觉得是拿单例的,没必要那多次ia,pc上面host肯定唯一的
      

  6.   


    另外那个ia去的是www.sina.com.cn
      

  7.   

    这个类没有提供public构造方法,调用该静态方法得到对象的引用,在API中其实很常见
      

  8.   

    我没看出什么模式,我只看到你第一个ia是获取的自己本机的InetAddress对象,第二个ia在给定主机名的情况下得到新浪的 InetAddress对象。覆盖了第一个,就这样。
      

  9.   

    说错,showInfo是一个静态的方法,在分配内存空间的时候是共享的,即所以对象共享一个内存空间,所以会覆盖掉。