Programmēšana

Novērtējiet Java izteiksmes ar operatoriem

Java lietojumprogrammas apstrādā datus, novērtējot izteicieni, kas ir literāļu, metožu izsaukumu, mainīgo nosaukumu un operatoru kombinācijas. Izteiksmes novērtēšana parasti rada jaunu vērtību, kuru var saglabāt mainīgajā, izmantot lēmuma pieņemšanai utt.

Šajā apmācībā jūs uzzināsiet, kā rakstīt izteiksmes savām Java programmām. Daudzos gadījumos Java izteicienu rakstīšanai izmantosiet operatorus, un to ir daudz operatoru veidi lai zinātu, kā lietot. Es īsi iepazīstināšu ar Java operatoru tipiem (ieskaitot piedevu, bitu, loģisko, nosacīto, nobīdes un vienlīdzības tipus) un to operandus. Jūs arī uzzināsiet par tādiem svarīgiem jēdzieniem kā operatora pārslodze un operatora prioritāte, un jūs redzēsiet primitīva tipa pārveidošanas demonstrāciju. Es noslēgšu ar nelielu Java programmu, kuru varat izmantot, lai patstāvīgi praktizētu primitīva tipa pārveidojumus.

lejupielādēt Iegūt kodu Lejupielādējiet šajā apmācībā avota kodu, piemēram, lietojumprogrammām. Izveidoja Jeff Friesen JavaWorld.

Vienkārši izteicieni

A vienkārša izteiksme ir burtisks, mainīga nosaukuma vai metodes izsaukums. Nav iesaistīti operatori. Šeit ir daži vienkāršu izteicienu piemēri:

52 // vesels skaitlis burtiskais vecums // mainīgā nosaukums System.out.println ("ABC"); // metodes izsaukums "Java" // virknes literāls 98.6D // dubultās precizitātes peldošā komata literālis 89L // garais veselais skaitlis literāls

Vienkāršai izteiksmei ir tips, kas ir vai nu primitīvs, vai atsauces tips. Šajos piemēros 52 ir 32 bitu vesels skaitlis (int); System.out.println ("ABC"); ir spēkā neesošs (spēkā neesošs), jo tā neatgriež vērtību;"Java" ir virkne (Stīga); 98.6D ir 64 bitu dubultas precizitātes peldošā komata vērtība (dubultā); un 89L ir 64 bitu garš skaitlis (ilgi). Mēs nezinām vecumsveida.

Eksperimentē ar jshell

Izmantojot šo opciju, varat viegli izmēģināt šos un citus vienkāršus izteicienus jshell. Piemēram, ievadiet 52 pie jshell> uzvedne, un jūs saņemsit kaut ko līdzīgu šādai izejai:

$1 ==> 52

$1 ir a nosaukums nulles mainīgais to jshell rada, lai uzglabātu 52. (Scratch mainīgie tiek izveidoti ikreiz, kad tiek ievadīti literāļi.) Izpildīt System.out.println ($ 1) un jūs redzēsiet 52 kā izvadi.

Jūs varat palaist jshell Ar -v komandrindas arguments (jshell -v), lai radītu izteiksmīgu atgriezenisko saiti. Šajā gadījumā ieeja 52 rezultātā parādīsies šāds ziņojums, atklājot šo nulles mainīgo $1 ir int (32 bitu vesels skaitlis) tips:

| izveidots nulles mainīgais $ 1: int

Pēc tam mēģiniet ievadīt vecums. Šajā gadījumā jūs, iespējams, saņemsit kļūdas ziņojumu, ka simbols nav atrasts. Java apvalks to pieņem vecums ir mainīgais, taču tā veidu nezina. Jums būtu jāiekļauj veids; piemēram, skatiet, kas notiek, ja ievadāt int vecums.

Salikti izteicieni

A salikta izteiksme sastāv no viena vai vairākiem vienkāršiem izteicieniem, kas integrēti lielākā izteiksmē, izmantojot operators, kas ir avotu kodā simboliski attēlota instrukciju secība. Operators pārveido savu izteiksmi operands (-i) citā vērtībā. Piemēram, 6 * 5, reizināšanas operators (*) pārveido operandus 6 un 5 30.

Saliktās izteiksmes var apvienot lielākās izteiksmēs. Piemēram, 6 * 5 + 10 parāda salikto izteiksmi 6 * 5 un salikta izteiksme, kas sastāv no viņu produkta, pievienošanas operatora +, un numuru 10. Novērtēšanas secību (vispirms reiziniet un pēc tam pievienojiet) nosaka Java prioritātes noteikums, pie kuras mēs drīz nonāksim.

Arī saliktie izteicieni var būt vienkārši

6 * 5 ir salikta izteiksme, kas sastāv no divām vienkāršām izteiksmēm, 6 un 5. Bet 6 * 5 ir arī vienkārša izteiksme no +perspektīva. The + operators redz tikai viņu produktu 30, kas ir vienkārša izteiksme.

Operatori un operandi

Java operatorus klasificē pēc to operandu skaita:

  • A unārs operators ir viens operands, piemēram unāra mīnus (piem., -5).
  • A binārs operators ir divi operandi, piemēri ir reizināšana un saskaitīšana.
  • A trīskāršais operators ir trīs operandi; piemērs ir nosacīts operators (?:).

Java operatorus klasificē arī pēc atrašanās vietas:

  • A prefiksu operators ir vienotais operators, kas atrodas pirms operanda (piem., -5).
  • A postfix operators ir unārais operators, kurš seko tā operandam (piemēram, vecums ++; - pievienot 1 uz vecumsskaitliskā vērtība).
  • An infix operators ir binārs vai trīskāršs operators starp operatora operandiem (piem., vecums + 5).

Vēl viens jshell piemērs

Turpmākajās sadaļās es iepazīstināšu ar vairākiem operatoriem, kur piemēru veidā es sniedzu piemērus. Jūs varētu izmēģināt arī šos operatorus jshell, tāpat kā:

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

Šajā gadījumā mēs vispirms ievadām izteiksmi 6 + 2, kas jshell novērtē, piešķirot iegūto 8, lai skrāpētu mainīgo $1. Tālāk mēs reizinām $1 pēc 7, kurā 56 mainīgie mainās $2. Šis piemērs parāda, ka Java izteicienos var izmantot skrāpējumu mainīgos.

Pārslogoti operatori

Operators plus (+) ir simbola piemērs pārslogots operators, kas ir operators, kurš veic vienu no vairākām operācijām, pamatojoties uz veidi tās operandiem. Pluss operators veic vesela skaitļa pievienošanu, ja abi operandi ir veseli skaitļi, peldošā komata pievienošanu, ja abi operandi ir peldošā komata vērtības, un virkņu savienošanu, ja abi operandi ir virknes. Operators mīnus (-) ir arī pārslogots, veicot veselu vai peldošu punktu atņemšanu.

Operatoru veidi Java

Piedevu operatori

The piedevu operatori palieliniet vai samaziniet skaitlisko vērtību, saskaitot un atņemot. Piedevu operatori ietver pievienošanu (+), atņemšana (-), postdecement (--), postincrement (++), priekšnoteikums (--) un iepriekšēju pieaugumu (++). Stīgu savienošana (+) arī uzskata par piedevu. Šeit ir formāla definīcija katram no šiem operatoriem:

  • Papildinājums: Dots operands1 + operands2, kur katram operandam jābūt ar rakstzīmi vai ciparu, pievienojiet operands2 uz operands1 un atdodiet summu. Piemērs: 4 + 6.
  • Atņemšana: Dots operands1 - operands2, kur katram operandam jābūt ar rakstzīmi vai ciparu, atņemiet operands2 no operands1 un atgrieziet starpību. Piemērs: 4 - 6.
  • Pēcdzemdības: Dots mainīgais--, kur mainīgais jābūt rakstzīmju vai ciparu tipa, atņemiet 1 no mainīgaisvērtība (saglabājot rezultātu mainīgais) un atgrieziet sākotnējo vērtību. Piemērs: x--;.
  • Postincrement: Dots mainīgais++, kur mainīgais jābūt rakstzīmju vai ciparu tipam, pievienojiet 1 uz mainīgaisvērtība (saglabājot rezultātu mainīgais) un atgrieziet sākotnējo vērtību. Piemērs: x ++;.
  • Priekšnoteikums: Dots --mainīgais, kur mainīgais jābūt rakstzīmju vai ciparu tipam, no vērtības atņemiet 1, rezultātu uzglabājiet mainīgaisun atgrieziet jauno samazināto vērtību. Piemērs: --x;.
  • Priekšnoteikums: Dots ++mainīgais, kur mainīgais jābūt rakstzīmju vai ciparu tipam, pievienojiet tās vērtībai 1, rezultātu uzglabājiet mainīgaisun atgrieziet jauno palielināto vērtību. Piemērs: ++ x;.
  • Stīgu savienošana: Dots operands1 + operands2, kur vismaz viens operands ir Stīga ierakstiet, pievienojiet operands2virknes attēlojums operands1virknes attēlojumu un atgriež rezultātu. Piemērs: "A" + "B".

Saskaitīšanas, atņemšanas, pēcdzemdības, pēcpiegādes, priekšizcenojuma un priekšcenojuma operatori var radīt vērtības, kas pārspēj rezultātu veida robežas. Piemēram, pievienojot divas lielas pozitīvas 64 bitu vesela skaitļa vērtības, var iegūt vērtību, kuru nevar attēlot 64 bitos. Java piedevu operatori nenosaka radušos pārpildi un par to neziņo.

Pārplūdes noteikšana Java standarta klases bibliotēkā

Standarta klases bibliotēka Matemātika klasē ir pārplūdumu noteikšanas metodes. Piemēram, int addExact (int x, int y) pievieno vērtības iekš x un y, atgriežot summu vai izmetot izņēmumu pārplūdes gadījumā.

Lietojumprogrammas piemērs: Piedevu operatori

1. saraksts parāda nelielu lietojumprogrammu spēlēšanai ar Java piedevu operatoriem.

Saraksts 1. Piedevu operatori Java (AddOp.java)

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

Iepriekšējā apmācībā jūs uzzinājāt, kā izmantot JDK javac rīks Java avota koda un java rīks, lai palaistu iegūto lietojumprogrammu. Lai apkopotu 1. sarakstu, izpildiet šādu komandu:

javac AddOp.java

Pieņemot, ka kompilācija ir veiksmīga, jums jāievēro AddOp.class failu pašreizējā direktorijā. Lai to palaistu, izpildiet šādu komandu:

java AddOp

AddOp atbild, ražojot šādu produkciju:

588 -4,3 65 65 64 64 65 AB

Šīs izejas izpēte piedāvā ieskatu postincrement, postdecrement, preincrement un preecrement operatoros. Postcrement / postdrement, vecumspašreizējā vērtība tiek izvadīta pirms pieauguma / samazināšanas operācijas. Priekšpiegādei / priekšnoteikumam darbība tiek veikta, un tās rezultāts tiek saglabāts mapē vecums, un tad vecumstiek izvadīta jaunā vērtība.

Atkārtojas ar Java operatoriem

Piedevu operatori ir īpaši noderīgi atkārtojuma paziņojums, kur tos izmanto, lai pārietu uz nākamo atkārtojumu. Par iterācijas paziņojumiem uzzināsiet nākamajā Java 101 apmācībā.

Masīva indeksa operators

The masīva indeksa operators ([]) piekļūst masīva elementam, sniedzot elementu indekss (amats). Šis operators tiek ievietots pēc masīva mainīgā nosaukuma, kā tas ir pakāpes [0] (piekļūt pirmajam elementam masīvā, kas piešķirts pakāpes; pirmais elements tiek saglabāts indeksā 0). Šeit ir oficiāla definīcija:

Dots mainīgais[indekss], kur indekss jābūt veselam skaitlim (int) tipa, nolasiet vērtību no vērtības vai saglabājiet tajā mainīgaiskrātuves elements vietā indekss. Piemērs: temperatūra [1]

Vērtība, kas nodota indekss ir 32 bitu vesels skaitlis, kas ir vai nu 0, vai arī pozitīva vērtība ir viena, kas mazāka par masīva garumu, un to norāda pievienojot .garums masīva nosaukumam. Piemēram, pakāpes.garums atgriež piešķirto masīva elementu skaitu pakāpes.

Masīvu mainīgie vs masīvi

pakāpes nav masīvs, bet ir mainīgais, kas satur atsauci uz atmiņas reģionu, kas veido masīvu. Tas attiecas uz visiem Java masīviem. Tomēr tas ir parasts atsaukties pakāpes vai jebkuru masīva mainīgo kā masīvu.

Lietojumprogrammas piemērs: Masīva indeksa operators

2. sarakstā tiek parādīts avota kods lietojumprogrammas paraugam, kas ļauj jums spēlēt ar masīvu indeksa operatoru.

2. saraksts masīva indeksa operatoram Java (ArrayIndexOp.java)

klase ArrayIndexOp {public static void main (String [] args) {int [] pakāpes = {89, 90, 68, 73, 79}; System.out.println (pakāpes [1]); pakāpes [1] = 91; System.out.println (pakāpes [1]); int indekss = 4; System.out.println (pakāpes [rādītājs]); System.out.println (pakāpes ['C' - 'A']); // System.out.println (pakāpes [1D]); }}

2. saraksts ir nedaudz interesantāks nekā 1. saraksts. Pēc piecu elementu, viendimensionāla veselu skaitļu masīva izveidošanas (izmantojot masīva inicializatoru) un masīva atsauces piešķiršanu pakāpes, galvenais () iegūst piekļuvi dažādiem elementiem. Īpaši interesē divi priekšmeti:

  • Masīva indeksa operatora indeksam galu galā jābūt 32 bitu veselam skaitlim (0 vai pozitīva vērtība). Varat norādīt vesela skaitļa mainīgā nosaukumu (piemēram, indekss), kas satur indeksa vērtību kā indeksu.
  • Varat norādīt aprēķinu, kurā iekļauti burtu literāļi. (Vēlāk šajā apmācībā es iepazīstināšu ar veida pārveidošanu, un jūs uzzināsiet, kāpēc “C” - “A” rada veselu skaitli (2), kas kalpo kā derīgs indekss.)

Pēdējais piemērs, kas iet garām 1D kā indekss masīva indeksa operatoram tiek komentēts, jo tas netiks apkopots. Ja noņemat komentāru no rindas un mēģināt sastādīt 2. sarakstu, tiks parādīts kļūdas ziņojums par nesaderīgiem veidiem: "iespējams zaudējumu pārveidojums no dubultā uz int.."

Apkopot 2. sarakstu (javac ArrayIndexOp.java) un palaidiet lietojumprogrammu (java ArrayIndexOp). Jums jāievēro šāda izeja:

90 91 79 68

Masīva indeksa operators un daudzdimensionāli masīvi

Šo operatoru varat izmantot ar daudzdimensionāliem masīviem. Piemēram, pieņemot divdimensiju izmaksas masīvs, izmaksas [0] [1] piekļūst pirmajai rindai piešķirtajam elementam (izmantojot [0]) un otro kolonnu (via [1]).

Uzdevumu operatori

The norīkojuma operators (=) piešķir izteiksmes vērtību mainīgajam (piemēram, i = 6;), ieskaitot masīva elementu (piemēram, x [0] = 15;). Izteiksmei un mainīgajam jābūt uzdevums ir saderīgs, kas nozīmē, ka viņu veidiem ir jāpiekrīt. Piemēram, vesela skaitļa mainīgajam nevar piešķirt virknes literālu. Es vairāk par to paskaidrošu, kad mēs apspriedīsim veida pārveidojumus.

Savienojuma piešķiršanas operatori (+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=) novērtēt izteicienus un vienā posmā piešķirt rezultātus mainīgajiem. Katrai izteiksmei un mainīgajam jābūt saderīgam ar piešķiršanu. Katrs operators ir noderīgs saīsne. Piemēram, tā vietā, lai precizētu x = x + 3;, varat norādīt īsāko un līdzvērtīgo x + = 3;.

Īsāk sakiet!

Tā vietā, lai precizētu x = x + 1; vai x = x - 1;, jūs varētu norādīt īsāku x + = 1; vai x - = 1;. Jūs varētu ietaupīt pat vairāk taustiņsitienus, norādot īsākos x ++; vai x--;.

Operatori pa bitiem

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