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);