Java 使用字符串类型对象id从数组对象获取值
如果将对象id作为字符串值,是否有方法获取数组对象的值 //假设这是一个真实的对象id值 一台电脑向我的电脑发送一个数组,然后我从那台电脑以字符串的形式(使用套接字)获取这个id。我想通过使用该对象名来获取数组的内容 客户Java 使用字符串类型对象id从数组对象获取值,java,sockets,client-server,Java,Sockets,Client Server,如果将对象id作为字符串值,是否有方法获取数组对象的值 //假设这是一个真实的对象id值 一台电脑向我的电脑发送一个数组,然后我从那台电脑以字符串的形式(使用套接字)获取这个id。我想通过使用该对象名来获取数组的内容 客户 你似乎误解了你所造成的情况 当你使用 out.println(someObject); 打印出来的是someObject.toString的结果 toString的默认实现是对象的类名、@和对象的hashCode()方法的结果的串联 由于数组是一个不重写toString方法
你似乎误解了你所造成的情况 当你使用
out.println(someObject);
打印出来的是someObject.toString
的结果
toString
的默认实现是对象的类名、@
和对象的hashCode()
方法的结果的串联
由于数组是一个不重写toString
方法的对象,因此您将获得数组的类名(对于类型为double[]
的数组,这将是[D
),然后是@
,然后是在该JVM中分配的任何哈希代码
也就是说,打印内容根本不包含任何有用的信息
为了传输实际数据,您应该在数组上循环并以您能够读取的某种形式打印其元素
由于您没有这样做,当您尝试读取该行时,您得到的只是无意义的字符串表示。这是而不是对象ID。它是而不是任何类型的引用。它只是数组类型和哈希代码的无意义连接
如果你用了
out.println(Arrays.toString(weatherDetails));
然后输出中会有实际的数字,格式如下
[40.5,31.972,17.60,5.3]
然后,通过删除括号,在逗号上拆分,并在每个结果元素上使用Double.parseDouble()
,您就可以在另一侧读取它
请注意,这只是一个选项。您可以使用其他方法实际循环并以其他方式放置数据。例如,将元素数放在第一行,将一个元素放在下面的每行。然后在读取端,读取第一行,将其解析为整数,然后您知道要读取的行数,读取每行一个也可以使用DataOutputStream
或ObjectOutputStream
不要试图直接打印数组。这样做不会得到任何有用的信息。你说的“对象ID”是什么意思?数组对象的引用ID只是数组(或引用)的一些哈希代码,它不是基于此数组中的任何索引。如果这是您想要的数组,那么是的,只需在
array.toString()之间使用equals
方法
结果和输入
。但是如果您希望存储数组以基于id访问它们,那么将它们存储在映射中对我来说效率更高
是否有任何方法可以从客户端发送到服务器的数组中获取值?
out.println(Arrays.toString(weatherDetails));
[40.5,31.972,17.60,5.3]