Programiranje

Ocenite izraze Java z operatorji

Aplikacije Java obdelajo podatke z vrednotenjem izrazi, ki so kombinacije literal, klicev metod, imen spremenljivk in operatorjev. Vrednotenje izraza običajno ustvari novo vrednost, ki jo lahko shranite v spremenljivko, ki se uporablja za sprejemanje odločitev itd.

V tej vadnici boste izvedeli, kako pisati izraze za svoje programe Java. V mnogih primerih boste za pisanje izrazov Java uporabljali operaterje, ki jih je veliko vrste operaterjev vedeti, kako uporabljati. Na kratko bom predstavil vrste operaterjev Java (vključno z aditivnimi, bitnimi, logičnimi, pogojnimi, premičnimi in enakopravnimi vrstami) in njihove operande. Spoznali boste tudi pomembne koncepte, kot sta preobremenitev operaterja in prednost operaterja, in videli boste prikaz pretvorbe primitivnega tipa. Zaključil bom z majhnim programom Java, s katerim lahko sami izvajate pretvorbe primitivnega tipa.

prenos Prenesite kodo Prenesite izvorno kodo, na primer programe v tej vadnici. Ustvaril Jeff Friesen za JavaWorld.

Preprosti izrazi

A preprost izraz je dobesedno, ime spremenljivke ali klic metode. Noben operater ne sodeluje. Tu je nekaj primerov preprostih izrazov:

52 // celoštevilska dobesedna starost // ime spremenljivke System.out.println ("ABC"); // klic metode "Java" // niz literal 98.6D // literatura z dvojno natančnostjo s plavajočo vejico 89L // dolg celoštevilen literal

Preprost izraz ima tip, ki je bodisi primitivni ali referenčni tip. V teh primerih 52 je 32-bitno celo število (int); System.out.println ("ABC"); je neveljavno (praznino), ker ne vrne vrednosti;"Java" je niz (Vrvica); 98,6D je 64-bitna vrednost s plavajočo vejico z dvojno natančnostjo (dvojno); in 89L je 64-bitno dolgo celo število (dolga). Ne vemo starostje tip.

Eksperimentiranje z jshell

Z lahkoto lahko preizkusite te in druge preproste izraze jshell. Na primer, vnesite 52 pri jshell> in dobili boste nekaj takega:

$1 ==> 52

$1 je ime a spremenljivka prask to jshell ustvarja za shranjevanje 52. (Spremenljivke za praske se ustvarijo vsakič, ko vnesemo literale.) Izvedite System.out.println ($ 1) in boste videli 52 kot izhod.

Lahko tečeš jshell z -v argument ukazne vrstice (jshell -v), da ustvarijo podrobne povratne informacije. V tem primeru vstop 52 bi povzročilo naslednje sporočilo, ki razkriva to spremenljivko prask $1 ima int (32-bitno celo število) vrsta:

| ustvarjena spremenljivka prask $ 1: int

Nato poskusite vnesti starost. V tem primeru boste verjetno prejeli sporočilo o napaki, da simbola ni bilo mogoče najti. Java Shell to domneva starost je spremenljivka, vendar ne pozna njene vrste. Morali bi vključiti vrsto; na primer, poglejte, kaj se zgodi, če vstopite int starost.

Sestavljeni izrazi

A sestavljeni izraz je sestavljen iz enega ali več preprostih izrazov, integriranih v večji izraz prek operater, ki je zaporedje navodil, simbolično predstavljenih v izvorni kodi. Operator spremeni svoj izraz operand (i) v drugo vrednost. Na primer, v 6 * 5, operator množenja (*) pretvori operande 6 in 5 v 30.

Sestavljene izraze lahko kombiniramo v večje izraze. Na primer, 6 * 5 + 10 predstavlja sestavljeni izraz 6 * 5 in sestavljeni izraz, sestavljen iz njihovega produkta, operaterja dodajanja +in številko 10. Vrstni red ocenjevanja (najprej pomnoži in nato dodaj) narekuje Java pravilo prednosti, do katerega bomo prišli v kratkem.

Tudi sestavljeni izrazi so lahko preprosti

6 * 5 je sestavljeni izraz, sestavljen iz dveh preprostih izrazov, 6 in 5. Ampak 6 * 5 je tudi preprost izraz iz +perspektive. The + operater vidi samo njihov izdelek, 30, kar je preprost izraz.

Operaterji in operandi

Operaterji Java so razvrščeni po številu operandov:

  • A unarni operater ima na primer en operand unarni minus (npr. -5).
  • A binarni operator ima dva operanda, primera sta množenje in seštevanje.
  • A trojni operater ima tri operande; primer je pogojni operater (?:).

Operaterji Java so razvrščeni tudi po položaju:

  • A predponski operater je unarni operator, ki je pred njegovim operandom (npr. -5).
  • A postfix operater je unarni operator, ki sledi svojemu operandu (npr. starost ++; - dodaj 1 v starostštevilčna vrednost).
  • An infix operator je binarni ali trojni operator med operandi operaterja (npr. starost + 5).

Še en primer jshell

V naslednjih razdelkih bom predstavil več operaterjev, kjer predstavljam primere v obliki aplikacij. Te operaterje lahko tudi preizkusite z jshell, takole:

jshell> 6 + 2 $ 1 ==> 8 jshell> 7 * $ 1 $ 2 ==> 56

V tem primeru najprej vnesemo izraz 6 + 2, ki jshell oceni in dodeli nastalo spremenljivko 8 za praske $1. Nato pomnožimo $1 avtor 7, ki shrani 56 v spremenljivko nič $2. Ta primer dokazuje, da lahko v izrazih Java uporabljate spremenljivke prask.

Preobremenjeni operaterji

Operator plus (+) je primer preobremenjeni operater, ki je operater, ki izvaja eno od več operacij, ki temeljijo na vrste njegovih operandov. Operator plus izvede celoštevilo, kadar sta oba operanda cela števila, seštevanje s plavajočo vejico, ko sta oba operanda vrednosti s plavajočo vejico, in združevanje nizov, kadar sta oba operanda niza. Tudi operater minus (-) je preobremenjen in izvaja odštevanje celih števil ali plavajoče vejice.

Vrste operaterjev v Javi

Aditivni operaterji

The aditivni operaterji povečati ali zmanjšati številsko vrednost s seštevanjem in odštevanjem. Operaterji aditivov vključujejo seštevanje (+), odštevanje (-), naknadno znižanje (--), postinkrement (++), predhodno določanje (--) in predinkrement (++). Združevanje nizov (+) se šteje tudi za dodatek. Tu je formalna opredelitev za vsakega od teh operaterjev:

  • Dodatek: Glede operand1 + operand2, pri čemer mora biti vsak operand znakovnega ali številčnega tipa, dodaj operand2 do operand1 in vrnite vsoto. Primer: 4 + 6.
  • Odštevanje: Glede operand1 - operand2, pri čemer mora biti vsak operand znakovnega ali številčnega tipa, odštej operand2 iz operand1 in vrnite razliko. Primer: 4 - 6.
  • Pomanjšanje: Glede spremenljivka--, kje spremenljivka mora biti znakovnega ali številčnega tipa, odštej 1 spremenljivkavrednost (shranjevanje rezultata v spremenljivka) in vrnite prvotno vrednost. Primer: x--;.
  • Postinkrement: Glede spremenljivka++, kje spremenljivka mora biti znakovnega ali številskega tipa, dodajte 1 v spremenljivkavrednost (shranjevanje rezultata v spremenljivka) in vrnite prvotno vrednost. Primer: x ++;.
  • Predhodno zmanjšanje: Glede --spremenljivka, kje spremenljivka mora biti znakovnega ali številčnega tipa, od njegove vrednosti odšteti 1, rezultat shraniti v spremenljivkain vrne novo zmanjšano vrednost. Primer: --x;.
  • Preinkrement: Glede ++spremenljivka, kje spremenljivka mora biti znakovnega ali številskega tipa, vrednosti dodati 1, rezultat shraniti v spremenljivkain vrne novo povečano vrednost. Primer: ++ x;.
  • Združevanje nizov: Glede operand1 + operand2, kjer je vsaj en operand Vrvica vnesite, dodajte operand2predstavljanje niza v operand1prikaz niza in vrne rezultat. Primer: "A" + "B".

Operatorji seštevanja, odštevanja, naknadnega zmanjšanja, naknadnega povečanja, predhodnega seštevanja in predhodnega povečanja lahko ustvarijo vrednosti, ki presegajo meje vrste rezultata. Če na primer dodate dve veliki pozitivni 64-bitni celoštevilski vrednosti, lahko dobite vrednost, ki je ni mogoče predstaviti v 64 bitih. Nastalo prelivanje Java-ovi aditivni operaterji ne zaznajo ali sporočijo.

Zaznavanje prelivanja v knjižnici standardnih razredov Java

Standardna knjižnica predavanj Matematika razred vključuje metode za odkrivanje prelivov. Na primer, int addExact (int x, int y) doda vrednosti v x in y, vrnitev vsote ali metanje izjeme pri prelivanju.

Primer uporabe: Aditivni operaterji

Seznam 1 predstavlja majhno aplikacijo za igranje z aditivnimi operaterji Java.

Seznam 1. Aditivni operaterji v Javi (AddOp.java)

razred AddOp {public static void main (String [] args) {System.out.println (125 + 463); System.out.println (2,0 - 6,3); int starost = 65; System.out.println (starost); System.out.println (starost--); System.out.println (starost ++); System.out.println (- starost); System.out.println (++ starost); System.out.println ("A" + "B"); }}

V prejšnji vadnici ste se naučili, kako uporabljati JDK-je javac orodje za sestavljanje izvorne kode Java in java orodje za zagon nastale aplikacije. Za sestavljanje seznama 1 izvedite naslednji ukaz:

javac AddOp.java

Ob predpostavki uspešne kompilacije upoštevajte AddOp.class datoteko v trenutnem imeniku. Za zagon izvedite naslednji ukaz:

java AddOp

AddOp odgovori tako, da prikaže naslednje rezultate:

588 -4,3 65 65 64 64 65 AB

Študija tega izhoda ponuja vpogled v operaterje postinkrementa, postdekrementa, predinkrementa in predhodnega dekrementa. Za postincrement / postdecrement, starostTrenutna vrednost se izpiše pred postopkom povečevanja / zmanjšanja. Za predhodno povečanje / predhodno določanje se izvede operacija, njen rezultat pa se shrani v starost, in potem starostje izpisana nova vrednost.

Ponavljanje z operaterji Java

Operatorji aditivov so še posebej uporabni v kontekstu ponovitev, kjer se uporabljajo za napredovanje do naslednje ponovitve. Izjave o ponovitvah boste izvedeli v naslednji vadnici Java 101.

Operator indeksnega polja

The indeksni operator operator ([]) dostopa do elementa matrike z zagotavljanjem elementov indeks (položaj). Ta operater je postavljen za imenom spremenljivke polja, kot v ocene [0] (dostop do prvega elementa v matriki, ki je dodeljena ocene; prvi element je shranjen pod indeksom 0). Tu je formalna opredelitev:

Glede na to spremenljivka[indeks], kje indeks mora biti celo število (int) vnesite, preberite vrednost iz ali shranite vrednost v spremenljivkashranjevalni element na lokaciji indeks. Primer: temperature [1]

Vrednost posredovana indeks je 32-bitno celo število, ki je bodisi 0 bodisi pozitivna vrednost v območju do ene manjše od dolžine polja, kar je označeno z dodajanjem .length do imena polja. Na primer, razredi.dolžina vrne število elementov v matriki, dodeljenih ocene.

Spremenljivke matrike vs nizi

ocene ni matrika, ampak je spremenljivka, ki vsebuje sklic na področje pomnilnika, ki tvori matriko. To velja za vse nize Java. Vendar je običajno omeniti ocene ali katero koli spremenljivko polja kot matriko.

Primer aplikacije: Operator indeksa polja

Seznam 2 predstavlja izvorno kodo za primer aplikacije, ki vam omogoča igranje z operatorjem indeksa polja.

Seznam 2. Operator indeksnega polja v Javi (ArrayIndexOp.java)

class ArrayIndexOp {public static void main (String [] args) {int [] grade = {89, 90, 68, 73, 79}; System.out.println (ocene [1]); ocene [1] = 91; System.out.println (ocene [1]); indeks int = 4; System.out.println (ocene [indeks]); System.out.println (ocene ['C' - 'A']); // System.out.println (ocene [1D]); }}

Seznam 2 je nekoliko bolj zanimiv kot seznam 1. Po ustvarjanju enodimenzionalne matrike celih števil (prek inicializatorja matrike) in dodelitvi sklica matrike na ocene, glavni () dostop do različnih elementov. Dva predmeta sta še posebej zanimiva:

  • Indeks operatorja indeksa polja mora biti na koncu 32-bitno celo število (0 ali pozitivna vrednost). Določite lahko ime celoštevilčne spremenljivke (npr. indeks), ki vsebuje vrednost indeksa kot indeks.
  • Določite lahko izračun, ki vključuje znakovne literale. (Kasneje v tej vadnici bom predstavil pretvorbe tipov in odkrili boste, zakaj "C" - "A" ustvari celo število (2), ki služi kot veljaven indeks.)

Končni primer, ki gre 1D kot indeks za operator indeksa polja, je komentiran, ker se ne bo prevedel. Če prekomentirate vrstico in poskusite sestaviti seznam 2, boste prejeli sporočilo o napaki o nezdružljivih vrstah: "možna pretvorba izgub z dvojno do int.."

Sestavi seznam 2 (javac ArrayIndexOp.java) in zaženite aplikacijo (java ArrayIndexOp). Upoštevati morate naslednje rezultate:

90 91 79 68

Indeks matrike in večdimenzionalni nizi

Ta operator lahko uporabite z večdimenzionalnimi nizi. Na primer, če predpostavimo dvodimenzionalnost stroškov matrika, stroški [0] [1] dostopa do elementa, dodeljenega prvi vrstici (prek [0]) in drugi stolpec (prek [1]).

Operatorji dodeljevanja

The operater dodelitve (=) spremenljivki dodeli vrednost izraza (npr. i = 6;), vključno z elementom matrike (npr. x [0] = 15;). Izraz in spremenljivka morata biti dodelitev združljiva, kar pomeni, da se morajo njihove vrste strinjati. Na primer, celoštevilčni spremenljivki ne morete dodeliti nizovne dobesedne črke. O tem bom razložil več, ko bomo razpravljali o pretvorbah tipov.

Operatorji sestavljene dodelitve (+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=) v enem koraku ovrednoti izraze in rezultate pripiši spremenljivkam. Vsak izraz in spremenljivka morata biti združljivi z dodelitvijo. Vsak operater služi kot uporabna bližnjica. Na primer, namesto da bi navedli x = x + 3;, lahko določite krajše in enakovredno x + = 3;.

Naj bo kratko!

Namesto da bi navedli x = x + 1; ali x = x - 1;, lahko določite krajše x + = 1; ali x - = 1;. Lahko bi prihranili še več pritiski tipk z določitvijo krajših x ++; ali x--;.

Bitni operaterji

$config[zx-auto] not found$config[zx-overlay] not found