为什么我的Java代码返回内存地址而不是字符串?

时间:2014-05-27 12:34:35

标签: java

我在这里调用PlaneXML的WSDL服务 - API参考 https://flightwise.com/documentation/39/PlaneXML_API_Reference.html#AirportInfo

我的代码:

public static void airportName() throws RemoteException{
        String lax = "LAX";       
        PlaneXMLv1SoapProxy foo = new PlaneXMLv1SoapProxy();
        Airport [] info = foo.airportInfo(lax);
        System.out.println("output 1: " + info);
        System.out.println("output 2: " + info.toString());
        System.out.println("output 3: " + info[0]);
        }

我的输出:

output 1: [Lcom.flightwise.planexml.ws.Airport;@604ed9f0
output 2: [Lcom.flightwise.planexml.ws.Airport;@604ed9f0
test
test
output 3: com.flightwise.planexml.ws.Airport@9117a1a4

为什么我会返回这些内存地址而不是字符串? 什么可能导致"测试"输出

由于

4 个答案:

答案 0 :(得分:1)

正如其他人所回答的那样,你是:

1-打印阵列本身 2-使用toString()而不覆盖。
3-打印机场物体 如果要打印有关 Airport 的特定内容,则需要明确使用这些属性。另外,请阅读文档https://flightwise.com/documentation/39/PlaneXML_API_Reference.html#Airport

它的内容如下:

  

提供有关机场的基本信息。

     

标识为字符串
  ICAO As String
  作为字符串的位置
  Lat As Double双   Lon As Double
  Elev As Int32
  GMTOffset为短期   DST为短

答案 1 :(得分:0)

如果您实现toString()对象的Airport方法,则可以在控制台上看到字符串。

答案 2 :(得分:0)

toString()不返回地址。它返回

getClass().getName() + '@' + Integer.toHexString(hashCode())

答案 3 :(得分:0)

由于infoString的数组,因此输出为[Lcom.flightwise.planexml.ws.Airport;@604ed9f0不是String ,如果您愿意打印toString()课程的Airport(如果您已超越)方法,然后执行:

System.out.println(info[0].toString()) // you can use any index in place of 0