-
"Demonter"
public static void main(String args[]).Et av de populære java-intervjuspørsmålene for ferskere, og veldig enkelt.
-
publicer en tilgangsmodifikator. Vi bruker den til å spesifisere tilgangen til denne metoden. Her er modifikator "offentlig", så enhver klasse har tilgang til denne metoden. -
static. Dette Java-nøkkelordet betyr at vi bruker denne metoden uten å lage et nytt objekt i en klasse. -
Voider returtypen til metoden. Det betyr at metoden ikke returnerer noen verdi. -
mainer navnet på metoden. JVM "kjenner" det som et inngangspunkt til en applikasjon (den bør ha en spesiell signatur).Mainer en metode hvor hovedutførelsen skjer. -
String args[]. Dette er parameteren som sendes til hovedmetoden. Her har vi argumentene av strengtype som Java-applikasjonen din godtar når du kjører den. Du kan skrive dem på terminalen.
-
-
Hva er forskjellen mellom
equals()og==?For det første er "
==" en operatør mens detequals()er en metode. Vi bruker==operatør for referansesammenligning (eller adressesammenligning) ogequals()metode for innholdssammenligning. Det betyr at==sjekker om begge objektene peker til samme minneplassering mensequals()sammenligner verdier i objektene. -
Kan vi kjøre et program uten
main()metode?Mange grunnleggende intervjuspørsmål i Java er veldig enkle. Som denne. Så kort svar er: ja, det kan vi. For eksempel kan vi gjøre det ved å bruke statisk blokk.
Du kan bruke statisk blokk for å initialisere det statiske datamedlemmet. Den utføres før
mainmetoden, på tidspunktet for lasting av klasse.class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }Utgangen er:
static block is invoked Now main method Hva med totalt hovedmetodefravær? Hvis du prøver å kjøre en vanlig klasse uten hovedmetoden i det hele tatt, fikk du neste feilmelding: Hovedmetode ikke funnet i klassen Test, vennligst definer hovedmetoden som: public static void main (String [] args) eller en JavaFX-applikasjon klasse må utvide javafx.application.Application. Selve feilen sier at hvis dette er en JavaFX-applikasjon og klassen er arvet fra javafx.application.Application, så er det mulig.
-
Hva er
immutableobjekt? Kan du lageimmutableobjekter?Du kan ikke endre objekter i en
immutableklasse etter at de er opprettet. Så når du først har opprettet dem, kan du ikke endre dem. Hvis du prøver å endreImmutableobjektet får du et nytt objekt (klone) og endrer denne klonen mens du oppretter.Et godt eksempel er
String, det erimmutablei Java. Det betyr at du ikke kan endre selve objektet, men du kan endre referansen til objektet. -
Hvor mange objekter opprettes i følgende kode?
Et av java-tekniske intervjuspørsmål som erstatter #4.
String s1="Hello"; String s2="Hello"; String s3="Hello";Svaret er "bare én" fordi Java har en strengpool. Når vi lager et String-objekt ved å bruke new()-operatoren, oppretter det et nytt objekt i heap-minnet. Hvis vi bruker String literal syntaks, som i vårt eksempel, kan det returnere et eksisterende objekt fra String pool, hvis det allerede eksisterer.
-
Hvor mange objekter opprettes i følgende kode?
String s = new String("Hello");Det er 2 objekter. Den ene er i strengkonstant pool (hvis den ikke allerede er til stede) og den andre er i haugen.
-
Hva er forskjellen mellom
StringogStringBuilderklasserStringBufferi Java?Det er en av lederne i de beste java-intervjuspørsmålene.
Først av alt
Stringer en uforanderlig klasse. Det betyr at du ikke kan endre innholdet når det først er opprettet. MensStringBufferogStringBuilderer foranderlige klasser, slik at du kan endre dem senere. Hvis vi endrer innholdet iStringobjektet, oppretter det en ny streng og endrer derfor ikke den opprinnelige. Det er derfor ytelsen medStringBufferer bedre enn medString.Hovedforskjellen mellom
StringBufferogStringBuilderdetsStringBuffermetoder er synkronisert mensStringBuilderdet ikke er det. -
Er det noen forskjell på
Stringat det ble opprettet ved hjelp av bokstavelig og mednew()operatør?Det er. Hvis vi lager en streng med
new()operatøren, vises den i heapen og i strengpoolen (hvis den ikke allerede er til stede). Hvis du oppretter enStringved hjelp av en bokstavelig, opprettes den i strengpoolen (hvis den ikke allerede er til stede). Et strengbasseng er et lagringsområde i haugen, som lagrer strengbokstaver. -
Kan du overstyre
privateellerstaticmetode i Java?Et av java vanskelige intervjuspørsmål for nybegynnere. Du kan virkelig ikke overstyre
privateellerstaticmetode i Java.Du kan ikke overstyre
privatemetodene fordi omfanget av spesifikasjonen for privat tilgang kun er innenfor klassen. Når du skal overstyre noe bør vi ha foreldre- og barneklasse. Hvis metode for superklasse erprivate, kan barneklassen ikke bruke den, og metodene i barneklassen vil bli behandlet som nye metoder (ikke overstyrt).StaticMetoder kan heller ikke overstyres, fordistaticmetoder er en del av selve klassen, og ikke en del av noe objekt i klassen. Klart du kan deklarere sammestaticmetode med samme signatur i barneklasser, men igjen, de vil bli behandlet som nye metoder. -
Forskjellen mellom
Abstract ClassogInterfaceEt av de populære intervjuspørsmålene for Java-utviklere som har sammenheng med OOP-prinsippene. Først av alt, i Java
interfacedefinerer en atferd ogabstract classskaper hierarki.Abstrakt klasse Grensesnitt Det er mulig å ha en metodekropp (ikke-abstrakte metoder) i abstrakt klasse Grensesnitt kan bare ha abstrakte metoder. I Java 8 eller nyere ble det mulig å definere standardmetoder og implementere dem direkte i grensesnittet. Grensesnitt i Java 8 kan også ha statiske metoder. Forekomstvariabler kan være i abstrakt klasse Et grensesnitt kan ikke ha forekomstvariabler. Konstruktører er tillatt Grensesnittet kan ikke ha noen konstruktør. Statiske metoder er tillatt Statiske metoder er ikke tillatt Klassen kan bare ha én abstrakt forelder Ett grensesnitt kan implementere forskjellige klasser Den abstrakte klassen kan gi implementeringen av grensesnittet. Grensesnittet kan ikke gi implementering av abstraktklassen. En abstrakt klasse har lov til å utvide den andre Java-klassen og implementere flere Java-grensesnitt. Et grensesnitt er kun tillatt å utvide det andre Java-grensesnittet. En abstrakt Java-klasse kan ha private og beskyttede klassemedlemmer Medlemmer av et Java-grensesnitt er offentlige som standard -
Kan vi deklarere
staticvariabler og metoder i enabstractklasse?Ja, det er mulig å deklarere
staticvariabler og metoder iabstractmetode. Det er ikke noe krav om å lage et objekt for å få tilgang til den statiske konteksten. Så vi har tilgang til den statiske konteksten som er deklarert inne iabstractklassen ved å bruke navnet påabstractklassen. -
Hvilke typer minneområder tildeles av JVM?
Klasseområde lagrer perklassestrukturer, for eksempel kjøretidskonstantpool, felt, metodedata og all koden for metoder.
Heap er et kjøretidsdataområde hvor minne er allokert til objektene.
Stack lagrer rammer. Den inneholder lokale variabler og delresultater, og tar del i metodeanrop og retur. Hver tråd har en privat JVM-stabel, opprettet samtidig med tråden. En ny ramme opprettes hver gang en metode påkalles. En ramme blir ødelagt når metodeanropet er fullført.
Program Counter Register inneholder en adresse til den virtuelle Java-maskininstruksjonen som kjøres for øyeblikket.
Native Method Stack inneholder alle de native metodene som brukes i applikasjonen.
-
Hvorfor er multippel arv ikke tillatt i java?
Det ville vært veldig komplisert. Tenk deg tre klasser
A,B, ogCogCarverAogB. Nå,AogBklasser har samme metode, og du kaller det fra et underordnet klasseobjekt... Hvilken?As ellerBs? Her har vi tvetydighet.hvis du prøver å arve to klasser, gjengir Java kompileringstidsfeil.
-
Kan vi overbelaste
main()metoden?Jada, vi har lov til å ha mange
mainmetoder i et Java-program ved å bruke metodeoverbelastning. Prøv det! -
Kan vi erklære en konstruktør som
final?Nei. En konstruktør kan ikke deklareres som en
finalfordi den ikke kan arves. Så det er meningsløst å erklære konstruktører somfinal. Men hvis du prøver å gjøre det, gir Java-kompilatoren deg en feil. -
Kan vi erklære et grensesnitt som
final?Nei, vi kan ikke gjøre dette. Et grensesnitt kan ikke være
finalfordi grensesnittet skal implementeres av en klasse i henhold til dens definisjon. Derfor er det ingen mening å lage et grensesnittfinal. Men hvis du prøver å gjøre det, vil kompilatoren vise en feil. -
Hva er forskjellen mellom
static bindingogdynamic binding?Det
bindingsom kan løses på kompileringstidspunktet av kompilatoren kallesstaticeller tidlig binding.Bindingav allestatic,privateogfinalmetodene gjøres ved kompilering.I
Dynamic bindingkompilator kan ikke velge en metode som skal kalles. Overstyring er et perfekt eksempel pådynamic binding. Ved overstyring har både foreldre- og barneklasser samme metode.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(); } } -
Hvordan lage en skrivebeskyttet klasse i Java?
Du kan gjøre det ved å gjøre alle klassens felt private. Den skrivebeskyttede klassen har bare getter-metoder som returnerer den private egenskapen til klassen til metoden
main. Du kan ikke endre denne egenskapen, årsaken er mangelen på setters-metoden.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } } -
Hvordan lage en skrivebeskyttet klasse i Java?
Igjen, du bør lage alle klassens felt
private. Nå skal skrivebeskyttet klasse kun ha setter-metoder og ingen gettere. Derfor kan vi ikke lese egenskapene til klassen.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } } -
Hver
tryblokk må vel følges av encatchblokk?Nei. Det er ikke en nødvendighet. Hver
tryblokk kan være utencatchblokk. Den kan bli etterfulgt av enten en catchblock eller en endelig blokk eller til og med uten dem i det hele tatt.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..."); } } }Produksjon:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Et eksempel til: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"); } } }Produksjon:
test
PS: Før Java 8-metoder i grensesnitt kunne bare vært abstrakte. I Java 8 eller nyere ble det mulig å definere standardmetoder og implementere dem direkte i grensesnittet. -
Hva er forskjellen mellom
throwogthrowssøkeord?Throwsbrukes til å erklære et unntak, så det fungerer på samme måte som blokkentry-catch.Thrownøkkelord brukes til å kaste et unntak eksplisitt fra en metode eller en annen kodeblokk.Throwetterfølges av en forekomst avExceptionklasse og kast etterfølges av unntaksklassenavn.Throwbrukes i metodekroppen for å kaste et unntak.Throwsbrukes i en metodesignatur for å deklarere unntakene som kan forekomme i setningene i metoden.Det er tillatt å kaste ett unntak om gangen, men du kan håndtere flere unntak ved å deklarere dem ved å bruke
thrownøkkelord. Du kan erklære flere unntak, f.eks.public void method()throws IOException,SQLException.
GO TO FULL VERSION