Java osnovni
Java osnovni
Java pregled
Koje su karakteristike Java jezika?
Objektno orijentisan (enkapsulacija, nasleđivanje, polimorfizam);
Nezavisnost platforme, konkretno se iskazuje, Java je "jednom napisati, svuda pokrenuti (Write Once, Run any Where)" programski jezik, zato programi napisani u Java jeziku imaju vrlo dobru prenosivost, ključni razlog zašto Java može to postići je postojanje Java virtuelne mašine. Nakon uvođenja JVM-a, Java jezik na različitim platformama ne mora ponovo da se kompajlira.
Pouzdanost, bezbednost;
Podrška za više niti. C++ nema ugrađeni mehanizam više niti, zato mora pozvati funkciju više niti operativnog sistema za dizajn programa više niti, dok Java jezik pruža podršku za više niti;
Podrška za mrežno programiranje i veoma pogodno. Jedan od razloga za Java jezik je dizajniran da pojednostavi mrežno programiranje;
Kompajliranje i interpretiranje koegzistiraju;
Koji je odnos između Jave i C++ koje su razlike?
- Oba su objektno orijentisana jezika, podržavaju enkapsulaciju, nasleđivanje i polimorfizam;
- C++ podržava pokazivače, dok Java nema koncept pokazivača;
- C++ podržava višestruko nasleđivanje, dok Java ne podržava višestruko nasleđivanje, ali dopušta da klasa implementira više interfejsa;
- Java je potpuno objektno orijentisan jezik, i takođe uklonila strukture i unije u C/C++, kompajler je jednostavniji;
- Java automatski radi operacije sakupljanja otpada, više ne treba programerima ručno da oslobađaju resurse, dok C++ mora program osloboditi memorijske resurse, što povećava teret programera.
- Java ne podržava preopterećenje operatora, preopterećenje operatora se smatra istaknutom karakteristikom C++;
- Java dopušta predobradu, ali ne podržava funkciju predobrade, zato za realizaciju predobrade, pruža naredbu uvoza (import), ali je slična funkciji predprocesora C++;
- Java ne podržava funkcije sa podrazumevanim parametrima, dok C++ podržava;
- C i C++ ne podržavaju promenjive stringova, u C i C++ programima koriste "Null" terminator predstavlja kraj stringa. U Java string se implementira kroz objekte klase (String i StringBuffer);
- naredba goto je "ostatak" C i C++, Java ne pruža naredbu goto, iako Java navodi goto kao ključnu reč, ali ne podržava njenu upotrebu, to čini program jednostavnijim i čitljivijim;
- Java ne podržava automatsku promenu tipova C++-a, ako je potrebno, mora biti eksplicitno izvršena promena tipova.
Koji je odnos između JVM, JRE i JDK?
JDK je skraćenica za Java Development Kit, to je potpuno funkcionalan Java SDK, ima sve što JRE ima, i kompajler javac i alate, kao što su javadoc i jdb i druge naredbe. JDK može kreirati i kompajlirati Java programe.
JRE je skraćenica za Java Runtime Environment, može pokrenuti kompajlirane Java programe. Uključuje Java virtuelnu mašinu (JVM), Java klasnu biblioteku, java naredbu i druge osnovne komponente. Ali ne može koristiti za kreiranje novih programa.
JDK sadrži JRE, JRE sadrži JVM.

Šta je bajt kod?
Ovo pitanje, intervjuer može proširiti pitanje, da li je Java kompajlirani jezik ili interpretirani jezik?
Razlog zašto Java može "jednom kompajlirati, svuda pokrenuti" je, prvo zato što je JVM prilagođen za različite operativne sisteme i platforme, drugo zato što na bilo kojoj platformi može kompajlirati i generisati bajt kod fiksiranog formata (.class fajl) za JVM upotrebu. Zato, takođe može videti važnost bajt koda za Java ekosistem.
Razlog zašto se zove bajt kod je što fajl bajt koda se sastoji od heksadecimalnih vrednosti, a JVM čita dve heksadecimalne vrednosti kao grupu, to jest čita po bajtu. U Java se obično koristi javac naredba da kompajlira izvorni kod u fajl bajt koda, primer iz java fajla do pokretanja je kao na slici.

Koji su prednosti korišćenja bajt koda?
Java jezik kroz način bajt koda, u određenoj meri rešio problem niske efikasnosti izvršavanja tradicionalnih interpretiranih jezika, dok je zadržao karakteristiku prenosivosti interpretiranih jezika. Zato Java program radi prilično efikasno, i zato što bajt kod nije specifičan za određenu mašinu, Java program ne mora ponovo kompajlirati da bi mogao raditi na različitim računarima.
Koje su razlike između Oracle JDK i OpenJDK?
Možda pre nego što vidite ovo pitanje, mnogi ljudi kao i ja nisu imali kontakt i koristili OpenJDK. Dole kroz neke materijale koje sam sakupio da vam odgovorim na ovo lako zanemareno pitanje.
- Oracle JDK će se objavljivati svake tri godine, dok OpenJDK verzija se objavljuje svaka tri meseca;
- OpenJDK je referentni model i potpuno otvorenog koda, dok je Oracle JDK implementacija OpenJDK-a, nije potpuno otvorenog koda;
- Oracle JDK je stabilniji od OpenJDK. OpenJDK i Oracle JDK kod su gotovo identični, ali Oracle JDK ima više klasa i neke ispravke grešaka. Zato, ako želite da razvijate softver za preduzeće/komercijalni, predlažem da izaberete Oracle JDK, jer je prošao temeljno testiranje i ispravke. U određenim situacijama, neki ljudi pominju da koristeći OpenJDK možda susretu mnoge probleme rušenja aplikacija, ali samo prebacivanje na Oracle JDK može rešiti;
- U aspektu responsivnosti i JVM performanse, Oracle JDK pruža bolje performanse od OpenJDK;
- Oracle JDK neće pružati dugoročnu podršku za predstojeću verziju, korisnici moraju svaki put putem ažuriranja na najnoviju verziju da bi dobili podršku;
- Oracle JDK dobija licencu prema licenci binarnog koda, dok OpenJDK dobija licencu prema GPLv2 licenci.
GitHub sa 17000+ zvezdica otvorene baze znanja "Autorov put napredovanja Jave" prvo izdanje PDF je konačno došlo! Uključuje osnovnu sintaksu Java, nizove & stringove, OOP, okvir za kolekcije, Java IO, rukovanje izuzecima, nove osobine Java, mrežno programiranje, NIO, konkurentno programiranje, JVM itd., ukupno 320000+ reči, 500+ crteža, može se reći da je lako razumljivo, zabavno i humoristično... Detalji kliknite: Previše lepo, Java vodič sa 17000+ zvezdica na GitHubu
Za najnoviju verziju PDF-a posetite javasi.dev.
Osnovna sintaksa
Koje tipove podataka ima Java?
Java jezik tipovi podataka dele se na dve: osnovne tipove podataka i referentne tipove podataka.

1.Osnovni tipovi podataka
Uključuju boolean (bul tip), float (jednostruka tačnost pokretnog zareza), char (karakterski tip), bajt (bajt tip), short (kratak ceo tip), int (ceo tip), long (dugačak ceo tip) i double (dvostruka tačnost pokretnog zareza) ukupno 8 vrsta, kao u sledećoj tabeli.
| Osnovni tip | Bitovi | Bajtovi | Podrazumevana vrednost |
|---|---|---|---|
| int | 32 | 4 | 0 |
| short | 16 | 2 | 0 |
| long | 64 | 8 | 0L |
| bajt | 8 | 1 | 0 |
| char | 16 | 2 | 'u0000' |
| float | 32 | 4 | 0f |
| double | 64 | 8 | 0d |
| boolean | 1 | false |
Za boolean, zvanična dokumentacija nije jasno definisala, ona zavisi od konkretne implementacije JVM dobavljača. Logički zauzima 1 bit, ali u praksi će razmatrati efikasno skladištenje računara i druge faktore.
Java virtuelna mašina specifikacija govori: u JVM-u nije pružena bajt kod instrukcija specifična za boolean, i boolean tip podataka nakon kompajliranja će u JVM-u biti predstavljena kroz int tip, u ovom trenutku boolean podatak je 4 bajta 32 bita, dok će boolean niz biti kodiran u bajt niz Java virtuelne mašine, u ovom trenutku svaki boolean podatak je 1 bajt zauzima 8bit.
Pažnja:
- Java kada koristi long tip podatka mora dodati L iza brojne vrednosti, inače će se analizirati kao ceo tip:
char a = 'h'char : jednostruki navodnik,String a = "hello":dvostruki navodnik
2.Referentni tipovi podataka
Nadograđeni na osnovnim tipovima podataka, uključuju nizove, klase i interfejse. Referentni tipovi podataka su definisani od strane korisnika, koriste se za ograničavanje drugih tipova podataka. Dodatno, Java jezik ne podržava pokazivački tip C++, strukturni tip, uniju tip i enumerativni tip.
Da li switch može delovati na bajt, može delovati na long, može delovati na String?
Pre Java5 u izrazu switch(expr), expr može biti samo bajt, short, char, int.
Od Java 5, Java je uveo enumerativni tip, expr može biti i enum tip.
Od Java 7, expr može biti i string(String), ali dugačak ceo tip(long) u svim trenutnim verzijama nije mogao.
Koji je razlika između pristupnih modifikatora public, private, protected, i bez pisanja (podrazumevano)?
U Java, možete koristiti kontrolu pristupa da zaštite pristup klasama, promenjivim, metodama i metodama konstruktora. Java podržava 4 različite dozvole pristupa.
- default (tj. podrazumevano, ništa ne piše) : vidljiv u istom paketu, ne koristi nikakve modifikatore. Objekti upotrebe: klasa, interfejs, promenjiva, metoda.
- private : vidljiv u istoj klasi. Objekti upotrebe: promenjiva, metoda. Pažnja: ne može modifikovati klasu (spoljašnju klasu).
- public : vidljiv za sve klase. Objekti upotrebe: klasa, interfejs, promenjiva, metoda.
- protected : vidljiv za klase u istom paketu i sve podklase. Objekti upotrebe: promenjiva, metoda. Pažnja: ne može modifikovati klasu (spoljašnju klasu).

Koja je razlika i uloga break, continue, return?
break završava trenutni telo petlje
continue iskače iz ove petlje, nastavlja da izvršava sledeću petlju(završava trenutno izvršavanje petlje ulazi u sledeći uslov petlje)
return program se vraća, više ne izvršava kod posle(završava trenutnu metodu direktno se vraća)
