Java osnovna sintaksa

💖 Sviđa vam se? Podijelite vezu sa svojim prijateljima

Kada uzmemo u obzir java program, on se može definirati kao skup objekata koji međusobno djeluju pozivajući metode drugoga. Sada ukratko shvatimo Sintaksa jezika Java, što znače klasa, objekt, metode i varijable instance.

Objekt- Objekti imaju stanje i ponašanje. Na primjer: pas može imati stanje - boju, ime, a također i ponašanje - klimanje glavom, trčanje, lajanje, jedenje. Objekt je instanca klase.

Klasa- može se definirati kao obrazac koji opisuje ponašanje objekta.

metoda- je u osnovi ponašanje. Klasa može sadržavati više metoda. U metodama se manipulira logički napisanim podacima i izvršava sve radnje.

Varijable instance- svaki objekt ima svoj jedinstveni skup varijabli instance. Stanje objekta kreirano je vrijednostima dodijeljenim ovim varijablama instance.

Prvi program i poznavanje sintakse jezika

Pogledajmo neki jednostavan kod koji će na ekran ispisati riječi "Hello World!", a u isto vrijeme i Java sintaksu.

Javna klasa MyFirstJavaProgram ( public static void main(String args) ( /* Ovo je moj prvi java program. Ovo će ispisati "Hello world!" */ System.out.println("Hello world!"); / / Prikaz poruke na ekranu) )

  • Otvorite notepad i dodajte gornji kod.
  • Spremite datoteku kao "MyFirstJavaProgram.java". U nastavku ćemo pogledati Java sintaksu i saznati zašto pod tim imenom.
  • Otvorite prozor naredbenog retka i prijeđite na direktorij u kojem je datoteka spremljena. Pretpostavimo da je to "C:\".
  • Upišite "javac MyFirstJavaProgram.java" i pritisnite enter za kompajliranje koda. Ako nema greške u kodu, naredbeni redak dovest će vas do sljedeći redak: (Pretpostavka: varijabla staze je postavljena).
  • Sada upišite "java MyFirstJavaProgram" za pokretanje programa.
  • Sada ćete vidjeti "Hello World!" ispisano u prozoru.
C:> javac MyFirstJavaProgram.java C:> java MyFirstJavaProgram Pozdrav svijetu!

Osnove Java sintakse

Vrlo je važno znati i zapamtiti sljedeće točke u sintaksi:

  • Osjetljivost na velika i mala slova - Java razlikuje velika i mala slova, tj. id Hello i hello imaju različita značenja.
  • Naziv razreda - za sve mora biti prvo slovo velika slova.
  • Ako se za formiranje naziva klase koristi više riječi, prvo slovo svake unutarnje riječi mora biti velikim slovima, na primjer "MyJavaClass".
  • Nazivi metoda - U Java sintaksi svi nazivi metoda moraju počinjati malim slovom.
  • Ako se za formiranje naziva metode koristi više riječi, tada prvo slovo svake unutarnje riječi mora biti velikim slovima, kao što je "public void myMethodName()".
  • Naziv programske datoteke - naziv programske datoteke mora točno podudarati s nazivom klase.
  • Kada spremate datoteku, morate je spremiti koristeći naziv klase (zapamtite osjetljivost na velika i mala slova) i dodati ".java" na kraju naziva (ako se imena ne podudaraju, vaš program se neće kompilirati), npr. "MyJavaProgram" je naziv klase, tada datoteku treba spremiti kao "MyJavaProgram.java".
  • public static void main(String args) - obrada programa počinje metodom Main() koja je obavezni dio svakog programa.

Identifikatori u Javi

Identifikatori- imena koja se koriste za klase, varijable i metode. Sve Java komponente zahtijevaju imena.

Postoji nekoliko pravila u sintaksi Java jezika koja treba zapamtiti o identifikatoru. Oni su sljedeći:

  • Svaki identifikator mora počinjati od "A" do "Z" ili od "a" do "z", "$" ili "_".
  • Nakon prvog znaka može biti bilo koja kombinacija znakova.
  • Ključna riječ ne može se koristiti kao identifikator.
  • Ono što je najvažnije, identifikator u Javi razlikuje velika i mala slova.
  • Primjer ispravnog pisanja: dob, $plata, _vrijednost, __1_vrijednost.
  • Primjer pravopisne pogreške: 123abc, -plata.

Nabrajanja

Enume su uvedene u Javi 5.0. Oni ograničavaju varijablu samo na odabir jedne od nekoliko unaprijed definiranih vrijednosti. Vrijednosti u ovom nabrojanom popisu nazivaju se prijenosi.

Upotrebom enuma u Javi možete smanjiti broj grešaka u svom kodu.

Na primjer, ako razmatrate primjenu svježeg soka u trgovini, možete ograničiti veličinu pakiranja soka na malu, srednju i veliku. Ovo omogućuje korištenje enuma u Javi kako bi se osiguralo da nitko ne naručuje bilo koju drugu veličinu paketa osim male, srednje ili velike.

Primjer Java enum koda

klasa FreshJuice ( enum FreshJuiceSize( SMALL, MEDIUM, LARGE ) FreshJuiceSize size; ) javna klasa FreshJuiceTest ( public static void main(String args)( FreshJuice juice = new FreshJuice(); juice.size = FreshJuice.FreshJuiceSize.MEDIUM; System.out .println("Veličina: " + juice.size); ) )

Rezultat gornjeg primjera je:

Veličina: SREDNJA

Bilješka: U Javi se enumi mogu deklarirati sami ili unutar klase. Metode, varijable, konstruktori također se mogu definirati unutar enuma.

Vrste varijabli

  • Lokalne varijable.
  • Varijable klase (statičke).
  • Varijable instance (dinamičke).

Modifikatori

Kao iu drugim jezicima, u Javi možete mijenjati klase, metode i tako dalje, koristeći modifikatore. Modifikatori u Javi su podijeljeni u dvije kategorije:

  • S pristupom: zadani, javni, zaštićeni, privatni.
  • Bez pristupa: final, abstract, strictfp.

U sljedećem ćemo odjeljku pobliže pogledati modifikatore klasa, modifikatore metoda i druge.

niz

U Javi, polje je objekt koji pohranjuje više varijabli istog tipa. Međutim, sam niz je objekt. U kasnijim poglavljima ćemo pogledati kako stvoriti i popuniti niz.

JSP stranice imaju kombiniranu sintaksu: kombinaciju standardne sintakse koja je u skladu s HTML specifikacijom i JSP sintakse definirane specifikacijom Java Server Pages. JSP sintaksa definira pravila za pisanje JSP stranica, koje se sastoje od standardnih HTML oznake i JSP oznake. JSP stranice, osim HTML oznaka, sadrže JSP oznake sljedećih kategorija:

JSP direktive

direktive pružiti globalne informacije o specifičnim zahtjevima upućenim JSP-u i pružiti informacije potrebne tijekom faze prijevoda.

direktive uvijek se postavljaju na početak JSP stranice, prije svih ostalih oznaka, tako da parser(analizator) JSP je prilikom parsiranja teksta na samom početku istaknuo globalne instrukcije. Stoga JSP Engine (JSP runtime) analizira kod i stvara servlet iz JSP-a. direktive su poruke za JSP spremnik. Sintaksa direktive JSP izgleda ovako:

<%@ директива имяАтрибута="значение" %>Sintaksa posla direktive u XML-u: Direktiva može imati više atributa. U ovom slučaju direktiva može se ponoviti za svaki od atributa. U isto vrijeme, parovi "AttributeName=Vrijednost" može se staviti pod jednu direktivu s razmakom kao separatorom. Postoje tri vrste direktiva:

  • stranica (stranica)
  • taglib (biblioteka oznaka)
  • uključiti (uključiti)

stranica direktiva

Direktiva stranica definira svojstva JSP stranice koja utječu na prevoditelja. Redoslijed atributa u direktivi stranica nema veze. Kršenje sintakse ili prisutnost neprepoznatih atributa rezultira pogreškom prijevoda. Primjer direktive stranica može poslužiti sljedeći kod:<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>Ova direktiva to izjavljuje ova stranica JSP ne koristi međuspremnik, da je moguće za više korisnika da pristupe ovoj JSP stranici u isto vrijeme, i da je stranica s pogreškom pod nazivom greška.jsp.
Direktiva stranica može sadržavati podatke o stranici:<%@ page info = "JSP Sample 1" %>Popis mogućih atributa direktive stranica predstavljeni u tablici.
Naziv atributaZnačenje Opis
Jezik Crta Određuje jezik koji se koristi u skriptama JSP datoteke, izrazima ili bilo kojim uključenim datotekama, uključujući tijelo kompajliranog koda. Zadana vrijednost je "java"
proteže se Crta Određuje superklasu za generirani servlet. Ovaj atribut treba koristiti s velikom pažnjom jer je moguće da poslužitelj već koristi neku superklasu.
uvoz Crta Definicija uvoznih paketa, na primjer:
<%@ page import="java.util.* %>
sjednica istina ili laž Značenje pravi(zadano) označava da je unaprijed definirana varijabla sjednica(tip HttpSession) mora biti vezan uz postojeću sesiju, ako postoji, inače se stvara nova sesija i povezuje se s njom. Značenje lažno navodi da se sesije neće koristiti i pokušava pristupiti varijabli sjednica rezultirat će pogreškom prilikom prevođenja JSP stranice u servlet
Pufer nijedan ili veličina međuspremnika u kB. Postavlja veličinu međuspremnika za JspWriter out. Zadana vrijednost ovisi o postavkama poslužitelja i ne smije premašiti 8 KB. Ako je vrijednost nikakav izlaz ide izravno na objekt
automatsko ispiranje istina ili laž Određuje treba li se međuspremnik automatski osloboditi kada se prelije ili dođe do pogreške. Zadana vrijednost pravi
isThreadSafe istina ili laž Značenje pravi(zadano) Određuje normalno izvršavanje servleta kada se više zahtjeva obrađuje istovremeno pomoću jedne instance servleta, na temelju pretpostavke da autor ima sinkronizirani pristup varijablama te instance. Vrijednost false ("false") signalizira da servlet treba naslijediti SingleThreadModel(model s jednom niti), u kojem sekvencijalnim ili istodobnim zahtjevima rukuju zasebne instance servleta
info Crta Određuje niz informacija o JSP stranici koja će biti dostupna korištenjem metode Servlet.getServletInfo()
Stranica pogreške Crta Vrijednost atributa je URL stranice koja bi se trebala prikazati ako moguće greške koji bacaju iznimke
isErrorPage istina ili laž Signalizira može li se ova stranica koristiti za obradu grešaka za druge JSP stranice. Zadana vrijednost je lažno
contentType Crta Određuje kodiranje za JSP stranicu i odgovor, te MIME tip JSP odgovora. Zadana vrijednost vrste sadržaja - tekst/html, kodiranja - ISO-8859-1. Na primjer:
contentType="text/html;charset=ISO-8859-1"
pageEncoding Crta Određuje kodiranje znakova JSP stranice. Zadano je skup znakova od atributa contentType ako je tamo definirano. Ako vrijednost skup znakova u atributu contentType nedefinirano, vrijednost pageEncoding postavljeno je jednako ISO-8859-1

taglib direktiva

Direktiva taglib Izjavljuje da ova JSP stranica koristi biblioteku oznaka, jedinstveno je identificirajući s URI-jem i podudarajući se s prefiksom oznake koji može djelovati na biblioteku. Ako spremnik ne može pronaći biblioteku oznaka, dolazi do fatalne pogreške prijevoda. Direktiva taglib ima sljedeću sintaksu:<%@ taglib uri="URI uključene biblioteke oznaka"prefiks=" namePrefix" %> prefiks " namePrefix" se koristi prilikom pristupa knjižnici. Primjer korištenja knjižnice oznaka moje oznake: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . . U ovom primjeru, biblioteka oznaka ima URI od "http://www.taglib/mytags", niz se dodjeljuje kao prefiks običaji Ono što se koristi na JSP stranici prilikom pristupa elementima biblioteke oznaka.

uključiti direktivu

Direktiva uključiti omogućuje umetanje teksta ili koda tijekom prevođenja JSP stranice u servlet. Direktivna sintaksa uključiti ima sljedeći oblik:<%@ include file="Relativni URI uključene stranice" %> Direktiva uključiti ima jedan atribut - datoteka. Uključuje tekst navedenog izvora u JSP datoteci. Ova se direktiva može koristiti za postavljanje standardnog zaglavlja autorskih prava na svaku JSP stranicu:<%@ include file="copyright.html" %>JSP spremnik pristupa datoteci za uključivanje. Ako je uključena datoteka promijenjena, spremnik može ponovno kompajlirati JSP stranicu. Direktiva uključiti tretira resurs, kao što je JSP stranica, kao statički objekt. Dani URI obično se tumači u odnosu na JSP stranice na kojoj se veza nalazi, ali, kao i sa bilo kojim drugim relativnim URI-jem, možete reći sustavu lokaciju izvora od interesa u odnosu na matični direktorij WEB poslužitelja dodavanjem znaka "/" ispred URI-ja. Sadržaj datoteke za uključivanje tretira se kao običan JSP tekst i stoga može uključivati ​​elemente kao što su statički HTML, elementi skripte, direktive i akcije. Mnoga mjesta koriste malu navigacijsku traku na svakoj stranici. Zbog problema s korištenjem HTML okvira, ovaj se zadatak često rješava postavljanjem male tablice na vrh ili u lijevu polovicu stranice, čiji se HTML kod ponavlja mnogo puta za svaku stranicu stranice. Direktiva uključiti je najprirodniji način rješavanja ovog problema, spašavajući programera od noćne more kopiranja HTML-a u svaku pojedinačnu datoteku. Jer direktiva uključiti povezuje datoteke tijekom prijevoda stranice, a zatim nakon izmjena na navigacijskoj traci potreban je ponovni prijevod svih JSP stranica koje ga koriste. Ako se uključene datoteke mijenjaju prilično često, možete koristiti radnju jsp: uključiti, koji uključuje datoteku prilikom pristupa JSP stranici.

JSP deklaracije

Izjave (Deklaracije) namijenjeni su definiranju varijabli i metoda u skriptnom jeziku, koje se zatim koriste na JSP stranici. Sintaksa deklaracije ima sljedeći oblik:<%! код Java %> oglasi nalaze se u bloku deklaracije, ali se pozivaju u bloku izraza JSP stranice. Kod u oglasnom bloku obično je upisan jezik Java, međutim, aplikacijski poslužitelji mogu koristiti sintaksu drugih skripti. oglasi ponekad se koristi za dodavanje dodatne funkcionalnosti pri radu s dinamičkim podacima dohvaćenim iz svojstava JavaBeansa. Primjeri oglasi predstavljeni u tablici. Obavijest može sadržavati nekoliko redaka, kao što je kod u nastavku za izračunavanje vrijednosti funkcije činjenica (int n), koji bi trebao biti jednak 1 za n manje od 2 i n! s pozitivnom vrijednošću n;<%! public static int fact (int n) { if (n oglasi ne proizvode nikakav izlaz na standardni izlaz van. Varijable i metode deklarirane u oglasi, inicijaliziraju se i stavljaju na raspolaganje skriptama i ostalima oglasi kada je JSP stranica inicijalizirana.

JSP skripte

Skripte uključuju razne fragmente koda napisane u skriptnom jeziku definiranom u direktivi Jezik. Isječci koda moraju biti u skladu sa sintaksom jezika skripte, tj. u pravilu sintaksu jezika Java. Skripte imaju sljedeću sintaksu:<% текст скриптлета %>Ekvivalent sintakse skripta za XML je: tekst skripte
Ako u tekstu skripta potrebno je koristiti niz znakova %> upravo kao kombinaciju znakova, a ne kao tag - znak za kraj skripta, umjesto niza %>, trebali biste koristiti sljedeću kombinaciju znakova %\>.
JSP specifikacija pruža jednostavan i jasan primjer skripta A koji omogućuje dinamičku promjenu sadržaja JSP stranice tijekom dana.<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>dobro jutro<% } else { %>Dobar dan<% } %>Valja napomenuti da kod unutar skriplet umeće se kako je napisano, a sav statični HTML tekst (tekst predloška) prije ili iza skriplet pretvoriti pomoću operatora ispisati. To znači da skripte ne moraju sadržavati dovršene Java isječke i da blokovi koji su ostavljeni otvoreni mogu utjecati na statički HTML izvan skriplet. Skripte imaju pristup istim automatski definiranim varijablama kao izrazi. Stoga, na primjer, ako postoji potreba za prikazom bilo koje informacije na stranici, morate koristiti varijablu van. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>

JSP izrazi

Izraz na JSP stranici je izvršni izraz napisan u skriptnom jeziku navedenom u deklaraciji Jezik(obično Java). Proizlaziti izrazi JSP ima traženi tip Niz, šalje se na standardni izlaz van pomoću trenutnog objekta JspWriter. Ako rezultat izrazi ne može se pretvoriti u tip Niz, ili se pojavljuje pogreška prijevoda ako je problem otkriven tijekom faze prijevoda ili se pokreće iznimka ClassCastException, ako je odstupanje otkriveno tijekom izvršavanja upita. Izraz ima sljedeću sintaksu: <%= tekst izraza %> alternativna sintaksa za izrazi JSP kada se koristi XML: tekst izražavanjaRedoslijed izvršenja izrazi na JSP stranici s lijeva na desno. Ako izraz pojavljuje u više od jednog atributa vremena izvođenja, tada se izvršava slijeva nadesno u toj oznaci. Izraz mora biti potpuni izraz u određenoj skripti (obično Java). Izrazi se izvršavaju dok je HTTP protokol pokrenut. Vrijednost izraza pretvara se u niz i uključuje na odgovarajuće mjesto u JSP datoteci. Izrazi obično se koriste za procjenu i prikaz string reprezentacije varijabli i metoda definiranih u bloku deklaracije JSP stranice ili dobivenih od JavaBeansa kojima se može pristupiti iz JSP-a. Sljedeći kod izrazi koristi se za prikaz datuma i vremena kada je stranica zatražena: Trenutno vrijeme: <%= new java.util.Date () %> Za pojednostavljenje izrazi postoji nekoliko unaprijed definiranih varijabli koje se mogu koristiti. Najčešće korištene varijable su:
  • zahtjev, HttpServletRequest;
  • odgovor, HttpServletResponse;
  • sesija, HttpSession - povezano sa zahtjevom, ako postoji;
  • van, PrintWriter - međuspremnik verzija tipa JspWriter za slanje podataka klijentu.

mora nužno odgovarati nazivu klase čija se metoda main() poziva kada se pokrene Java stroj.

  • Objekt - klasa iz koje su naslijeđeni svi objekte u Javi, uključujući nizove i nizove ().
  • Specifikatori pristupa su pojedinačni za svakog člana (navedeni prije deklaracije).
  • Svi su članovi klase prema zadanim postavkama izloženi opsegu paket. "Zadani" opseg je križanac između privatnog i zaštićenog, pogledajte.
  • Svaka *.java datoteka može sadržavati samo jedan klasa deklarirana kao javna i dostupna izvana.
  • Definicija klase i deklaracija su uvijek u istoj datoteci, nemoguće je staviti prototipove u zaglavlja.
  • Nema pokazivača.
  • Sve varijable klase zapravo su reference na objekte, a ne sami objekti. Njihovo inicijaliziranje za upotrebu mora se izvršiti putem new<конструктор-класса>(...) .
  • Na temelju prethodnog paragrafa - kada se jedna varijabla objekta dodjeljuje drugoj, vrši se samo promjena veze, ali ne i kopija objekta.
  • Varijable u funkcijama se prosljeđuju prema vrijednosti ako jesu elementarne vrste(int, byte, long, itd...), ili referencom ako su objekti.
  • Pristup javnim statičkim članovima klase ostvaruje se preko operatora točke. , a ne kroz :: , što po meni unosi neku vanjsku zabunu.
  • Ne postoji destruktor, ali postoji finalize() .
  • Nemojte brkati finalize() s C++ destruktorom. poziva se finalize(). samo za odvoz smeća, što nema nikakve veze s objektom koji izlazi iz opsega i nepostojanjem barem jedne reference na ovaj objekt.
  • Sakupljanje smeća može se prisiliti pozivanjem metode Runtime.gc() na trenutnom Runtime objektu ili pozivanjem statičke metode System.gc(). Sudeći prema provedenim eksperimentima, oslobađanje memorije djeluje samo unutar virtualni stroj Java i jednom dodijeljena memorija u OS-u ne vraćaju se dok stroj ne završi.
  • U kodiranju u Javinom stilu, funkcije bacaju iznimke umjesto vraćanja koda. sistemski Pogreške ili logičke pogreške VM-a. Stoga se mnogo funkcija nužno mora izvršiti unutar bloka try ( ... ) catch (...) ( ... ) koji rukuje iznimkama ili metoda koja ih poziva mora izričito naznačiti kroz throws popis generiranih iznimaka ovim funkcijama koje on ne obrađuje, za rukovanje njima metodama "višim" u stogu poziva.
  • Iznimke se dijele na i .
  • Blok try ( ... ) također može završiti s blokom finally ( ... ), izvršavajući se bez obzira na prisutnost/odsutnost izuzetaka u prethodnom bloku try ( ... ). Ovo je zgodno koristiti za izvođenje neke obvezne radnje bez obzira na rezultate izvršenja bloka koda, na primjer, za automatsko oslobađanje svih resursa koji su u njemu dodijeljeni.
  • char nije jednobajtni tip kao kod C/C++, to je 16-bitni tip koji podržava unicode linije.
  • bool je u Javi poznat kao boolean.
  • Kondicionalne konstrukcije take samo boolean tip varijabli ili izraza. To znači da kod obrasca:
    int a; ... akcije na varijabli a ...; ako (a) ( ... )
    Nije važeće u smislu Java sintakse i neće se kompilirati.
  • Konstante se proglašavaju konačnima, a ne const.
  • Svi nizovi su objekti.
  • Čak su i string konstante (poput "any string const") objekti.
  • Za nizove (klasa String) definiran je samo jedan operator - + , ulančavanje.
  • Usporedba nizova se vrši pomoću metode bool equals() klase String, kao što je s1.equals(s2) .
  • Sadržaj string objekata (String) je konstantan i ne podrazumijeva promjenu jednog elementa niza, to se radi radi poboljšanja performansi. Ako trebate takve operacije, možete koristiti klasu StringBuffer.
  • Prilikom ulančavanja neinicijaliziranog niza s non prazan niz uspjeti null + niz koji nije prazan, na primjer s += "|string"; bit će jednako "null|string"
  • Nizovi imaju javni član varijable duljine, linije nemaju, umjesto toga koriste metodu length().
  • Java ne podupiru višestruko nasljeđivanje. Dio svojih funkcija obavlja preko "sučelja" (interface). Sučelja podržavaju višestruke implementacije "nasljeđivanja" višestrukih sučelja u istoj klasi, i općenito mnoge (sučelja) prema mnogim (klasama) odnose i obrnuto.
  • Sučelja omogućuju stvaranje poveznica putem kojih možete pristupiti objektima klasa koje implementiraju ta sučelja. Istina, dinamička potraga za prikladnom metodom kada se pristupi preko veze sučelja zahtijeva puno troškova, stoga nije poželjna.
  • Umjesto enuma, možete koristiti sučelja bez deklaracija metoda u njima. U ovom slučaju, sve varijable sučelja moraju se inicijalizirati kada se sučelje definira, a njihove vrijednosti automatski će biti konstantne. Nakon toga se putem implementa mogu "spojiti" na klasu koja se definira.
  • Također, od JDK 5 postoje izvana klasični enumi - enum . Zapravo, ovo nije samo popis imenovanih konstanti, već posebna klasa naslijeđena od superklase Enum. Svaki element enumeracije je objekt ove klase. Numerička vrijednost enum objekta može se dohvatiti s ordinalnom ugrađenom funkcijom.
  • Prilagođen preopterećenje operatera poznat u C++, u Javi Nije podržano.
  • Za rad u objektnom okruženju s "primitivnim tipovima" (int, float, char, itd...), Java koristi automatsko pakiranje/automatsko raspakiranje u vrste omotača (Integer, Float, Character, itd...). Zapravo, ovo je implementacija preopterećenja operatora za nekoliko ugrađenih klasa koje implementiraju funkcionalnost primitivnih tipova + metode objekata.
  • super - ključna riječ koja vam omogućuje pozivanje konstruktora nadklase iz podklase ili pristup članu nadklase skrivenog člana podklase.
    • Kada se koristi kao konstruktor - super treba uvijek biti prvi operator u konstruktoru potklase.
  • Za određivanje sažetak metode koriste ključnu riječ sažetak , klasa koja sadrži apstraktnu metodu također mora biti definirana kao apstraktna klasa ...
  • final zabranjuje nadjačavanje metoda u podređenim klasama. Za "kratke" metode deklarirane kao konačne, ova ključna riječ ima isti učinak kao inline u C++ - u podklasama umjesto pozivanja funkcije Može biti bajt kod metode nadklase umeće se u kod metode pozivajuće klase.
  • final također zabranjuje nasljeđivanje klase deklarirane kao final.
  • Imenski prostori(namespace) u Javi su implementirani kao paketi(paket).
  • Povezivanje paketi import, također možete koristiti import static ..(*|) za uvoz statičkih članova klase.
  • Java podržava niti putem ugrađene klase Thread i Runable sučelja. Za sinkronizaciju, synchronized specifikator se koristi prije metode u deklaraciji klase ili synchronized( ) ( ... ) za blok koda sinkroniziran s . Za signale između sinkroniziranih niti koriste se metode nadređene Object klase: wait()/notify()/notifyAll() .
  • prolazno - modifikator koji označava da se vrijednost objekta/varijable ne mora "zadržati" prilikom spremanja objekta, na primjer, kada se serijalizira prije nego što se zapiše na disk/bazu podataka. Logično je na ovaj način označiti varijable koje sadrže jedinstvene identifikatore vremena izvođenja i druge slične informacije koje imaju smisla samo u trenutnoj instanci java procesa.
  • instanceof - runtime operacija, povrati pravi Ako postoji poveznica na razred , ili se može pretvoriti u referencu na ovu klasu, inače lažno.
  • assert - izjave u Javi se koriste na gotovo isti način kao u C: assert [: Assertion fail description] , ali treba imati na umu da su "hardwired" u kompajlirani bajt kod, i mogu biti uključeni kada se izvodi java -ea.
  • this(...) - može se koristiti unutar konstruktora klase za pozivanje drugog konstruktora iste klase koji odgovara potpisu argumenta.
  • Umjesto šablone su korišteni generalizacije, izgleda vrlo slično: klasa CLASS_NAME ( ... ) . U generalizacijama Zabranjeno je koristiti primitivna vrste ( int, byte, char, itd...). Kao parametri se mogu koristiti samo klase.
    Osim toga, podržan ograničene vrste, kroz određivanje superklase za klase parametara. Na primjer, deklaracija "generičke klase" klase CLASS_NAME u kojoj je dopušteno koristiti samo klase potomke opće numeričke klase Broj .
  • Za brzo kopiranje nizova, zgodno je koristiti System.arraycopy() .
  • Jedan od temeljnih elemenata mnogih programskih jezika su uvjetne konstrukcije . Ove konstrukcije omogućuju vam usmjeravanje rada programa duž jedne od staza, ovisno o određenim uvjetima.

    Jezik Java koristi sljedeće uvjetne konstrukcije: if..else i switch..case

    if/else konstrukcija

    If/else izraz provjerava istinitost određenog uvjeta i, ovisno o rezultatima provjere, izvršava određeni kod:

    int num1 = 6; int num2 = 4; if(num1>num2)( System.out.println("Prvi broj je veći od drugog"); )

    Nakon ključna riječ ako je uvjet. A ako je ovaj uvjet ispunjen, onda kod koji se nalazi dalje u if bloku iza vitičaste zagrade. Uvjet je operacija usporedbe dva broja.

    Budući da je u ovom slučaju prvi broj veći od drugog, izraz num1 > num2 je true i vraća true. Stoga kontrola prelazi na blok koda nakon vitičastih zagrada i počinje izvršavati tamo sadržane instrukcije, naime System.out.println("Prvi broj je veći od drugog"); . Ako je prvi broj manji ili jednak drugom, tada se naredbe u bloku if ne bi izvršile.

    Ali što ako želimo da se nešto učini ako uvjet nije ispunjen? U ovom slučaju možemo dodati else blok:

    int num1 = 6; int num2 = 4; if(num1>num2)( System.out.println("Prvi broj je veći od drugog"); ) else( System.out.println("Prvi broj je manji od drugog");

    int num1 = 6; int num2 = 8; if(num1>num2)( System.out.println("Prvi broj je veći od drugog"); ) else if(num1

    Također možemo povezati nekoliko uvjeta odjednom pomoću logičkih operatora:

    int num1 = 8; int num2 = 6; if(num1 > num2 && num1>7)( System.out.println("Prvi broj je veći od drugog i veći od 7"); )

    Ovdje će se if blok izvršiti ako je num1 > num2 istinito, au isto vrijeme num1>7 je istinito.

    dizajn prekidača

    Oblikovati prekidač/kućište slično if/else konstrukciji, jer vam omogućuje obradu nekoliko uvjeta odjednom:

    int broj = 8; switch(num)( case 1: System.out.println("broj je 1"); break; case 8: System.out.println("number is 8"); num++; break; case 9: System.out. println("broj je 9"); break; zadano: System.out.println("broj nije 1, 8, 9"); )

    Iza ključne riječi switch slijedi izraz za usporedbu u zagradama. Vrijednost ovog izraza uzastopno se uspoređuje s vrijednostima postavljenim iza naredbe case. A ako se pronađe podudaranje, tada će se izvršiti određeni blok slučaja.

    Naredba break stavlja se na kraj bloka case kako bi se izbjeglo izvršavanje drugih blokova. Na primjer, ako je naredba break uklonjena u sljedećem slučaju:

    Slučaj 8: System.out.println("broj je 8"); broj++; slučaj 9: System.out.println("broj je 9"); pauza;

    onda budući da je naša varijabla num jednaka 8, tada bi se blok slučaj 8 izvršio, ali budući da se varijabla num povećava za jedan u ovom bloku, nema naredbe break, tada bi se blok slučaj 9 počeo izvršavati.

    Ako također želimo riješiti situaciju kada nije pronađeno podudaranje, tada možemo dodati zadani blok, kao u gornjem primjeru. Iako je zadani blok neobavezan.

    Počevši od JDK 7, u switch..case izrazu, osim primitivnih tipova, također možete koristiti stringove:

    paket firstapp; import java.util.Scanner; javna klasa FirstApp ( public static void main(String args) ( Scanner in = new Scanner(System.in); System.out.println("Unesite Y ili N: "); String input= in.nextLine(); switch( input)( case "Y": System.out.println("Pritisnuli ste slovo Y"); break; case "N": System.out.println("Pritisnuli ste slovo N"); break; default: System .out .println("Pritisnuli ste nepoznato slovo"); ) ) )

    Ternarna operacija

    Ternarna operacija ima sljedeću sintaksu: [prvi operand - uvjet] ? [drugi operand] : [treći operand] . Dakle, tri operanda sudjeluju u ovoj operaciji odjednom. Ovisno o uvjetu, trojna operacija vraća drugi ili treći operand: ako je uvjet istinit, tada se vraća drugi operand; ako je uvjet lažan, onda treći. Na primjer:

    intx=3; int y=2; int z = x

    Ovdje je rezultat ternarne operacije varijabla z. Prvo se provjerava uvjet x

    Stanislav Gornakov

    Da biste govorili i čitali bilo koji strani jezik, potrebno je naučiti abecedu i gramatiku tog jezika. Slično je stanje u proučavanju programskih jezika, s jedinom razlikom, čini mi se, da je taj proces nešto lakši. Ali prije nego počnete pisati izvorni kod programa, prvo morate riješiti postavljeni problem u bilo kojem obliku koji vam odgovara.

    Kreirajmo klasu odgovornu, na primjer, za telefon, koja će imati samo dvije metode: uključivanje i isključivanje ovog telefona. Budući da trenutno ne znamo sintaksu jezika Java, napisat ćemo klasu Phone na apstraktnom jeziku.

    Klasa telefona ( Metoda Turn on() ( // operacije za uključivanje telefona ) Metoda Turn off() ( // operacije za isključivanje telefona ) )

    Klasa Phone mogla bi izgledati otprilike ovako. Imajte na umu da vitičaste zagrade označavaju početak i kraj tijela klase, metode ili bilo kojeg niza podataka. To jest, zagrade označavaju pripadnost metodi ili klasi. Svaka otvarajuća zagrada mora imati zatvarajuću zagradu. Kako ne bi došlo do zabune, obično se nalaze na istoj razini u kodu.

    A sada napišimo istu klasu samo u Javi.

    Klasa Telefon ( void on() ( // tijelo metode on() ) void off() ( // tijelo metode off() ) )

    Ključna riječ class u jeziku Java deklarira klasu, nakon čega slijedi naziv same klase. U našem slučaju to je Telefon. Samo nekoliko riječi o registru snimanja. U gotovo svim programskim jezicima važno je zadržati zapis imena u onom slučaju u kojem su napravljena. Ako ste napisali Telefon, pisanje poput telefon ili TELefoN dat će pogrešku kompilacije. Kako je izvorno napisano, tako treba pisati i dalje.

    Rezervirane ili ključne riječi pišu se velikim i malim slovima i ne možete ih koristiti pri imenovanju metoda, klasa, objekata i tako dalje. Razmaci između riječi nisu bitni jer ih kompilator jednostavno ignorira, ali su važni za čitljivost koda.

    Tijelo klase Telefon ima dvije metode: on() - uključuje telefon i metodu off() - isključuje telefon. Obje metode imaju vlastita tijela i, u teoriji, trebale bi sadržavati neki izvorni kod koji opisuje potrebne radnje obje metode. Za nas sada nije važno kako su te metode implementirane, glavna stvar je sintaksa jezika Java.

    Obje metode imaju on() zagrade unutar kojih se mogu pisati parametri, kao što su on(int time) ili on(int time, int time1). Uz pomoć parametara dolazi do svojevrsne veze metoda s vanjskim svijetom. Kaže se da metoda on(int time) uzima vremenski parametar. Čemu služi? Na primjer, želite da se vaš telefon uključi u određeno vrijeme. Tada će se cjelobrojna vrijednost u parametru vremena proslijediti u tijelo metode, a na temelju primljenih podataka telefon će se uključiti. Ako su zagrade prazne, tada metoda ne uzima nikakve parametre.

    Komentari

    U klasi Telefon, u tijelima obje metode, nalazi se unos iza dvije kose crte: //. Takav unos označava komentare koje će prevodilac zanemariti, ali su neophodni za čitljivost koda. Što više informacija komentirate dok pišete program, veće su šanse da ćete se za godinu dana sjetiti na čemu ste sve ovo vrijeme radili.

    Komentari u Javi mogu biti tri vrste: //, /*…*/ i /**…*/. Komentari napisani // operatorom moraju biti u jednom redu:

    // Jedna linija!!! Greška! Ne možete prijeći u drugu liniju! // Prvi red // Drugi red // ... // Zadnji red

    Komentari koji koriste /*…*/ operatore mogu obuhvaćati više redaka. Na početku svog komentara stavite /*, a na kraju, kada završite s komentiranjem koda, stavite operator */. Posljednja vrsta komentara /**…*/ koristi se pri dokumentiranju koda i također se može nalaziti u bilo kojem broju redaka.

    Java tipovi podataka

    Za postavljanje proizvoljne vrijednosti, Java ima tipove podataka. Kreirali smo dvije metode u klasi Telefon. Obje metode nisu imale parametre, ali kada je dan primjer metode on(int time) s parametrom time, radilo se o prosljeđivanju vrijednosti metodi. Ova vrijednost označavala je vrijeme do kojeg bi se telefon navodno trebao uključiti. Specifikator int samo određuje vrstu vremenske vrijednosti. Postoji šest vrsta podataka u Javi 2 ME.

    Bajt je mali cijeli broj od -128 do 128;
    short je kratka cjelobrojna vrijednost u rasponu od -32768 do 32767;
    int - sadrži bilo koju cjelobrojnu vrijednost od -2147483648 do 2147483647;
    long je vrlo velika cjelobrojna vrijednost, od -922337203685475808 do 9223372036854775807;
    char je Unicode znakovna konstanta. Raspon ovog formata je od 0 do 65536, što je jednako 256 znakova. Svaki znak ove vrste mora biti napisan u jednostrukim navodnicima, na primjer: 'G';
    boolean - boolean tip, ima samo dvije vrijednosti: false - false i true - true. Ova vrsta se često koristi u petljama o kojima malo kasnije. Značenje je vrlo jednostavno - ako imate novac u džepu, to je navodno istina, a ako ne, onda je laž. Dakle, ako imamo novaca, idemo u dućan po kruh ili pivo (podcrtajte po potrebi), ako nema novca, ostajemo kod kuće. To jest, to je takva logična vrijednost koja pridonosi izboru daljnjih radnji vašeg programa.

    Za deklaraciju neke potrebne vrijednosti koristi se notacija:

    int vrijeme; dugo BigTime; znakovna riječ;

    Operator točka-zarez obavezan je nakon unosa i nalazi se na kraju retka. Možete kombinirati nekoliko deklaracija iste vrste odvojenih zarezima:

    Mt vrijeme, vrijeme1, vrijeme2;

    Sada poboljšajmo našu telefonsku klasu dodajući joj nekoliko vrijednosti. Ne trebaju nam više metode on() i off(), dodajmo nove metode koje stvarno mogu riješiti određene zadatke.

    Klasa Telefon ( //S - površina prikaza //w - širina prikaza //h - visina prikaza int w, h, S; // metoda koja izračunava površinu prikaza void Area() ( S = w*h; ) )

    Dakle, imamo tri varijable S, w i h, koje su odgovorne za površinu, širinu i visinu prikaza u pikselima. Metoda Area() izračunava površinu zaslona telefona u pikselima. Operacija je beskorisna, ali vrlo otkriva i lako razumljiva. Tijelo metode Area() se pronašlo i ima oblik S = w*h. U ovoj metodi, jednostavno množimo širinu s visinom i dodjeljujemo ili, kako oni kažu, pohranjujemo rezultat u varijablu S. Ova varijabla će sadržavati vrijednosti područja prikaza ovog telefona . Sada smo se približili operatorima jezika Java, s kojima možete izvoditi sve vrste operacija i o kojima ćemo govoriti u sljedećem dijelu ove serije članaka.




    reci prijateljima