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!