Java >> Java opplæring >  >> Java

Topp 8 Java-intervjuspørsmål om main()-metoden

Kjøring av en Java-applikasjon starter med main()-metoden , dette er et av de viktige spørsmålene om Java-intervju for både ferskere og erfarne. I denne artikkelen vil vi diskutere noen av de mulige java-intervjuspørsmålene på main() metode.

1. Hvorfor er hovedmetoden offentlig statisk?

Hvis main() metoden er erklært ikke-statisk deretter JVM (virtuell Java-maskin) kan ikke kalle det uten å lage en forekomst av klassen som inneholder main() metode.

Mens du skaper forekomster, kan det oppstå tvetydighet når konstruktøren tar argumentet som hvilket som skal kalles.

public class Test
{
    
    public Test (int a)
    {
        //One argument constructor
    }
    public Test (int a, int b)
    {
      //Two arguments constructor
    }
    public void main(String[] args)
    {
        //Non Static main method
    }
}

2. kan vi overbelaste hovedmetoden i Java?

Ja , vi kan overbelaste hovedmetoden i Java, men utførelsen vil starte fra main() metode med signatur “public static void main(String[] args)” eller“public static void main(String args…)”

import java.util.Arrays;

public class Test
{
    /** Actual main method with String[] args**/
    public static void main(String[] args)
    {
        System.out.println("String[] args main method called");
        main(new Double[] {1.0, 2.0, 3.0});
    }

    /** Overloaded main method with Double[] args**/
    public static void main(Double[] args)
    {
        System.out.println("Double[] args main method called");
        System.out.println(Arrays.toString(args));
    }
}

Når vi kjører koden ovenfor, får vi utdataene nedenfor

String[] args main method called
Double[] args main method called
[1.0, 2.0, 3.0]

Dette forteller deg tydelig at du kan overbelaste en main()-metode i java.

3. Kan vi overstyre hovedmetoden i Java?

Nei , kan vi ikke overstyre hovedmetoden i Java, fordi main() metoden er erklært som statisk og du har ikke lov til å overstyre en statisk metode i java. Det er ikke fornuftig å "overstyre" det, siden konseptet "overstyre" bare er for eksempel metoder.

4. Hva vil skje hvis vi erklærer main() metode som ikke-statisk ?

Hvis du erklærer en main() metode som ikke-statisk kompileringen vil være vellykket, men den vil gi en Runtime feil

public class Test
{
    /** Non Static main method with String[] args**/
    public void main(String[] args)
    {
        System.out.println("String[] args main method called");
    }
}

Utgang

Error: Main method is not static in class Test, please define the main method as:
   public static void main(String[] args)

5. Kan vi definere en klasse uten hovedmetode ?

Nei, Vi kan ikke definere en klasse uten main() metode som starter fra Java 7 . I forrige versjon av Java kan vi ha Statiske initialiseringsprogrammer som et alternativ

public class Test
{
    static
    {
        System.out.println("Static Initalizer");
        System.exit(0);
    }
}

Utdata:(Fra JDK 7)

Error: Main method not found in class Test, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

Utgang:(JDK 6)

Static Initalizer

6. Kan vi deklarere main()-metoden med en annen tilgangsmodifikator enn public ?

Nei , main()-metoden kan ikke ha noen annen tilgangsmodifikator public , hvis du bruker privat, beskyttet eller standardtilgang modifikator kompileringen vil være bra, men den vil gi Runtime feil.

Error: Main method not found in class Test, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

7. Kan vi ta hovedfinalen i Java?

Ja, du kan lage main() metode endelig

8. Kan vi endre returtype for main()-metoden?

Nei, du kan ikke endre returtypen til en main() metode, må den være ugyldig . Hvis du endrer returtypen, får vi en Runtime feil "Hovedmetoden må returnere en verdi av typen void in class"

public class Test
{
    /** static main method returning int**/
    public static int main(String[] args)
    {
        System.out.println("String[] args main method called");
        return 1;
    }
}

Utdata:

Error: Main method must return a value of type void in class Test, please 
define the main method as:
   public static void main(String[] args)


Java Tag