Java >> Java tutorial >  >> Tag >> String

Java Enum Eksempel | Optælling | String | Konstruktør og metoder

En Java Enum er en speciel datatype, hvor denne datatype har en gruppe af foruddefinerede konstantvariabler. En variabel har en foruddefineret værdi (uforanderlige variable, f.eks. endelige variabler). For eksempel A dage om ugen – man, tis...osv. Retningen i jorden nord, øst, vest og syd. At begge har foruddefineret samme værdi for variabler.

Det bruges, når du ønsker at repræsentere et fast sæt konstanter. For eksempel flag i programmet eller menuen osv.

Java-optællinger tilføjes i Java 5, og dens fulde form er java-optælling. I dette selvstudie lærer du, hvad Java enum er, og hvordan du opretter det ved at bruge det.

Eksempel på Java Enum

Som klasseopgørelse skal du blot bruge "enum søgeord ” før navnet Enum Class i Java.

Der er en vis vejledning for konstant - Det skal skrives som store bogstaver, Så enum typens felter også store bogstaver. Tjek nedenstående enum-klasseeksempel.

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}

For at få adgang til enum konstanter bruger prikken syntaks med det:

Day myDay = Day.FRIDAY;

Komplet kode:

enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY
}

class Hello {

    public static void main(String[] args) {
        Day myDay = Day.FRIDAY;
        System.out.println(myDay);

    }
}

Output: FREDAG

Enum-streng (toString)

Det er vigtigt, at der skal noget tid til at Java Enum String. Du kan gøre det ved at bruge toString() metoder. Her er et eksempel på en kode.

Day myDay = Day.FRIDAY;
System.out.println(myDay.toString());

Enum i en Switch-erklæring

For at kontrollere for tilsvarende værdier, kan du bruge Enumeration i en Switch Statement.

enum Speed {
    LOW,
    MEDIUM,
    HIGH
}

class Hello {

    public static void main(String[] args) {
        Speed mySpeed = Speed.MEDIUM;

        switch(mySpeed) {
            case LOW:
                System.out.println("Low Speed");
                break;
            case MEDIUM:
                System.out.println("Medium Speed");
                break;
            case HIGH:
                System.out.println("High Speed");
                break;
        }
    }
}

Output :Mellem hastighed

Sløjfe gennem en enum

Java-enum-metoderne – En værdi()-metode , som returnerer en matrix af alle enum-konstanter. Denne metode er nyttig, hvis du ønsker at gå gennem konstanterne af en enum på samme måde som i eksemplet nedenfor.

enum Speed {
    LOW,
    MEDIUM,
    HIGH
}

class Hello {
    public static void main(String[] args) {

        for (Speed mySpeed : Speed.values()) {
            System.out.println(mySpeed);
        }
    }
}

Output: LAV
MEDIUM
HØJ

Enum int & Java enum nøgleværdi

Du har set ovenstående Enum-streng nu, hvis du har et spørgsmål er det muligt at konvertere Java Enum til int eller oprette Enum int ?

Behov for at oprette en offentlig endelig varibel og privat konstruktør samme som nedenstående eksempel. Hvor hvert indhold har en værdi (nøgleværdi-par) af det.

enum Speed {
    LOW(10),
    MEDIUM(50),
    HIGH(100);
    public final int value;

    private Speed(int value) {
        this.value = value;
    }
}

class Hello {

    public static void main(String[] args) {
        Speed mySpeed = Speed.LOW;

        System.out.println(mySpeed.value);
    }
}

Output: 10

Unikt tal Enum Ordinal

Hvis du ønsker et unikt tal, der repræsenterer enum-værdien, kan du bruge ordinal() .

enum Color {
    White,
    Green,
    Blue,
    Purple,
    Orange,
    Red
}

class Hello {

    public static void main(String[] args) {

        //cast enum to int
        int color = Color.Blue.ordinal();
        System.out.println(color);
    }
}

Output: 2

Java Enum Constructor

Konstruktøren for en enum-type skal være privat adgang (pakke-privat). Den opretter automatisk en konstant som defineret i begyndelsen af ​​enum-klassens krop. Men du kan ikke selv påberåbe en enum-konstruktør, se nedenstående eksempel.

enum Apple {
    A(100), B(190), C(120);

    private int price; // price of each apple

    // Constructor
    Apple(int p) {
        price = p;
    }

    int getPrice() {
        return price;
    }
}

public class Fruits {
    public static void main(String args[]) {
        Apple ap;

        // Print price of Apple A.
        System.out.println(Apple.A.getPrice());

        // Display all apples and prices.
        System.out.println("All apple prices:");
        for (Apple a : Apple.values())
            System.out.println(a + " costs " + a.getPrice());
    }
}

Output: 100
Alle æblepriser:
A koster 100
B koster 190
C koster 120

Enum-metoder i Java

Nogle metoder til enum er værdier(), ordinal() og valueOf() metoder. Her er et komplet eksempel og brug af alle metoder.

enum Color {
    WHITE, BLACK, BLUE;
}

public class Hello {
    public static void main(String[] args) {
        // Calling values()
        Color arr[] = Color.values();

        // enum with loop
        for (Color col : arr) {
            // Calling ordinal() to find index
            // of color.
            System.out.println(col + " at index "
                    + col.ordinal());
        }

        System.out.println(Color.valueOf("WHITE"));
    }
}

Output: HVID ved indeks 0
SORT ved indeks 1
BLÅ ved indeks 2
HVID

Vigtige punkter at huske for Java Enum

  • Enum kan implementere en grænseflade, men kan ikke udvide en klasse, fordi den internt udvider en Enum-klasse .
  • Den kan have felter (variabler osv.), konstruktører og metoder.
  • En Enum kan krydses.
  • Forbedrer typesikkerheden.
  • Nemt brugt i kontrolsætning som en switch-sætning.

Spørgsmål: Hvad er forskellen mellem enums og klasser?

Svar:En Java enum kan ligesom en Java-klasse, men med nogle begrænsninger som Enum kan ikke tilsidesættes metoder. Den har også variabler og metoder, men alle konstante.

En enum bruges ikke til at oprette et objekt og kan ikke udvide klasser, men kan implementere grænseflader. En redskabsgrænseflade er den samme som i klasser.

Spørgsmål: Hvorfor og hvor bruge Java Enums?

Svar:Brug det, hvor variabler ikke vil ændre sig som ugedage.


Java tag