Difference between Color.red and Color.RED

Solution 1:

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

Solution 2:

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;

Solution 3:

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!