CodeGym /Blog Jawa /Acak /Top 50 pitakonan lan jawaban wawancara kerja kanggo Java ...
John Squirrels
tingkat
San Francisco

Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core. Bagean 1

Diterbitake ing grup
Hello everyone, Ladies lan gentlemen, software engineers! Ayo ngomong babagan pitakonan wawancara. Babagan apa sing kudu disiapake lan sampeyan kudu ngerti. Iki minangka wektu sing apik kanggo nyemak utawa nyinaoni poin-poin kasebut kanggo pisanan. Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 1 Aku rampung karo koleksi pitakonan sing kerep ditakoni babagan OOP, sintaks Jawa, pengecualian Jawa, koleksi, lan multithreading, sing bakal dakpérang dadi sawetara bagéan kanggo penak. Iku angel kanggo nutupi kabeh bebarengan, nanging aku ngarep-arep materi iki bakal nyedhiyani pondasi apik kanggo wong-wong sing nyiapake kanggo golek proyek pisanan minangka programmer. Kanggo pangerten lan penylametan sing paling apik, aku menehi saran kanggo nyisir uga sumber liyane. Sampeyan bisa ngerteni konsep sing luwih jero kanthi nyedhaki saka macem-macem sudut. penting:Kita mung bakal ngomong babagan Jawa sadurunge versi 8. Kabeh inovasi sing teka ing versi 9, 10, 11, 12, lan 13 ora bakal dianggep ing kene. Sembarang gagasan/komentar babagan carane nambah jawaban ditampa . Seneng maca. Ayo budal!

Wawancara Jawa: pitakonan babagan OOP

1. Kepriye watake basa Jawa?

Wangsulan:
  1. Konsep OOP:

    1. orientasi obyek
    2. pusaka
    3. enkapsulasi
    4. polimorfisme
    5. abstraksi
  2. Cross-platform: Program Java bisa ditindakake ing platform apa wae tanpa owah-owahan. Mesthi, iki mbutuhake JVM (mesin virtual Java) sing diinstal.

  3. Kinerja dhuwur: Compiler Just-In-Time (JIT) ndadekake kinerja dhuwur. Compiler JIT ngowahi bytecode menyang kode mesin lan banjur JVM miwiti eksekusi.

  4. Multithreading: JVM nggawe utas eksekusi sing diarani main thread. A programmer bisa nggawe macem-macem Utas dening deriving saka kelas Utas utawa ngleksanakake antarmuka Runnable.

2. Apa sing diarani pusaka?

Warisan tegese siji kelas bisa marisi kelas liyane (nggunakake tembung kunci extends ). Iki tegese sampeyan bisa nggunakake maneh kode saka kelas sing sampeyan warisake. Kelas sing wis ana dikenal minangka kelas superclasslan kelas sing mentas digawe yaiku subclass. Wong uga ngomong nggunakake istilah wong tuwa lan child.

public class Animal {
   private int age;
}

public class Dog extends Animal {

}
ngendi Animaliku parentlan Dogiku child.

3. Apa enkapsulasi?

Pitakonan iki asring ditakoni ing wawancara kanggo posisi pangembang Jawa. Enkapsulasi ndhelikake implementasine kanthi nggunakake modifiers akses, getter, lan setter. Iki ditindakake kanggo nyegah akses eksternal ing ngendi wae pangembang mikir yen perlu. Conto prasaja saka urip nyata yaiku mobil. Kita ora duwe akses langsung menyang operasi mesin. Kabeh sing perlu dilakoni yaiku nyelehake kunci ing kontak lan nguripake mesin. Proses sing ditindakake ing sangisore tutup ora ana urusan kita. Kajaba iku, yen kita ngganggu aktivitas mesin, bisa nyebabake kahanan sing ora bisa ditebak, bisa uga ngrusak mobil lan nyebabake cilaka awak. Persis bab sing padha kedadeyan ing pemrograman. Iki diterangake kanthi apik ing Wikipedia. Ana uga artikel babagan enkapsulasi ing CodeGym .

4. Apa polimorfisme?

Polimorfisme minangka kemampuan program kanggo nambani obyek kanthi antarmuka sing padha kanthi cara sing padha, tanpa informasi babagan jinis tartamtu obyek kasebut. Kaya sing diucapake, "siji antarmuka - akeh implementasine". Kanthi polimorfisme, sampeyan bisa nggabungake lan nggunakake macem-macem jinis obyek adhedhasar prilaku sing dienggo bareng. Contone, kita duwe kelas Animal sing duwe loro keturunan: Dog lan Kucing. Kelas Animal generik nduweni prilaku sing dituduhake dening kabeh, kemampuan kanggo nggawe swara. Kita nggunakake kapabilitas polimorfik nalika kita kudu nglumpukake kabeh sing marisi kelas Animal lan nglakokake metode "nggawe swara". Mangkene carane katon:

List<Animal> animals = Arrays.asList(new Cat(), new Dog(), new Cat());
animals.forEach(animal -> animal.makeSound());
Ing tembung liya, polimorfisme mbiyantu. Lan iki uga ditrapake kanggo metode polymorphic (overloaded). Cara nggunakake polimorfisme

Wawancara babagan sintaksis basa Jawa

5. Apa sing diarani konstruktor ing basa Jawa?

Konstruktor nduweni ciri ing ngisor iki:
  1. Nalika obyek anyar digawe, program nggunakake konstruktor cocok kanggo nggawe.
  2. Konstruktor kaya metode. Fitur khas kasebut yaiku ora ana nilai bali (kalebu void) lan jenenge padha karo jeneng kelas.
  3. Yen ora ana konstruktor sing digawe kanthi tegas, konstruktor kosong digawe kanthi otomatis.
  4. Konstruktor bisa diganti.
  5. Yen sampeyan ngumumake konstruktor kanthi paramèter nanging uga butuh sing tanpa paramèter, mula sampeyan kudu nggawe kanthi kapisah, amarga ora bakal digawe kanthi otomatis.

6. Kang loro kelas ora oleh warisan Obyek?

Aja diapusi karo pitakonan trick - ora ana kelas kasebut. Kabeh kelas oleh warisan kelas Obyek salah siji langsung utawa liwat leluhur!

7. Apa variabel lokal?

Iki minangka pitakonan wawancara populer liyane kanggo pangembang Jawa. Variabel lokal yaiku variabel sing ditetepake ing njero metode lan ana sajrone metode kasebut dieksekusi. Sanalika eksekusi rampung, variabel lokal ora ana. Iki minangka program sing nggunakake variabel lokal sing jenenge helloMessage ing metode utama ():

public static void main(String[] args) {
   String helloMessage;
   helloMessage = "Hello, World!";
   System.out.println(helloMessage);
}

8. Apa variabel conto?

Variabel instance yaiku variabel sing diumumake ing kelas. Iku ana anggere obyek ana. Contone, kita duwe kelas Bee, sing duwe rong variabel conto - nectarLoad lan maxNectarLoad:

public class Bee {

   /**
    * Current nectar load
    */
   private double nectarLoad;

   /**
    * Maximum nectar that can the bee can collect.
    */
   private double maxNectarLoad = 20.0;
 
  ...
}

9. Apa sing modifikasi akses?

Modifiers akses minangka mekanisme kanggo ngatur akses menyang kelas, metode, lan variabel. Modifiers ing ngisor iki ana, didaftar supaya bisa nambah akses:
  1. private- Modifier akses iki digunakake ing cara, lapangan lan konstruktor. Akses diwatesi kanggo kelas sing diumumake.
  2. package-private (default)— Iki minangka tingkat akses standar kanggo kelas. Akses diwatesi kanggo paket tartamtu ing ngendi kelas, metode, variabel, utawa konstruktor diumumake.
  3. protected- Modifier akses iki nawakake tingkat akses sing padha karo package-privatetambahan akses kanggo kelas sing marisi kelas karo protectedmodifier.
  4. public- Tingkat akses iki uga digunakake kanggo kelas. Tingkat akses iki tegese ana akses lengkap ing saindhenging aplikasi.
Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 2

10. Apa metode overriding?

We override cara nalika kelas anak pengin ngganti prilaku kelas induk. Yen kita uga kudu nindakake apa ing cara tiyang sepah, kita bisa nggunakake super.methodName () ing anak, kang bakal nglakokaké cara tuwane. Kita bisa nambah logika tambahan sawise iku. Persyaratan sing kudu ditindakake:
  • teken cara kudu padha
  • Nilai bali kudu padha

11. Apa sing diarani metode teken?

Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 3Tandha metode yaiku kombinasi jeneng metode lan argumen sing ditindakake metode kasebut. Tandha metode minangka pengenal unik metode nalika overloading metode.

12. Apa metode overloading?

Overloading metode minangka fitur polimorfisme sing ngganti tandha cara kanggo nggawe macem-macem metode sing nindakake tumindak sing padha:
  • jeneng padha
  • bantahan beda
  • bisa ana macem-macem jinis bali
Contone, metode ArrayListkelas add()bisa kakehan, ngidini kita nambah kanthi cara sing beda-beda gumantung saka argumen input:
  • add(Object o)- Cara iki mung nambah obyek
  • add(int index, Object o)- Cara iki nambah obyek ing indeks tartamtu
  • add(Collection<Object> c)- Cara iki nambah dhaptar obyek
  • add(int index, Collection<Object> c)- Cara iki nambah dhaptar obyek sing diwiwiti saka indeks tartamtu.

13. Apa antarmuka?

Jawa ora ndhukung sawetara warisan. Kanggo ngatasi watesan iki, antarmuka ditambahake ing wangun sing kita kenal lan tresna;) Kanggo dangu, antarmuka mung duwe cara tanpa implementasine. Ing konteks jawaban iki, ayo ngomong babagan dheweke. Tuladhane:


public interface Animal {
   void makeSound();
   void eat();
   void sleep();
}
Sawetara rincian tindakake saka iki:
  • Kabeh cara ing antarmuka umum lan abstrak
  • Kabeh variabel minangka final statis umum
  • Kelas ora marisi antarmuka (yaiku kita ora nggunakake tembung kunci ngluwihi). Nanging, kelas ngleksanakake (yaiku kita nggunakake tembung kunci implements). Kajaba iku, sampeyan bisa ngleksanakake akeh antarmuka sing dikarepake.
  • Kelas sing ngleksanakake antarmuka kudu nyedhiyani implementasine kabeh cara sing ana ing antarmuka.
Kaya iki:

public class Cat implements Animal {
   public void makeSound() {
       // Method implementation
   }

   public void eat() {
       // Implementation
   }

   public void sleep() {
       // Implementation
   }
}

14. Apa cara standar ing antarmuka?

Saiki ayo ngomong babagan metode standar. Apa padha kanggo? Wong-wong mau kanggo sapa? Cara kasebut ditambahake kanggo ngladeni "tangan loro". Aku ngomong apa? Inggih, ing tangan siji, ana perlu kanggo nambah fungsi anyar: lambdas lan API Stream. Ing sisih liya, perlu kanggo njaga apa sing misuwur ing Jawa - kompatibilitas mundur. Kanggo nindakake iki, antarmuka mbutuhake sawetara solusi siap-siap anyar. Iki carane cara standar teka kanggo kita. Cara standar minangka cara sing ditindakake ing antarmuka, ditandhani nganggo defaulttembung kunci. Contone, cara kondhang stream()ing Collectionantarmuka. Pracayaa, antarmuka iki ora kaya prasaja. Utawa uga forEach()cara merata misuwur ingIterableantarmuka. Uga ora ana nganti cara standar ditambahake. Miturut cara, sampeyan uga bisa maca babagan CodeGym kene .

15. Kepiye carane bisa entuk rong cara standar sing padha?

Wangsulan sadurunge babagan cara standar bakal dadi pitakonan liyane. Yen sampeyan bisa ngleksanakake metode ing antarmuka, banjur miturut teori sampeyan bisa ngleksanakake rong antarmuka kanthi cara sing padha. Kepiye carane nindakake? Ing ngisor iki ana rong antarmuka sing beda kanthi cara sing padha:

interface A {
   default void foo() {
       System.out.println("Foo A");
   }
}

interface B {
   default void foo() {
       System.out.println("Foo B");
   }
}
Lan kita duwe kelas sing ngleksanakake loro antarmuka iki. Nanging kepiye carane milih cara tartamtu ing antarmuka A utawa B? Konstruksi khusus ing ngisor iki ngidini A.super.foo():

public class C implements A, B {
   public void fooA() {
       A.super.foo();
   }

   public void fooB() {
       B.super.foo();
   }
}
Mangkono, fooA()metode kasebut bakal nggunakake foo()metode antarmuka standar A, dene fooB()metode kasebut bakal nggunakake foo()metode antarmuka B.

16. Apa metode lan kelas abstrak?

Ing basa Jawa, abstracttembung lingga. Iki digunakake kanggo nunjukake kelas lan metode abstrak. Kaping pisanan, kita butuh definisi. Metode abstrak yaiku metode sing diumumake nggunakake abstracttembung kunci tanpa implementasine ing kelas abstrak. Yaiku, iki minangka cara kaya ing antarmuka, nanging kanthi tambahan tembung kunci, umpamane:

public abstract void foo();
Kelas abstrak minangka kelas sing uga ditandhani karo abstracttembung kunci:

public abstract class A {

}
Kelas abstrak nduweni sawetara fitur:
  • sampeyan ora bisa nggawe obyek saka kelas abstrak
  • bisa duwe cara abstrak
  • bisa uga ora duwe cara abstrak
Kelas abstrak dibutuhake kanggo abstraksi (ngapunten kanggo tautologi) sing nduweni seperangkat prilaku lan negara sing umum (yaiku metode lan variabel). Urip nyata kebak conto. Kabèh ing saubengé. "Kewan", "Mobil", "Gambar geometris", lan liya-liyane.

17. Apa bedane antarane String, StringBuilder lan StringBuffer?

StringNilai disimpen ing blumbang senar pancet. Sanalika senar digawe, katon ing blumbang iki. Lan sampeyan ora bisa mbusak. Tuladhane:

String name = "book";
Variabel bakal tumuju menyang blumbang string konstan Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 4Nyetel variabel jeneng menyang nilai sing beda, kita duwe:

name = "pen";
Kolam senar pancet katon kaya iki: Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 5Ing tembung liyane, loro nilai tetep ana. String Buffer:
  • StringNilai disimpen ing tumpukan. Yen nilai diganti, banjur nilai anyar bakal ngganti sing lawas.
  • String Bufferwis diselarasake lan mulane thread aman.
  • Amarga safety thread, kinerja kurang.
Tuladha:

StringBuffer name = “book”;
Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 6Sanalika ing Nilai saka owah-owahan jeneng variabel, Nilai ing tumpukan owah-owahan: Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 7StringBuilder persis padha StringBuffer, mung iku ora Utas aman. Akibaté, iku noticeably luwih cepet saka StringBuffer.

18. Apa bedane kelas abstrak lan antarmuka?

Kelas abstrak:
  • Kelas abstrak duwe konstruktor standar. Iki diarani saben turunan saka kelas abstrak digawe.
  • Padha bisa kalebu loro cara abstrak lan non-abstrak. Umumé, kelas abstrak ora kudu duwe metode abstrak.
  • Kelas sing entuk warisan abstrak mung kudu ngetrapake metode abstrak.
  • Kelas abstrak bisa duwe variabel conto (pirsani Pitakonan #5).
Antarmuka:
  • Antarmuka ora duwe konstruktor lan ora bisa diinisialisasi.
  • Mung cara abstrak sing bisa ditambahake (kajaba cara standar).
  • Kelas sing ngetrapake antarmuka kudu ngetrapake kabeh metode (kajaba cara standar).
  • Antarmuka mung bisa duwe konstanta.

19. Apa ngakses unsur ing array O (1)?

Pitakonan iki ditakoni ing wawancara pungkasan. Kaya sing wis daksinaoni mengko, tujuane pitakonan iki yaiku kanggo ndeleng kepiye pikirane wong. Cetha, ora ana nilai praktis ing kawruh iki. Cukup ngerti wae. Kaping pisanan, kita kudu njlentrehake manawa O (1) minangka notasi kanggo kerumitan wektu algoritma "wektu konstan". Ing tembung liyane, sebutan iki nuduhake wektu eksekusi paling cepet. Kanggo njawab pitakonan iki, kita kudu nimbang apa sing kita ngerti babagan array. Kanggo nggawe intarray, kita kudu nulis ing ngisor iki:

int[] intArray = new int[100];
Saperangan kesimpulan bisa dijupuk saka sintaksis iki:
  1. Nalika larik diumumake, jinis kasebut dikenal. Yen jinis kasebut dikenal, mula ukuran saben sel ing larik kasebut dikenal.
  2. Ukuran kabeh array dikenal.
Mulane, kanggo ngerti sel sing arep ditulis, kita mung kudu ngetung area memori sing arep ditulis. Kanggo komputer, iki gampang banget. Komputer ngerti ngendi memori sing diparengake diwiwiti, jumlah unsur, lan ukuran saben sel. Kabeh iki tegese papan kanggo nulis bakal padha karo papan wiwitan array + ukuran saben sel sing dikali indeks.

Dadi, kepiye kita tekan O (1) nalika ngakses obyek ing ArrayList?

Pitakonan iki langsung ngetutake sing sadurunge. Bebener nalika nggarap array sing nduweni primitif, kita ngerti sadurunge (ing wektu nggawe) ukuran jinis unsur. Nanging apa sing kudu ditindakake yen kita duwe hierarki warisan iki lan Top 50 pitakonan lan jawaban wawancara kerja kanggo Java Core.  Bagean 1 - 8kita pengin nggawe koleksi kanggo unsur jinis A lan nambah implementasine beda (B, C, lan D):

List<A> list = new ArrayList();
list.add(new B());
list.add(new C());
list.add(new D());
list.add(new B());
Ing kahanan iki, kepiye carane ngetung ukuran saben sel? Sawise kabeh, saben obyek bakal beda, bisa uga karo lapangan tambahan beda. Apa sing kudu ditindakake? Ing kene pitakonan kasebut diajukake kanthi cara kanggo mbingungake sampeyan. Kita ngerti manawa koleksi kasebut ora langsung nyimpen obyek. Iku mung nyimpen referensi kanggo obyek. Lan kabeh referensi duwe ukuran padha, lan dikenal. Akibaté, kita ngetung alamat ing kene kanthi cara sing padha kaya ing pitakonan sadurunge.

21. Autoboxing lan unboxing

Latar mburi sajarah: autoboxing lan unboxing minangka sawetara inovasi utama ing JDK 5. Autoboxing minangka proses konversi otomatis saka jinis primitif menyang kelas bungkus sing cocog. Unboxing minangka kebalikan saka autoboxing. Iki minangka proses ngowahi kelas bungkus dadi primitif. Nanging yen regane bungkus yaiku null, banjur a NullPointerExceptionbakal dibuwang nalika unboxing.

Primitif lan pambungkus sing cocog

Primitif Kelas pambungkus
boolean Boolean
int Ongko
bait Byte
char Watak
ngambang ngambang
dawa dawa
cendhak Singkat
pindho pindho

// Autoboxing kedadeyan:

  • nalika menehi primitif kanggo referensi menyang kelas pambungkus:

    Sadurunge Jawa 5:

    
    // Manual boxing (the way it was BEFORE Java 5).
    public void boxingBeforeJava5() {
       Boolean booleanBox = new Boolean(true);
       Integer intBox = new Integer(3);
       // And so on for other types
    }
    
    After Java 5:
    // Automatic boxing (the way it became in Java 5).
    public void boxingJava5() {
       Boolean booleanBox = true;
       Integer intBox = 3;
       // And so on for other types
    }
    
  • nalika primitif diterusake minangka argumen kanggo metode sing ngarepake pambungkus:

    
    public void exampleOfAutoboxing() {
       long age = 3;
       setAge(age);
    }
    
    public void setAge(Long age) {
       this.age = age;
    }
    

// Unboxing kedadeyan:

  • nalika kita nemtokake conto kelas pambungkus menyang variabel primitif:

    
    // BEFORE Java 5:
    int intValue = new Integer(4).intValue();
    double doubleValue = new Double(2.3).doubleValue();
    char c = new Character((char) 3).charValue();
    boolean b = Boolean.TRUE.booleanValue();
    
    // And after JDK 5:
    int intValue = new Integer(4);
    double doubleValue = new Double(2.3);
    char c = new Character((char) 3);
    boolean b = Boolean.TRUE;
    
  • Sajrone operasi aritmetika. Operasi mung ditrapake kanggo jinis primitif, mula unboxing menyang primitif perlu.

    
    // BEFORE Java 5:
    Integer integerBox1 = new Integer(1);
    Integer integerBox2 = new Integer(2);
    
    // A comparison used to require this:
    integerBox1.intValue() > integerBox2.intValue()
          
    // In Java 5
    integerBox1 > integerBox2
    
  • nalika ngliwati conto kelas pambungkus menyang metode sing njupuk primitif sing cocog:

    
    public void exampleOfAutoboxing() {
       Long age = new Long(3);
       setAge(age);
    }
    
    public void setAge(long age) {
       this.age = age;
    }
    

22. Apa tembung kunci pungkasan lan ngendi digunakake?

Tembung finalkunci bisa digunakake ing variabel, metode, lan kelas.
  1. Nilai variabel pungkasan ora bisa diganti sawise diinisialisasi.
  2. Kelas pungkasan steril :) Ora bisa duwe anak.
  3. Cara pungkasan ora bisa diganti dening turunan.
Kita wis nutupi barang tingkat dhuwur. Saiki ayo nyilem luwih jero.

Variabel pungkasan

Jawa menehi kita rong cara kanggo ngumumake variabel lan menehi nilai kasebut:
  1. Sampeyan bisa wara-wara variabel lan initialize mengko.
  2. Sampeyan bisa ngumumake variabel lan nemtokake nilai langsung.
Mangkene conto sing nuduhake panggunaan variabel pungkasan:

public class FinalExample {

   // A static final variable that is immediately initialized:
   final static String FINAL_EXAMPLE_NAME = "I'm likely the final one";

   // A final variable that is not initialized, but will only work if you
   // initialize it in the constructor:
   final long creationTime;

   public FinalExample() {
       this.creationTime = System.currentTimeMillis();
   }

   public static void main(String[] args) {
       FinalExample finalExample = new FinalExample();
       System.out.println(finalExample.creationTime);

       // The final FinalExample.FINAL_EXAMPLE_NAME field cannot be accessed
//    FinalExample.FINAL_EXAMPLE_NAME = "Not you're not!";

       // The final Config.creationTime field cannot be accessed
//    finalExample.creationTime = 1L;
   }
}

Apa variabel final bisa dianggep konstan?

Awit kita ora bisa nemtokake nilai anyar kanggo variabel final, misale jek sing iki variabel pancet. Nanging mung sepisanan: Yen jinis data variabel yaiku immutable, banjur, ya, iku konstanta. Nanging yen jinis data mutable, yaiku, bisa diganti, mula bisa nggunakake metode lan variabel kanggo ngganti nilai obyek sing dirujuk dening variabel final. Amarga iki, ora bisa diarani konstanta. Conto ing ngisor iki nuduhake yen sawetara variabel pungkasan pancen konstan, dene liyane ora, amarga bisa diganti.

public class FinalExample {

   // Immutable final variables
   final static String FINAL_EXAMPLE_NAME = "I'm likely the final one";
   final static Integer FINAL_EXAMPLE_COUNT  = 10;

   // Mutable final variables
   final List<String> addresses = new ArrayList();
   final StringBuilder finalStringBuilder = new StringBuilder("Constant?");
}

Variabel final lokal

Nalika finalvariabel digawe ing metode, diarani variabel local final:

public class FinalExample {

   public static void main(String[] args) {
       // You can do this
       final int minAgeForDriveCar = 18;

       // Or you can do this, in a for-each loop:
       for (final String arg : args) {
           System.out.println(arg);
       }
   }

}
Kita bisa nggunakake tembung kunci pungkasan ing daur ulang sing ditingkatake, amarga variabel anyar digawe sawise saben pengulangan daur ulang. Elinga yen iki ora ditrapake kanggo daur ulang normal, mula kita bakal entuk kesalahan wektu kompilasi.

// The final local j variable cannot be assigned
for (final int i = 0; i < args.length; i ++) {
   System.out.println(args[i]);
}

Kelas pungkasan

Kelas sing diumumake finalora bisa ditambahi. Kanthi luwih gampang, ora ana kelas liyane sing bisa marisi. Conto apik banget saka finalkelas ing JDK yaiku String. Langkah pisanan kanggo nggawe kelas sing ora bisa diganti yaiku menehi tandha minangka final, saéngga nyegah supaya ora ditambahi:

public final class FinalExample {
}

// Compilation error!
class WantsToInheritFinalClass extends FinalExample {
}

Cara pungkasan

Nalika sawijining metode ditandhani pungkasan, diarani metode pungkasan (masuk akal, ta?). Cara pungkasan ora bisa diganti ing kelas anak. Incidentally, kelas Obyek kang Enteni () lan notifikasi () cara final, supaya kita ora duwe kemampuan kanggo ngatasi.

public class FinalExample {
   public final String generateAddress() {
       return "Some address";
   }
}

class ChildOfFinalExample extends FinalExample {

   // Compilation error!
   @Override
   public String generateAddress() {
       return "My OWN Address";
   }
}

Carane lan ngendi nggunakake final ing Jawa

  • Gunakake tembung kunci pungkasan kanggo nemtokake sawetara konstanta tingkat kelas;
  • Nggawe variabel pungkasan kanggo obyek sing sampeyan ora pengin diganti. Contone, properti khusus obyek sing bisa digunakake kanggo logging.
  • Yen sampeyan ora pengin kelas ditambahi, banjur tandhani minangka final.
  • Yen sampeyan kudu nggawe kelas immutable, sampeyan kudu nggawe final.
  • Yen sampeyan pengin implementasine metode ora ngganti turunane, banjur tandhani metode kasebut minangka final. Iki penting banget kanggo mesthekake yen implementasine ora owah.

23. Apa jinis sing bisa owah lan ora owah?

Mutable

Obyek sing bisa diganti yaiku obyek sing negara lan variabel bisa diganti sawise digawe. Conto kelas sing bisa diganti kalebu StringBuilder lan StringBuffer. Tuladha:

public class MutableExample {

   private String address;

   public MutableExample(String address) {
       this.address = address;
   }

   public String getAddress() {
       return address;
   }

   // This setter can change the name field
   public void setAddress(String address) {
       this.address = address;
   }

   public static void main(String[] args) {

       MutableExample obj = new MutableExample("First address");
       System.out.println(obj.getAddress());

       // We are updating the name field, so this is a mutable object
       obj.setAddress("Updated address");
       System.out.println(obj.getAddress());
   }
}

ora bisa owah

Obyek sing ora bisa diganti yaiku obyek sing status lan variabel ora bisa diganti sawise obyek digawe. Kunci sing apik kanggo HashMap, apa ora? :) Contone, String, Integer, Double, lan liya-liyane. Tuladha:

// We'll make this class final so no one can change it
public final class ImmutableExample {

   private String address;

   ImmutableExample(String address) {
       this.address = address;
   }

   public String getAddress() {
       return address;
   }

   // We remove the setter

   public static void main(String[] args) {

       ImmutableExample obj = new ImmutableExample("Old address");
       System.out.println(obj.getAddress());

       // There is no way to change this field, so it is an immutable object
       // obj.setName("new address");
       // System.out.println(obj.getName());

   }
}
Ing bagean sabanjure, kita nimbang pitakonan lan jawaban babagan koleksi. Profilku ing GitHub Top 50 pitakonan wawancara kerja lan jawaban kanggo Java Core. Bagean 2
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION