5000 reči za brzo savlađenje 48 ključnih reči i 2 rezervisane reči u Javi
„Erge, u Java kodu koji si mi ranije pokazao, ima public, static, void, main i tako dalje — to su svi ključne reči, zar ne?" na licu Sanmej se pojavlja slatka osmeh, mislim da je u učenju Jave postala sve samopouzdanija.
„Da, Sanmej. U Javi ima mnogo ključnih reči! Možda nećeš odmah sve zapamtiti, ali prvo stvori utisak, to će ti pomoći u kasnijem učenju. Ovi mali kodovi su svi jednostavni, možeš ih pogledati i doživeti osećaj."
PS: Ovde ih poredamo po prirodnom redosledu početnog slova, dovoljno je da ih upoznaš, ne moraš ih sve zapamtiti. Ove ključne reči ćemo u nastavku detaljno objasniti, dok ih potpuno ne razumeš.
1,abstract:
Koristi se za deklarisanje apstraktne klase i apstraktnih metoda.
abstract class Animal {
abstract void makeSound();
public void sleep() {
System.out.println("The animal is sleeping.");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("The dog barks.");
}
}U ovom primeru kreirali smo apstraktnu klasu Animal koja sadrži apstraktnu metod makeSound() i konkretnu metod sleep().
2,boolean:
Osnovni tip podataka u Javi, predstavlja bulovu vrednost, odnosno tačno (true) ili netačno (false). boolean tip se često koristi za uslove, kontrolu petlji i logičke operacije.
boolean isStudent = true;
if (isStudent) {
System.out.println("This person is a student.");
} else {
System.out.println("This person is not a student.");
}U ovom primeru definisali smo boolean promenljivu: isStudent. Kroz if naredbu možemo izvršiti različite operacije na osnovu vrednosti ove promenljive.
3,break:
Koristi se za izlazak iz strukture petlje (kao što su for, while i do-while petlje) ili switch naredbe. Kada se naiđe na break naredbu, program će odmah napustiti trenutnu petlju ili switch blok i nastaviti sa izvršavanjem koda iza petlje ili switch bloka.
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println("i: " + i);
}
System.out.println("Loop ended.");U ovom primeru koristimo for petlju da prođemo kroz cele brojeve od 0 do 9. Kada i bude jednako 5, koristimo break naredbu da izađemo iz petlje.
4,bajt:
Koristi se za predstavljanje 8-bitnog (1 bajt) potpisanog celog broja. Njegov opseg vrednosti je od -128 (-2^7) do 127 (2^7 - 1).
Budući da bajt tip zauzima malo prostora, obično se koristi za obradu velikih količina podataka, kao što su čitanje i pisanje fajlova, mrežni prenos i slično, kako bi se uštedelo memorijski prostor.
byte minByte = -128;
byte maxByte = 127;U ovom primeru deklarisali smo tri promenljive tipa bajt: minByte, maxByte i dodelili im različite vrednosti.
5,case:
Obično se koristi zajedno sa switch naredbom. Switch naredba omogućava izvršavanje različitih blokova koda na osnovu vrednosti određene promenljive. U switch naredbi case se koristi za identifikaciju svake moguće vrednosti i odgovarajućeg bloka koda.
Primere ćemo direktno prikazati zajedno sa switch.
6,catch:
Koristi se za hvatanje izuzetaka u try bloku. U try bloku može doći do bacanja izuzetka, a u catch bloku se ti izuzeci mogu uhvatiti i obraditi. Može postojati više catch blokova, svaki catch blok može uhvatiti određeni tip izuzetka. U catch bloku se, prema potrebi, može obraditi izuzetak, na primer ispisivanje poruke o grešci, upisivanje loga, povratak stanja programa i slično.
try {
int num = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("Invalid number format");
}Ovaj program koristi try-catch naredbu za hvatanje NumberFormatException izuzetka. U try bloku pokušavamo da pretvorimo string "abc" u celobrojnu vrednost, pošto ovaj string nije važeci format broja, biće bačen NumberFormatException izuzetak. U catch bloku hvatamo ovaj izuzetak i ispisujemo poruku o grešci.
7,char:
Koristi se za deklarisanje promenljive tipa karakter. Promenljiva tipa char može da čuva bilo koji Unikod karakter, a karakter se može predstaviti pomoću jednostrukih navodnika.
char c = 'A';Ovaj program kreira promenljivu tipa char c i dodeljuje joj vrednost velikog slova A.
8,class:
Koristi se za deklarisanje klase.
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}9,continue:
Koristi se za nastavak sledeće petlje, može se pod određenim uslovima preskočiti preostali kod.
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}10,default:
Koristi se za navedeno podrazumevani blok koda u switch naredbi pored case uslova. Ovo ćemo prikazati zajedno sa switch.
11,do:
Obično se koristi zajedno sa while ključnom reči, nakon do sledi telo petlje.
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);do-while petlja je slična while petlji, razlika je u tome što će do-while petlja prvo izvršiti kod u telu petlje, a zatim proveriti uslov petlje. Stoga će se telo petlje do-while bar jednom izvršiti.
12,double:
Koristi se za deklarisanje promenljive tipa dvostruke tačnosti.
double a = 3.14;
double b = 2.0;
double c = a + b;13,else:
Koristi se za označavanje alternativne grane u if naredbi.
int score = 75;
if (score >= 60) {
System.out.println("Položio");
} else {
System.out.println("Pao");
}14,enum:
Koristi se za definisanje grupe fiksni konstanti (nabrajanje).
public enum PlayerType {
TENNIS,
FOOTBALL,
BASKETBALL
}15,extends:
Koristi se za označavanje da klasa nasleđuje od druge klase ili interfejsa.
class Animal {
public void eat() {
System.out.println("Životinja jede.");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("Pas laje.");
}
}
public class ExtendsDemo {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.bark();
}
}Klasa Animal ima metod eat(), koji ispisuje string "Životinja jede.". Klasa Dog nasleđuje od klase Animal i definiše metod bark(), koji ispisuje string "Pas laje.".
16,final:
①,final promenljiva: predstavlja konstantu, kada se jednom dodeli vrednost, više se ne može menjati. Ovo je veoma korisno pri deklarisanju nepromenjivih vrednosti.
final double PI = 3.14159265359;②,final metod predstavlja metod koji ne može biti redefinisan (override) u potklasi. Ovo je veoma korisno pri dizajniranju klase, ako želimo da osiguramo da implementacija određenog metoda neće biti izmenjena u potkasi.
class Animal {
final void makeSound() {
System.out.println("Životinja proizvodi zvuk.");
}
}
class Dog extends Animal {
// Greška: nije moguće redefinisati final metod iz Animal
// void makeSound() {
// System.out.println("Pas laje.");
// }
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound();
}
}③,final klasa predstavlja klasu koja ne može biti nasleđena. Ovo je veoma korisno pri dizajniranju klase, ako želimo da osiguramo da neće biti nasleđena od drugih klasa. String klasa je final.
final class Animal {
void makeSound() {
System.out.println("Životinja proizvodi zvuk.");
}
}
// Greška: tip Dog ne može naslediti final klasu Animal
// class Dog extends Animal {
// void makeSound() {
// System.out.println("Pas laje.");
// }
// }
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.makeSound();
}
}17,finally:
Koristi se zajedno sa try-catch, predstavlja da će se konačno uvek izvršiti kod u finally bloku, bez obzira da li se izuzetak obradio ili ne.
try {
int x = 10 / 0; // Bacanje izuzetka
} catch (Exception e) {
System.out.println("Desio se izuzetak: " + e.getMessage());
} finally {
System.out.println("finally blok je izvršen");
}18,float:
Predstavlja broj sa pomičnim zarezom jednostručne tačnosti.
float f1 = 3.14f; // Obratite pažnju na to da iza broja treba dodati f da označite da je ovo tipa float
float f2 = 1.23e-4f; // Naučni zapis za decimalni brojU Javi su podrazumevani brojevi sa pomičnim zarezom tipa double, ako želite da koristite podatke tipa float, morate iza broja dodati f ili F da označite da je ovo literal tipa float. Pored toga, možete koristiti i naučni zapis za brojeve sa pomičnim zarezom, na primer 1.23e-4 predstavlja 0.000123.
19,for:
Koristi se za deklarisanje for petlje, ako je fiksiran broj izvršavanja petlje, preporučuje se korišćenje for petlje.
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
System.out.println("arr[" + i + "] = " + arr[i]);
}20,if:
Koristi se za specifiranje uslova, ako je uslov tačan, izvršiće se odgovarajući kod.
int n = -3;
if (n > 0) {
System.out.println(n + " je pozitivan broj");
} else if (n < 0) {
System.out.println(n + " je negativnan broj");
} else {
System.out.println(n + " je nula");
}21,implements:
Koristi se za implementiranje interfejsa.
Evo primera klase koja implementira Runnable interfejs:
public class MyThread implements Runnable {
public void run() {
// Kod koji se izvršava u niti
}
}22,import:
Koristi se za uvoz odgovarajuće klase ili interfejsa. Na primer, ako želite da koristite ArrayList klasu iz Java standardne biblioteke, možete napisati:
import java.util.ArrayList;23,instanceof:
Koristi se za proveru da li objekat pripada određenom tipu (klasi).
Na primer, ako imamo Person klasu i Student klasu, gde Student klasa nasleđuje od Person klase, možemo koristiti instanceof operator da proverimo da li je objekat instanca Person klase ili njene potklase:
Person p = new Student();
if (p instanceof Person) {
System.out.println("p is an instance of Person");
}
if (p instanceof Student) {
System.out.println("p is an instance of Student");
}24,int:
Koristi se za predstavljanje celobrojne vrednosti.
int x; // Deklarisanje promenljive tipa int x
x = 10; // Dodela celobrojne vrednosti 10 promenljivoj x
int y = 20; // Deklarisanje i inicijalizacija promenljive tipa int y, dodela celobrojne vrednosti 2025,interface:
Koristi se za deklarisanje interfejsa. Definiše skup potpisa metoda (tj. naziv metoda, listu parametara i tip povratne vrednosti), ali nema tela metode. Druge klase mogu implementirati interfejs i obezbediti konkretnu implementaciju metoda.
public interface MyInterface {
void method1();
int method2(String param);
}26,long:
Koristi se za predstavljanje duge celobrojne vrednosti.
long x; // Deklarisanje promenljive tipa long x
x = 10000000000L; // Dodela duge celobrojne vrednosti 10000000000 promenljivoj x, morate dodati L ili l iza broja da označite da je ovo vrednost tipa long
long y = 20000000000L; // Deklarisanje i inicijalizacija promenljive tipa long y, dodela duge celobrojne vrednosti 2000000000027,native:
Koristi se za deklarisanje nativne metode, nativna metoda je metod koji je deklarisan u Java kodu, ali implementiran u nativnom kodu (obično C ili C++ kod), obično se koristi za interakciju sa operativnim sistemom ili drugim nativnim bibliotekama.
public native void nativeMethod();28,new:
Koristi se za kreiranje novog objekta.
Osnovna sintaksa za korišćenje new ključne reči za kreiranje instance objekta je sledeća:
ClassName obj = new ClassName();Osnovna sintaksa za korišćenje new ključne reči za kreiranje instance niza je sledeća:
int[] arr = new int[10];29,null:
Ako je promenljiva prazna (nema nijednu referencu), može joj se dodeliti vrednost null, u uskoj je vezi sa izuzetkom nultog pokazivača.
String str = null; // Deklarisanje string reference, inicijalizacija na null
MyClass obj = null; // Deklarisanje reference tipa MyClass, inicijalizacija na null30,package:
Koristi se za deklarisanje paketa u kojem se klasa nalazi.
package com.example.mypackage;31,private:
Modifikator prava pristupa, označava da je metod ili promenljiva vidljiva samo u trenutnoj klasi.
public class MyClass {
private int x; // Privatno svojstvo x, može se pristupiti samo unutar trenutne klase
private void foo() {
// Privatni metod foo, može se pozvati samo unutar trenutne klase
}
}U ovom primeru, klasa MyClass ima privatno svojstvo x i privatni metod foo(). Ovi članovi mogu se pristupiti i pozivati samo unutar klase MyClass, za druge klase su nevidljivi.
32,protected:
Modifikator prava pristupa, označava da je metod ili promenljiva vidljiva za klase u istom paketu i za sve potklase.
package com.example.mypackage;
public class MyBaseClass {
protected int x; // Zaštićeno svojstvo x, mogu ga pristupiti potklase i druge klase u istom paketu
protected void foo() {
// Zaštićeni metod foo, mogu ga pozvati potklase i druge klase u istom paketu
}
}
package com.example.mypackage;
public class MySubClass extends MyBaseClass {
public void bar() {
x = 10; // Može se pristupiti zaštićenom svojstvu x iz MyBaseClass
foo(); // Može se pozvati zaštićeni metod foo iz MyBaseClass
}
}U ovom primeru, klasa MyBaseClass ima zaštićeno svojstvo x i zaštićeni metod foo(). Ovi članovi mogu im se pristupiti i pozivati iz potklasa i drugih klasa iz istog paketa. Klasa MySubClass nasleđuje od klase MyBaseClass i može pristupiti i menjati zaštićene članove iz MyBaseClass.
33,public:
Modifikator prava pristupa, pored deklarisanja metoda i promenljivih (vidljivo svim klasama), može se deklararisati i klasa. main() metod mora biti deklarisan kao public.
public class MyClass {
public int x; // Javno svojstvo x, može mu pristupiti bilo koja klasa
public void foo() {
// Javni metod foo, može ga pozvati bilo koja klasa
}
}U ovom primeru, klasa MyClass ima javno svojstvo x i javni metod foo(). Ovi članovi mogu im pristupiti i pozivati bilo koje klase, bez obzira da li se nalaze u istom paketu ili ne.
35,return:
Koristi se za povratak vrednosti iz metoda ili prekid izvršavanja metoda. return naredba može vratiti rezultat izračunavanja metoda pozivaocu ili eventualno prekinuti izvršavanje metoda kada metod dosegne određeni uslov.
public int add(int a, int b) {
int sum = a + b;
return sum; // Vraća vrednost sum i prekid izvršavanje metoda
}Pored toga, return naredba se može koristiti za raniji prekid izvršavanja metoda. Na primer, ako želimo da napišemo metod koji proverava da li je jedan broj paran:
public static boolean isEven(int number) {
if (number % 2 == 0) {
return true;
}
return false;
}U ovom primeru definisali smo metod naziva isEven, koji prihvata ceo broj kao parametar number. Ako je number paran, koristimo return naredbu da ranije vratimo true. U suprotnom, izvršavanje metoda će se nastaviti i na kraju vratiti false.
36,short:
Koristi se za predstavljanje kratkog celog broja, zauzima 2 bajta (16 bita) memorijskog prostora.
short x = 10; // Deklarisanje promenljive tipa short x, dodela vrednosti 10
short y = 20; // Deklarisanje promenljive tipa short y, dodela vrednosti 2037,static:
Oznacava da je promenljiva ili metod statička promenljiva ili statički metod.
public class MyClass {
public static int x; // Statička promenljiva x, pripada članovima klase
public static void foo() {
// Statički metod foo, pripada članovima klase
}
}U ovom primeru, klasa MyClass ima statičku promenljivu x i statički metod foo(). Ovi članovi pripadaju članovima klase, mogu im se direktno pristupiti preko imena klase, nije potrebno kreirati objekat.
38,strictfp:
strict floating-point
Nije čest, obično se koristi za modifikovanje metoda, ograničava preciznost i ponašanje zaokruživanja pri računanju brojeva sa pomičnim zarezom. Kada na klasi, interfejsu ili metodu primenite strictfp, svi računi brojeva sa pomičnim zarezom u tom opsegu će pratiti standard IEEE 754, osiguravajući konzistentnost računanja brojeva sa pomičnim zarezom na različitim platformama.
Različite hardverske platforme i JVM implementacije mogu imati razlike u preciznosti i ponašanju zaokruživanja pri računanju brojeva sa pomičnim zarezom, što može dovesti do toga da se isti kod računanja brojeva sa pomičnim zarezom na različitim okruženjima izvrši različito. Korišćenje strictfp ključne reči može osigurati da se na svim platformama dobiju isti rezultati računanja brojeva sa pomičnim zarezom, izbegavajući problem nekonzistentnosti rezultata računanja.
Međutim, treba napomenuti da korišćenje strictfp može uticati na performanse, jer može zahtevati više računanja i konverzija kako bi se osiguralo poštovanje IEEE 754 standarda. Stoga pri korišćenju strictfp treba pažljivo vagati odnos između preciznosti i konzistentnosti s jedne, i performansa s druge strane.
public strictfp class MyClass {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
double result = a + b;
System.out.println("Result: " + result);
}
}Izlaz:
Result: 0.30000000000000004U ovom primeru, klasa MyClass je deklarisana kao strictfp, tako da će svi računi brojeva sa pomičnim zarezom u ovoj klasi pratiti IEEE 754 standard.
Na većini modernih operativnih sistema, korišćenje strictfp verovatno neće prouzrokovati značajne razlike, jer svi prate IEEE 754 standard, osim ako nije neka starija hardverska platforma.
IEEE 754 standard (IEEE Standard for Floating-Point Arithmetic) je međunarodni standard koji definiše predstavljanje i operacije brojeva sa pomičnim zarezom. Definisan je od strane IEEE (Institute of Electrical and Electronics Engineers), prvi put objavljen 1985. godine.
IEEE 754 standard uglavnom propisuje sledeće aspekte:
Predstavljanje brojeva sa pomičnim zarezom: Standard definiše dva formata brojeva sa pomičnim zarezom, jednostručnu tačnost (32 bita) i dvostruku tačnost (64 bita). Oba formata se sastoje od bita znaka, bita eksponenta i bita mantise, koji se koriste za predstavljanje veličine i preciznosti brojeva sa pomičnim zarezom.
Zaokruživanje i režimi zaokruživanja: Standard definiše više režima zaokruživanja, na primer zaokruživanje na najbliži (Round to Nearest, Ties to Even), zaokruživanje ka nuli (Round toward Zero), zaokruživanje ka pozitivnoj beskonačnosti (Round toward +∞) i zaokruživanje ka negativnoj beskonačnosti (Round toward -∞). Ovi režimi vode kako se pri računanju brojeva sa pomičnim zarezom tret gubitak preciznosti i greške zaokruživanja.
Specijalne vrednosti: Standard definiše neke specifične vrednosti brojeva sa pomičnim zarezom, kao što su pozitivna beskonačnost (+∞), negativna beskonačnost (-∞) i nebroj (NaN). Ove specijalne vrednosti koriste se za predstavljanje situacija kao što su prekoracenje, podkoracenje i nedefinisani rezultati pri računanju brojeva sa pomičnim zarezom.
Operacije brojeva sa pomičnim zarezom: Standard propisuje ponašanje i rezultate osnovnih operacija (sabiranje, oduzimanje, množenje, deljenje) i operacija poredenja (jednako, nije jednako, veće, manje, veće ili jednako, manje ili jednako) nad brojevima sa pomičnim zarezom. Ove operacije moraju poštovati pravila predstavljanja, zaokruživanja i rukovanja specijalnim vrednostima definisane u standardu.
Da pogledamo primer
public class Ieee754Demo {
public static void main(String[] args) {
float a = 0.1f;
float b = 0.2f;
float c = a + b;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = a + b = " + c);
double x = 1.0 / 0.0;
double y = -1.0 / 0.0;
double z = 0.0 / 0.0;
System.out.println("x = 1.0 / 0.0 = " + x);
System.out.println("y = -1.0 / 0.0 = " + y);
System.out.println("z = 0.0 / 0.0 = " + z);
}
}Rezultat:

Možemo videti predstavljanje i operacije brojeva sa pomičnim zarezom u IEEE 754 standardu:
- Sabiranje brojeva jednostručne tačnosti: promenljive a i b čuvaju vrednosti 0.1 i 0.2, njihov zbir c je jednak 0.3. Zbog ograničenja preciznosti predstavljanja brojeva sa pomičnim zarezom, stvarna vrednost c se može malo razlikovati od teoretske vrednosti.
- Specijalne vrednosti: promenljive x, y i z čuvaju pozitivnu beskonačnost (+∞), negativnu beskonačnost (-∞) i nebroj (NaN). Ove specijalne vrednosti su rezultat operacija deljenja, kada je delilac 0 ili rezultat ne može biti predstavljen, vraća se odgovarajuća specijalna vrednost.
39,super:
Može se koristiti za pozivanje metoda ili polja nadklase.
class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name); // Poziv konstruktora nadklase
}
public void bark() {
System.out.println(name + " is barking.");
}
public void eat() {
super.eat(); // Poziv metoda nadklase
System.out.println(name + " is eating bones.");
}
}40,switch:
Koristi se za biranje izvršavanja različitih blokova koda na osnovu vrednosti određene promenljive. Switch naredba se obično koristi zajedno sa case i default. Svaka case naredba predstavlja moguću vrednost i odgovarajući blok koda, dok default naredba služi za obradu vrednosti koje nisu obuhvaćene case naredbama.
public class Main {
public static void main(String[] args) {
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
break;
}
}
}U ovom primeru definisali smo promenljivu tipa integer dayOfWeek i dodelili joj vrednost. Zatim koristimo switch naredbu da ispišemo odgovarajući dan u nedelji na osnovu vrednosti dayOfWeek. Svaka case naredba predstavlja moguću vrednost dayOfWeek, nakon koje sledi kod koji treba izvršiti. Koristimo break naredbu da izađemo iz switch naredbe, kako ne bismo izvršili kod drugih case naredbi. Ako vrednost dayOfWeek nije obuhvaćena case naredbama, biće izvršena default naredba.
41,synchronized:
Koristi se za specificiranje sinhronizovanih metoda, promenljivih ili blokova koda u višenitnom kodu.
public class MyClass {
private int count;
public synchronized void increment() {
count++; // Sinhronizovani metod
}
public void doSomething() {
synchronized(this) { // Sinhronizovani blok
// Izvrši neke operacije koje zahtevaju sinhronizaciju
}
}
}42,this:
Može se koristiti u metodima ili konstruktore za referenciranje na trenutni objekat.
public class MyClass {
private int num;
public MyClass(int num) {
this.num = num; // Koristićenje this ključne reči za referenciranje na članske promenljive trenutnog objekta
}
public void doSomething() {
System.out.println("Doing something with " + this.num); // Koristićenje this ključne reči za referenciranje na članske promenljive trenutnog objekta
}
public MyClass getThis() {
return this; // Vraća sam trenutni objekat
}
}U ovom primeru, klasa MyClass ima privatnu člansku promenljivu num i definisala je konstrktor, metod i metod koji vraća trenutni objekat. U konstruktoru se koristi this ključna reč za referenciranje na člansku promenljivu trenutnog objekta i dodeljuje joj vrednost prosleđenog parametra. U metodu doSomething() se koristi this ključna reč za referenciranje na člansku promenljivu trenutnog objekta i ispisuje njenu vrednost. U metodu getThis() se direktno vraća sam trenutni objekat.
43,throw:
Aktivno baca izuzetak.
public class MyClass {
public void doSomething(int num) throws Exception {
if (num < 0) {
throw new Exception("num must be greater than zero"); // Ručno bacanje izuzetka
}
// Izvrši neke operacije
}
}44,throws:
Koristi se za deklarisanje izuzetka.
public class MyClass {
public void doSomething(int num) throws Exception {
if (num < 0) {
throw new Exception("num must be greater than zero"); // Ručno bacanje izuzetka
}
// Izvrši neke operacije
}
}45,transient:
Polja označena ovim modifikatorom neće biti serijalizovana.
public class MyClass implements Serializable {
private int id;
private String name;
private transient String password;
public MyClass(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
// Izostavljeni getter i setter metodi
@Override
public String toString() {
return "MyClass{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}U ovom primeru, klasa MyClass implementira Serializable interfejs, što znači da objekti ove klase mogu biti serijalizovani. Klasa ima tri članske promenljive: id, name i password. Polje password je označeno kao transient, što znači da će se prilikom serijalizacije ignorisati ovo polje.
45,try:
Koristi se za obuhvatanje bloka koda kod kojeg se hvataju izuzeci.
try {
// Kod koji može baciti izuzetak
int result = 1 / 0;
} catch (Exception e) {
// Kod za obradu izuzetka
e.printStackTrace();
}46,void:
Koristi se za specificiranje da metod nema povratnu vrednost.
public void doSomething() {
// Telo metoda
}47,volatile:
Osigurava vidljivost prilikom operacija nad promenljivom koju modifikuje različite niti, to jest, kada jedna nit izmeni vrednost određene promenljive, nova vrednost će odmah biti vidljiva drugim nitima.
public class MyThread extends Thread {
private volatile boolean running = true;
@Override
public void run() {
while (running) {
// Kod koji se izvršava u niti
}
}
public void stopThread() {
running = false;
}
}U ovom primeru, klasa MyThread nasleđuje od klase Thread i redefiniše metod run(). Klasa MyThread ima člansku promenljivu running koja je označena kao volatile, što znači da je ova promenljiva deljena i može joj se istovremeno pristupiti iz više niti. U metodu run() se koristi while petlja za proveru vrednosti promenljive running; ako je running true, petlja se nastavlja. U drugom metodu stopThread() se vrednost promenljive running postavlja na false, čime se signalizira zaustavljanje niti.
48,while:
Ako broj izvršavanja petlje nije fiksan, preporučuje se korišćenje while petlje.
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}„Dobro, Sanmej, o ključnim rečima u Javi ćemo za sada stati na ovih 48. Ovo je samo uvodni pregled, kasnije ćemo posebno detaljno govoriti o nekim specijalnim ključnim rečima, na primer važnim kao što su static, final i slično, sve one na koje sam dao linkove ćemo kasnije detaljno objasniti." Nakon što sam okrenuo ukočeni vrat, rekoh Sanmej.
49,goto i const:
„Pored ovih ključnih reči, u Javi postoje dve veoma specijalne rezervisane reči (goto i const), ne mogu se koristiti u programu."
„goto u C jeziku se zove 'nizăćni skok' naredba, u Javi se više ne koristi goto naredba, jer bi nizăćni skok oštetio strukturu programa."
U Javi se zaista mogu koristiti labele (label) u kombinaciji sa break i continue naredbama za ostvarenje funkcionalnosti slične goto skoku. Evo jednostavnog primera:
public class LabelDemo {
public static void main(String[] args) {
outerLoop:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
System.out.println("Preskačem trenutnu iteraciju u outerLoop");
continue outerLoop;
}
System.out.println("i: " + i + ", j: " + j);
}
}
System.out.println("Kraj");
}
}U ovom primeru koristimo dve ugnježđene petlje. Spoljašnja petlja ima labelu outerLoop. Kada i bude 1 i j bude 1, koristimo continue outerLoop naredbu da preskočimo trenutnu iteraciju spoljašnje petlje. Ovo je slično ponašanju goto.
Da pogledamo rezultat:
i: 0, j: 0
i: 0, j: 1
i: 0, j: 2
i: 1, j: 0
Preskačem trenutnu iteraciju u outerLoop
i: 2, j: 0
i: 2, j: 1
i: 2, j: 2
KrajIako se pomoću labela može ostvariti funkcionalnost slična goto skoku, ova upotreba u Javi je i dalje retka, jer pretjerano korišćenje može učinit kod teškim za razumevanje i održavanje. Obično se preporučuje korišćenje drugih kontrolnih struktura (kao što su if, for i while naredbe) za organizaciju koda.
Evo primera korišćenja if i for naredbi kao zamene za label skokove. U ovom primeru koristimo boolovsku promenljivu skipIteration da odlučujemo da li treba preskočiti trenutnu iteraciju spoljašnje petlje:
public class IfForDemo {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
boolean skipIteration = false;
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
System.out.println("Preskačem trenutnu iteraciju spoljašnje petlje");
skipIteration = true;
break;
}
System.out.println("i: " + i + ", j: " + j);
}
if (skipIteration) {
continue;
}
}
}
}U ovom primeru, kada i bude 1 i j bude 1, postavljamo skipIteration na true, zatim koristimo break naredbu da izađemo iz unutrašnje petlje. U spoljašnjoj petlji proveravamo vrednost promenljive skipIteration; ako je true, preskačemo trenutnu iteraciju spoljašnje petlje.
Rezultat ovog primera je isti kao prethodni:
i: 0, j: 0
i: 0, j: 1
i: 0, j: 2
i: 1, j: 0
Preskačem trenutnu iteraciju spoljašnje petlje
i: 2, j: 0
i: 2, j: 1
i: 2, j: 2„const u C jeziku je ključna reč za deklarisanje konstanti, u Javi se može koristiti kombinacija od tri ključne reči public static final da bi se postigao efekat konstanti."
public class Circle {
public static final double PI = 3.14159;
public static double calculateArea(double radius) {
return PI * radius * radius;
}
}U ovom primeru koristimo kombinaciju triju ključnih reči public static final da definišemo konstantu PI. Budući da je public, druge klase mogu pristupiti ovoj konstanti. Budući da je static, konstanta je povezana sa klasom, a ne sa instancom klase. Budući da je final, njena vrednost ne može biti izmenjena.
„Dobro Erge, razumem, odmori se malo, ja još malo da pamćim."
Otvoreni kod na GitHubu sa više od 17000 zvezdica „Ergeov put do naprednog Jave“ konačno je izašao u PDF formatu prvog izdanja! Uključuje osnovnu sintaksu Jave, nizove & stringove, OOP, okvir kolekcija, Java IO, obradu izuzetaka, nove karakteristike Jave, mrežno programiranje, NIO, konkurentno programiranje, JVM i tako dalje, ukupno preko 320.000 reči, više od 500 ručno crtanih slika, može se reći da je jednostavno i razumevo, duhovito... Detalje: Sjajno, Java tutorijal na GitHubu sa više od 17000 zvezdica
