java - 为什么这个 Java 代码返回一个内存地址?
问题描述
此代码返回由 rgb2hsv 函数返回的数组的内存地址。我不确定为什么会这样,或者它是否甚至是它正在返回的内存地址,因为我熟悉内存地址,看起来类似于“0x038987086”,但代码返回的东西看起来更像这样: “[F@12bb4df8”,我不知道为什么会这样,如果你能回答为什么以及它返回的究竟是什么,那将是非常有益的。这是代码:
public class HelloWorld{
public static float max(float[] nums) {
if (nums[0] > nums [1] && nums[0] > nums[2]) {
return nums[0];
}
if (nums[1] > nums [0] && nums[1] > nums[2]) {
return nums[1];
}
if (nums[2] > nums[0] && nums[2] > nums[1]) {
return nums[2];
}
return 0;
}
public static float min(float[] nums) {
if (nums[0] < nums [1] && nums[0] < nums[2]) {
return nums[0];
}
if (nums[1] < nums [0] && nums[1] < nums[2]) {
return nums[1];
}
if (nums[2] < nums[0] && nums[2] < nums[1]) {
return nums[2];
}
return 0;
}
public static float[] rgb2hsv(float r,float g, float b) {
float h;
//Initializes h
h=0;
float s;
float v;
// Floats added to avoid operator precedence
float x;
float a;
float hue;
//Divides by 255
r=r/255;
g=g/255;
b=b/255;
float[] rgbArray = {r,g,b};
float mx= max(rgbArray);
float mn= min(rgbArray);
float df= mx-mn;
if (mx == mn) {
h=0;
}
if (mx==r) {
x=g-b;
a=x/df+360;
hue=a % 360;
h=hue;
}
if (mx==g) {
x=b-r;
a=x/df+120;
hue=a % 360;
h=hue;
}
if (mx==b) {
x=r-g;
a=x/df+240;
hue=a % 360;
h=hue;
}
if(mx==0) {
s=0;
}
else {
s=df/mx;
}
v=mx;
float[] hsvArray = {h,s,v};
return hsvArray;
}
public static void main(String []args){
float[] x=rgb2hsv(255, 255, 0);
System.out.println(x);
}
}
这应该按照 3 个不同的数字输出一些东西,告诉我色调、值和饱和度。相反,它返回类似于“[F@12bb4df8”的内容
解决方案
那是toString
一个数组。看Object.toString
,它会告诉你默认实现返回的等价于
getClass().getName() + '@' + Integer.toHexString(hashCode())
Class.getName
解释了它的一部分。
Object.hashCode
会告诉你更多关于号码的信息。通常它将从第一次调用时对象的内存地址派生。它可能不是实际的内存地址,因为低位通常为零,并且 JVM 倾向于将对象移动到内存中作为垃圾收集的一部分。
静态方法java.util.Arrays.toString
或deepToString
会给你一些更明智的东西。
推荐阅读
- angular - 无法匹配任何路由。Nativescript 中的 URL 段错误
- kubernetes - Helm 安装 Kubernetes Federation v2 错误
- jquery - Bootstrap 导航栏响应式
- python-3.x - 使用预训练向量的问题。标记化问题
- php - Guzzle 使用破折号从属性中获取价值?
- python - Tensorflow Hub 和 JS:如何微调预训练模型并将其导出以在 Tensorflow.js 中使用?
- python - subpods.img 的返回类型
- html - CSS floats 和 divs + Responsive 的组合
- plsql - PL SQL - 统计查询
- php - 将循环输出存储在变量中