mKorbel
mKorbel

Reputation: 109823

Difference between Color.red and Color.RED

What's the real difference between definitions for setXxx(Color.red) and setXxx(Color.RED)?

I've found the following explanation on the web. Is it all about naming conventions?

Java originally defined a few color constant names in lowercase, which violated the naming rule of using uppercase for constants. They are available in all versions of Java: Color.black, Color.darkGray, Color.gray, Color.lightGray, Color.white, Color.magenta, Color.red, Color.pink, Color.orange, Color.yellow, Color.green, Color.cyan, Color.blue

Java 1.4 added the proper uppercase names for constants: Color.BLACK, Color.DARK_GRAY, Color.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.MAGENTA, Color.RED, Color.PINK, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE

Upvotes: 51

Views: 29816

Answers (3)

Artem Katerynych
Artem Katerynych

Reputation: 11

Java defined some color constant names in lowercase, which violated the naming rule of using uppercase for constants. Heres the code for the color red:

public final static Color red = new Color(255, 0, 0); 

Later on they made the same colors but in uppercase.

public final static Color RED = red;

So there is really no difference. They are all the same, as you can tell by the code.

public final static Color red = new Color(255, 0, 0);
public final static Color RED = red;

Hope this helps!

Upvotes: 1

Buhake Sindi
Buhake Sindi

Reputation: 89189

There's the code itself:

public final static Color red = new Color(255, 0, 0);

public final static Color RED = red;

The upper case letters were introduced in JDK 1.4 (to conform to its naming convention, stating that constants must be in upper-case).

In essence, there are no difference at all (except letter casing).


If I want to really be brave, Oracle might go wild and remove constants that is lower-cased, but then that would break all other code that's written pre-JDK 1.4. You never know, I would suggest sticking to uppercase letters for constants. It first has to be deprecated though (as mentioned by Andrew Thompson).

Upvotes: 74

Jan Zyka
Jan Zyka

Reputation: 17898

There is really no difference. See the Color class:

/**
 * The color red.  In the default sRGB space.
 */
public final static Color red       = new Color(255, 0, 0);

/**
 * The color red.  In the default sRGB space.
 * @since 1.4
 */
public final static Color RED = red;

Upvotes: 21

Related Questions