-
"Demontera"
public static void main(String args[]).En av de populära java-intervjufrågorna för nybörjare, och mycket enkel.
-
publicär en åtkomstmodifierare. Vi använder den för att specificera åtkomsten till denna metod. Här är modifieraren "public", så alla klasser har tillgång till denna metod. -
static. Detta Java-nyckelord innebär att vi använder den här metoden utan att skapa ett nytt objekt i en klass. -
Voidär metodens returtyp. Det betyder att metoden inte returnerar något värde. -
mainär namnet på metoden. JVM "känner" det som en ingångspunkt till en applikation (den bör ha en speciell signatur).Mainär en metod där huvudexekveringen sker. -
String args[]. Detta är parametern som skickas till huvudmetoden. Här har vi argumenten av String-typ som din Java-applikation accepterar när du kör den. Du kan skriva dem på terminalen.
-
-
Vad är skillnaden mellan
equals()och==?==För det första är " " en operatör medan detequals()är en metod. Vi använder==operator för referensjämförelse (eller adressjämförelse) ochequals()metod för innehållsjämförelse. Det betyder att==man kontrollerar om båda objekten pekar på samma minnesplats samtidigt somequals()man jämför värden i objekten. -
Kan vi köra ett program utan
main()metod?Många grundläggande java-intervjufrågor är verkligen enkla. Som den här. Så kort svar är: ja, det kan vi. Till exempel kan vi göra det med statiskt block.
Du kan använda statiskt block för att initiera den statiska datamedlemmen. Den exekveras före
mainmetoden, vid tidpunkten för klassladdning.class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }Utgången är:
static block is invoked Now main method Hur är det med total huvudmetodsfrånvaro? Om du försöker köra en vanlig klass utan huvudmetoden alls, fick du nästa felmeddelande: Huvudmetoden hittades inte i klassen Test, vänligen definiera huvudmetoden som: public static void main (String [] args) eller en JavaFX-applikation klass måste utöka javafx.application.Application. Själva felet säger att om detta är en JavaFX-applikation och klassen ärvs från javafx.application.Application, så är det möjligt.
-
Vad är
immutableobjekt? Kan du skapaimmutableobjekt?Du kan inte ändra objekt i en
immutableklass efter att de har skapats. Så när du väl har skapat dem kan du inte ändra dem. Om du försöker ändraImmutableobjekt får du ett nytt objekt (klon) och ändrar denna klon medan du skapar.Ett bra exempel är ,
Stringdet ärimmutablei Java. Det betyder att du inte kan ändra själva objektet, men du kan ändra referensen till objektet. -
Hur många objekt skapas i följande kod?
En av java tekniska intervjufrågor som ersätter #4.
String s1="Hello"; String s2="Hello"; String s3="Hello";Svaret är "bara en" eftersom Java har en strängpool. När vi skapar ett String-objekt med operatorn new() skapar det ett nytt objekt i heap-minnet. Om vi använder String literal syntax, som i vårt exempel, kan det returnera ett befintligt objekt från String-poolen, om det redan finns.
-
Hur många objekt skapas i följande kod?
String s = new String("Hello");Det finns 2 objekt. En är i strängkonstant pool (om den inte redan finns) och den andra är i högen.
-
Vad är skillnaden mellan och klasser i Java
String?StringBuilderStringBufferDet finns en av de ledande i de vanligaste java-intervjufrågorna.
Först av allt
Stringär en oföränderlig klass. Det betyder att du inte kan ändra dess innehåll när det väl har skapats. MedanStringBufferochStringBuilderär föränderliga klasser, så att du kan ändra dem senare. Om vi ändrar innehållet iStringobjektet skapar det en ny sträng och ändrar därför inte den ursprungliga. Det är därför prestandan medStringBufferär bättre än medString.Den största skillnaden mellan
StringBufferochStringBuilderdessStringBuffermetoder är synkroniserade medansStringBuilderinte är det. -
Finns det någon skillnad på
Stringatt det skapades med hjälp av literal och mednew()operator?Det finns. Om vi skapar en sträng med
new()operatorn, visas den i högen och i strängpoolen (om den inte redan finns). Om du skapar enStringmed hjälp av en bokstavlig, skapas den i strängpoolen (om den inte redan finns). En strängbassäng är ett lagringsområde i högen, som lagrar strängbokstavar. -
Kan du åsidosätta
privateellerstaticmetod i Java?En av java-knepiga intervjufrågor för nybörjare. Du kan verkligen inte åsidosätta
privateellerstaticmetod i Java.Du kan inte åsidosätta
privatemetoderna eftersom omfattningen av specificeraren för privat åtkomst endast är inom klassen. När du ska åsidosätta något ska vi ha föräldra- och barnklass. Om metoden för superklass ärprivate, kan barnklass inte använda den, och metoderna i barnklass kommer att behandlas som nya metoder (inte åsidosätts).Staticmetoder kan inte heller åsidosättas, eftersomstaticmetoder är en del av klassen själv och inte en del av något objekt i klassen. Visst kan du deklarera sammastaticmetod med samma signatur i barnklasser, men återigen kommer de att behandlas som nya metoder. -
Skillnaden mellan
Abstract ClassochInterfaceEn av de populära intervjufrågorna för Java-utvecklare som har med OOP-principerna att göra. Först av allt, i Java
interfacedefinierar ett beteende ochabstract classskapar hierarki.Abstrakt klass Gränssnitt Det är möjligt att ha en metodkropp (icke-abstrakta metoder) i abstrakt klass Gränssnitt kan bara ha abstrakta metoder. I Java 8 eller senare blev det möjligt att definiera standardmetoder och implementera dem direkt i gränssnittet. Gränssnitt i Java 8 kan också ha statiska metoder. Instansvariabler kan vara i abstrakt klass Ett gränssnitt kan inte ha instansvariabler. Konstruktörer är tillåtna Gränssnittet kan inte ha någon konstruktor. Statiska metoder är tillåtna Statiska metoder är inte tillåtna Klass kan bara ha en abstrakt förälder Ett gränssnitt kan implementera olika klasser Den abstrakta klassen kan tillhandahålla implementeringen av gränssnittet. Gränssnittet kan inte tillhandahålla implementeringen av den abstrakta klassen. En abstrakt klass tillåts utöka den andra Java-klassen och implementera flera Java-gränssnitt. Ett gränssnitt får endast utöka det andra Java-gränssnittet. En abstrakt Java-klass kan ha privata och skyddade klassmedlemmar Medlemmar av ett Java-gränssnitt är offentliga som standard -
Kan vi deklarera
staticvariabler och metoder i enabstractklass?Ja, det är möjligt att deklarera
staticvariabler och metoder iabstractmetod. Det finns inget krav på att göra ett objekt för att komma åt det statiska sammanhanget. Så vi får komma åt det statiska sammanhanget som deklareras inuti klassen genom att använda klassensabstractnamn .abstract -
Vilka typer av minnesområden tilldelas av JVM?
Klassområde lagrar perklassstrukturer, till exempel körtidskonstantpool, fält, metoddata och all kod för metoder.
Heap är ett runtime-dataområde där minne allokeras till objekten.
Stack lagrar ramar. Den innehåller lokala variabler och delresultat och deltar i metodanrop och retur. Varje tråd har en privat JVM-stack, skapad samtidigt som tråden. En ny ram skapas varje gång en metod anropas. En ram förstörs när dess metodanrop är klar.
Programräknareregistret innehåller en adress till den Java-virtuella maskininstruktion som för närvarande körs.
Native Method Stack innehåller alla inbyggda metoder som används i applikationen.
-
Varför är multipelarv inte tillåtet i java?
Det skulle vara riktigt komplicerat. Föreställ dig tre klasser
A,B, ochCochCärverAochB. Nu,AochBklasser har samma metod och du anropar det från ett underordnat klassobjekt... Vilken?As ellerBs? Här har vi oklarhet.om du försöker ärva två klasser gör Java kompileringstidsfel.
-
Kan vi överbelasta
main()metoden?Visst, vi får ha många
mainmetoder i ett Java-program genom att använda metodöverbelastning. Testa! -
Kan vi deklarera en konstruktör som
final?Nej. En konstruktör kan inte deklareras som en
finaleftersom den inte kan ärvas. Så det är meningslöst att deklarera konstruktörer somfinal. Men om du försöker göra det, ger Java-kompilatorn dig ett fel. -
Kan vi deklarera ett gränssnitt som
final?Nej, vi kan inte göra det här. Ett gränssnitt kan inte bero
finalpå att gränssnittet ska implementeras av någon klass enligt dess definition. Därför är det ingen mening att skapa ett gränssnittfinal. Men om du försöker göra det kommer kompilatorn att visa ett fel. -
Vad är skillnaden mellan
static bindingochdynamic binding?Det
bindingsom kan lösas vid kompilering av kompilatorn kallasstaticeller tidig bindning.Bindingav allastatic,privateochfinalmetoder görs vid kompilering.I
Dynamic bindingkompilatorn kan inte välja en metod som ska anropas. Åsidosättande är ett perfekt exempel pådynamic binding. I åsidosättande har både förälder- och barnklasser samma metod.Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } } -
Hur skapar man en skrivskyddad klass i Java?
Du kan göra det genom att göra alla klassens fält privata. Den skrivskyddade klassen har endast getter-metoder som returnerar klassens privata egendom till metoden
main. Du kan inte ändra den här egenskapen, anledningen är avsaknaden av sättermetoden.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } } -
Hur skapar man en skrivbara klass i Java?
Återigen bör du göra alla klassens fält
private. Nu ska din skrivbara klass bara ha setter-metoder och inga getters. Därför kan vi inte läsa klassens egenskaper.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } } -
Varje
tryblock måste väl följas av ettcatchblock?Nej. Det är inte en nödvändighet. Varje
tryblock kan vara utancatchblock. Det kan följas av antingen ett catchblock eller ett finalblock eller till och med utan dem alls.public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }Produktion:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Ytterligare ett exempel:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }Produktion:
test
PS: Tidigare kunde Java 8-metoder i gränssnitt endast ha varit abstrakta. I Java 8 eller senare blev det möjligt att definiera standardmetoder och implementera dem direkt i gränssnittet. -
Vad är skillnaden mellan
throwochthrowsnyckelord?Throwsanvänds för att deklarera ett undantag, så det fungerar på samma sätt somtry-catchblocket.Thrownyckelord används för att skapa ett undantag uttryckligen från en metod eller något annat kodblock.Throwföljs av en instans avExceptionklass och kast följs av undantagsklassnamn.Throwanvänds i metodkroppen för att kasta ett undantag.Throwsanvänds i en metodsignatur för att deklarera de undantag som kan förekomma i de satser som finns i metoden.Det är tillåtet att kasta ett undantag i taget men du kan hantera flera undantag genom att deklarera dem med
thrownyckelord. Du kan deklarera flera undantag, t.ex.public void method()throws IOException,SQLException.
GO TO FULL VERSION