Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
Java2D:if语句不适用于java.awt.Color_Java_Java 2d - Fatal编程技术网

Java2D:if语句不适用于java.awt.Color

Java2D:if语句不适用于java.awt.Color,java,java-2d,Java,Java 2d,我有一个getPixelColour功能: Color getPixelColor(int x, int y) { if(mazeImage == null) System.out.println(":("); int pixel = mazeImage.getRGB(x, y); int red = (pixel & 0x00ff0000) >> 16; int green = (pixel & 0x0000ff00) >&

我有一个
getPixelColour
功能:

Color getPixelColor(int x, int y) {
    if(mazeImage == null) System.out.println(":(");
    int pixel = mazeImage.getRGB(x, y);
    int  red = (pixel & 0x00ff0000) >> 16;
    int  green = (pixel & 0x0000ff00) >> 8;
    int  blue = pixel & 0x000000ff;
    return new Color(red,green,blue);
}
例如,一个像素是黑色的,
System.out.println(getPixelColor(x,y)+++Color.black)
写入
java.awt.Color[r=0,g=0,b=0]java.awt.Color[r=0,g=0,b=0]

但是
getPixelColor(x,y)=Color.BLACK
返回
false
。有什么问题吗?

如果有

getPixelColor(x,y).equals(Color.BLACK);
我相信你会得到你期望的结果


java中的
=
运算符是引用相等的,因为
getPixelColor()
返回一个新的
Color
实例,它将永远不会
=
Color.BLACK
,因为这是对另一个实例的静态引用,恰好是黑色。

您正在比较两个不同的
Color
对象,它们将返回false(即,两个不同的对象位于不同的内存位置)

如果要正确比较它们,请使用
equals()


Color
是一个对象,
=
比较的不是对象的内容,而是实例。因此,可以有几个
颜色
对象包含RGB值(0,0,0)

您希望与
col1.equals(col2)
进行比较

你可能会在这个网站上找到很多其他问题,包括
=
等。例如:


而不是使用
getPixelColor(x,y)=Color.BLACK
尝试
Color.BLACK.equals(getPixelColor(x,y))


您还应该阅读Java中的
equals
方法,以及何时使用它与
=
操作符比较合适。

如果您发现以下任何答案都有帮助,您应该接受一个。当你发布更多的问题时,除非你接受有用的答案,否则会员将不愿意帮助你。
getPixelColor(x, y).equals(Color.BLACK);