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)