An enum is a way of defining related constants, e.g. days of the week or months of the year.
enums are better than just using constants as they have a related significance.
For example if you defined the constants JANUARY=1 and MONDAY=1, there would be nothing stopping you setting int dayOfWeek=JANUARY.
If you define the days of the week as enumerations and the months of the year as enumerations, the above situation cannot occur.
There's a lot of cases in programming where a variable represents some kind of quality that takes on of a finite list of values. Like the state of a traffic light can be only red, amber or green, a business can be open or closed.
You can assign a number to each possible state and use an int. Enums are a more naturalistic representation.
as in:
enum LightState {Red,Amber,Green};
They are frequently used in switch statements, and also there are two important related classes EnumSet and EnumMap. An EnumMap is like an array in which the values are selected according to an enum value, rather than according to an integer.
They are implemented by assigning a numeric value to each value, but you shouldn't code on that basis.