Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用字符串类型对象id从数组对象获取值_Java_Sockets_Client Server - Fatal编程技术网

Java 使用字符串类型对象id从数组对象获取值

Java 使用字符串类型对象id从数组对象获取值,java,sockets,client-server,Java,Sockets,Client Server,如果将对象id作为字符串值,是否有方法获取数组对象的值 //假设这是一个真实的对象id值 一台电脑向我的电脑发送一个数组,然后我从那台电脑以字符串的形式(使用套接字)获取这个id。我想通过使用该对象名来获取数组的内容 客户 你似乎误解了你所造成的情况 当你使用 out.println(someObject); 打印出来的是someObject.toString的结果 toString的默认实现是对象的类名、@和对象的hashCode()方法的结果的串联 由于数组是一个不重写toString方法

如果将对象id作为字符串值,是否有方法获取数组对象的值

//假设这是一个真实的对象id值

一台电脑向我的电脑发送一个数组,然后我从那台电脑以字符串的形式(使用套接字)获取这个id。我想通过使用该对象名来获取数组的内容

客户
你似乎误解了你所造成的情况

当你使用

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]