Ohjelmointi

Arvioi Java-lausekkeet operaattoreiden kanssa

Java-sovellukset käsittelevät tietoja arvioimalla ilmaisuja, jotka ovat literaalien, menetelmäkutsujen, muuttujien nimien ja operaattoreiden yhdistelmiä. Lausekkeen arviointi tuottaa tyypillisesti uuden arvon, joka voidaan tallentaa muuttujaan, jota käytetään päätöksen tekemiseen ja niin edelleen.

Tässä opetusohjelmassa opit kirjoittamaan lausekkeita Java-ohjelmillesi. Monissa tapauksissa käytät operaattoreita Java-lausekkeiden kirjoittamiseen, ja niitä on monia tietyntyyppiset operaattorit tietää kuinka käyttää. Esittelen lyhyesti Java-operaattorityypit (mukaan lukien additiiviset, bitti-, loogiset, ehdolliset, siirto- ja tasa-arvotyypit) ja niiden operandit. Opit myös tärkeistä käsitteistä, kuten käyttäjän ylikuormitus ja operaattorin etusija, ja näet demonstraation primitiivisen tyyppisestä muunnoksesta. Lopetan pienellä Java-ohjelmalla, jonka avulla voit harjoittaa primitiivityyppisiä muunnoksia itse.

lataa Hanki koodi Lataa lähdekoodi esimerkiksi sovelluksiin tässä opetusohjelmassa. Luonut Jeff Friesen JavaWorldille.

Yksinkertaiset lausekkeet

A yksinkertainen ilmaisu on kirjaimellinen, muuttujan nimi tai menetelmäpuhelu. Operaattoreita ei ole mukana. Tässä on joitain esimerkkejä yksinkertaisista lausekkeista:

52 // kokonaisluku kirjaimellinen ikä // muuttujan nimi System.out.println ("ABC"); // menetelmä kutsu "Java" // merkkijono literaali 98.6D // kaksitarkkuuksinen liukulukuinen litraali 89L // pitkä kokonaislukun kirjain

Yksinkertaisella lausekkeella on tyyppi, joka on joko primitiivinen tyyppi tai viitetyyppi. Näissä esimerkeissä 52 on 32-bittinen kokonaisluku (int); System.out.println ("ABC"); on mitätön (mitätön), koska se ei palauta arvoa;"Java" on merkkijono (Merkkijono); 98,6D on 64-bittinen kaksitarkkuuksinen liukuluku (kaksinkertainen); ja 89L on 64-bittinen pitkä kokonaisluku (pitkä). Emme tiedä ikätyyppi.

Kokeile jshelliä

Voit helposti kokeilla näitä ja muita yksinkertaisia ​​lausekkeita jshell. Kirjoita esimerkiksi 52 klo jshell> kehote ja saat jotain seuraavanlaista:

$1 ==> 52

$1 on a: n nimi naarmuuntuva että jshell luo tallentaa 52. (Raaputusmuuttujat luodaan aina, kun literaaleja syötetään.) Suorita System.out.println ($ 1) ja näet 52 tuotoksena.

Voit juosta jshell kanssa -v komentoriviargumentti (jshell -v) tuottaa tarkkaa palautetta. Tässä tapauksessa syöttäminen 52 johtaisi seuraavaan viestiin, joka paljasti tuon muuttujan $1 on int (32-bittinen kokonaisluku) -tyyppi:

| luotu raaputusmuuttuja $ 1: int

Yritä seuraavaksi syöttää ikä. Tässä tapauksessa saat todennäköisesti virheilmoituksen siitä, että symbolia ei löydy. Java-kuori olettaa sen ikä on muuttuja, mutta se ei tiedä sen tyyppiä. Sinun on lisättävä tyyppi; Katso esimerkiksi mitä tapahtuu, jos syötät ikä.

Yhdistetyt lausekkeet

A yhdisteilmaisu koostuu yhdestä tai useammasta yksinkertaisesta lausekkeesta, joka on integroitu suurempaan lausekkeeseen operaattori, joka on komentosarja, joka on symbolisesti esitetty lähdekoodissa. Operaattori muuttaa lausekkeensa operandi (t) toiseen arvoon. Esimerkiksi 6 * 5, kertolaskuoperaattori (*) muuntaa operandit 6 ja 5 osaksi 30.

Yhdistetyt lausekkeet voidaan yhdistää suuremmiksi lausekkeiksi. Esimerkiksi, 6 * 5 + 10 esittää yhdistetyn ilmentymisen 6 * 5 ja yhdistelauseke, joka koostuu niiden tuotteesta, lisäysoperaattorista +ja numero 10. Arvioinnin järjestys (kerro ensin ja lisää sitten) sanelee Java etusijan sääntö, johon pääsemme pian.

Yhdistetyt lausekkeet voivat olla myös yksinkertaisia

6 * 5 on yhdistetty lauseke, joka koostuu kahdesta yksinkertaisesta lausekkeesta, 6 ja 5. Mutta 6 * 5 on myös yksinkertainen lauseke +näkökulmasta. + operaattori näkee vain heidän tuotteensa, 30, mikä on yksinkertainen ilmaisu.

Operaattorit ja operandit

Java-operaattorit luokitellaan niiden operandien lukumäärän mukaan:

  • A operaattori on esimerkiksi yksi operandi unary miinus (esimerkiksi., -5).
  • A binäärioperaattori on kaksi operandia, esimerkkejä ovat kertolasku ja summaus.
  • A kolmivaiheinen operaattori on kolme operandia; esimerkki on ehdollinen operaattori (?:).

Java-operaattorit luokitellaan myös sijainnin mukaan:

  • A etuliiteoperaattori on unaarinen operaattori, joka edeltää operandiaan (esim. -5).
  • A postfix-operaattori on unaarinen operaattori, joka seuraa operandiaan (esim. ikä ++; - lisää 1 ikälukuarvo).
  • An infix-operaattori on binääri- tai kolmiportainen operaattori operaattorin operandien välillä (esim. ikä + 5).

Toinen esimerkki jshellistä

Esittelen lisää operaattoreita seuraavissa osioissa, joissa esitän esimerkkejä sovellusten muodossa. Voit myös kokeilla näitä operaattoreita jshell, niin kuin:

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

Tässä tapauksessa syötämme ensin lausekkeen 6 + 2, joka jshell arvioi, osoittamalla tuloksena olevan 8 muuttujalle $1. Seuraavaksi kerrotaan $1 mennessä 7, joka tallentaa 56 tyhjäkäyntimuuttujaan $2. Tämä esimerkki osoittaa, että voit käyttää raaputusmuuttujia Java-lausekkeissa.

Ylikuormitetut operaattorit

Plus (+) -operaattori on esimerkki ylikuormitettu operaattori, joka on operaattori, joka suorittaa yhden useista operaatioista tyypit sen operandeista. Plus-operaattori suorittaa kokonaisluvun lisäyksen, kun molemmat operandit ovat kokonaislukuja, liukulukuinen lisäys, kun molemmat operandit ovat liukulukuarvoja, ja merkkijonon ketjutus, kun molemmat operandit ovat merkkijonoja. Miinus (-) -operaattori on myös ylikuormitettu suorittamalla kokonaisluku- tai liukulukuinen vähennys.

Operaattorityypit Java-kielellä

Lisäaineoperaattorit

lisäaineoperaattorit lisätä tai vähentää numeerista arvoa summaamalla ja vähentämällä. Lisäaineoperaattorit sisältävät lisäyksen (+), vähennyslasku (-), jälkivaje (--), jälkikorotus (++), ennakkomaksu (--) ja ennakkomaksu (++). Merkkijono ketjutus (+) pidetään myös lisäaineena. Tässä on muodollinen määritelmä kullekin näistä operaattoreista:

  • Lisäys: Annettu operandi 1 + operandi2, jossa jokaisen operandin on oltava luonteeltaan merkki tai numerotyyppi, lisää operandi2 että operandi 1 ja palauta summa. Esimerkki: 4 + 6.
  • Vähennyslasku: Annettu operandi 1 - operandi2, jossa jokaisen operandin on oltava luonteeltaan tai numeroltaan, vähennä operandi2 alkaen operandi 1 ja palauta ero. Esimerkki: 4 - 6.
  • Jälkivajaus: Annettu muuttuja--, missä muuttuja on oltava merkki- tai numerotyyppiä, vähennä 1: stä muuttuja: n arvo (tuloksen tallentaminen muuttuja) ja palauta alkuperäinen arvo. Esimerkki: x--;.
  • Jälkikorotus: Annettu muuttuja++, missä muuttuja on oltava luonteeltaan tai numeerista tyyppiä, lisää kohtaan 1 muuttuja: n arvo (tuloksen tallentaminen muuttuja) ja palauta alkuperäinen arvo. Esimerkki: x ++;.
  • Ennakkomaksu: Annettu --muuttuja, missä muuttuja on oltava merkki- tai numerotyyppiä, vähennä arvosta 1, tallenna tulos muuttujaja palauta uusi vähennetty arvo. Esimerkki: --x;.
  • Ennakkoluulo: Annettu ++muuttuja, missä muuttuja on oltava merkki- tai numerotyyppiä, lisää sen arvoon 1, tallenna tulos muuttujaja palauta uusi lisäysarvo. Esimerkki: ++ x;.
  • Merkkijono ketjutus: Annettu operandi 1 + operandi2, jossa ainakin yksi operandi on Merkkijono kirjoita, liitä operandi2merkkijonoesitys kohteeseen operandi 1merkkijonon esityksen ja palauttaa tuloksen. Esimerkki: "A" + "B".

Yhteenlasku-, vähennys-, vähennys-, jälki-, ennakko- ja pre-lisäysoperaattorit voivat tuottaa arvoja, jotka ylittävät tulostyypin rajat. Esimerkiksi kahden suuren positiivisen 64-bittisen kokonaislukuarvon lisääminen voi tuottaa arvon, jota ei voida esittää 64 bitillä. Java-lisäaineoperaattorit eivät havaitse tai ilmoita tuloksena olevaa ylivuotoa.

Ylivuototunnistus Java-vakioluokkikirjastossa

Vakioluokan kirjasto Matematiikka luokka sisältää menetelmiä ylivuotojen havaitsemiseksi. Esimerkiksi, int addExact (int x, int y) lisää arvot sisään x ja y, palautetaan summa tai heitetään poikkeus ylivuotoon.

Esimerkkisovellus: Lisäaineoperaattorit

Listaus 1 tarjoaa pienen sovelluksen pelaamiseen Java: n lisäoperaattoreilla.

Listaus 1. Java-lisäaineoperaattorit (AddOp.java)

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

Opit edellisessä opetusohjelmassa kuinka käyttää JDK: ita javac työkalu Java-lähdekoodin ja java työkalu tuloksena olevan sovelluksen suorittamiseksi. Suorita seuraava komento kääntääksesi Listaus 1:

javac AddOp.java

Jos oletetaan, että kokoaminen on onnistunut, sinun on noudatettava AddOp.luokka tiedosto nykyiseen hakemistoon. Suorita seuraava komento sen suorittamiseksi:

java AddOp

AddOp vastaa tuottamalla seuraavan tuotoksen:

588 -4,3 65 65 64 64 65 AB

Tämän tuotoksen tutkiminen tarjoaa käsityksen postincrement-, postdecrement-, preincrement- ja preecrement-operaattoreista. Jälkikorotukselle / jälkivähennykselle, ikänykyinen arvo annetaan ennen lisäys / vähennysoperaatiota. Ennakkomaksua / ennakkomaksua varten toimenpide suoritetaan ja sen tulos tallennetaan ikä, ja sitten ikäuusi arvo tuotetaan.

Toistaminen Java-operaattoreiden kanssa

Lisäaineoperaattorit ovat erityisen hyödyllisiä iterointilauseke, jossa niitä käytetään etenemään seuraavaan iteraatioon. Opit iteraatiolausekkeista seuraavasta Java 101 -opetusohjelmasta.

Taulukko-operaattori

taulukkoindeksioperaattori ([]) käyttää taulukkoelementtiä tarjoamalla elementin indeksi (asema). Tämä operaattori sijoitetaan taulukon muuttujan nimen perään, kuten kohdassa arvosanat [0] (käytä ensimmäistä elementtiä ryhmälle määritetyssä taulukossa arvosanat; ensimmäinen elementti on tallennettu hakemistoon 0). Tässä on muodollinen määritelmä:

Annettu muuttuja[indeksi], missä indeksi täytyy olla kokonaisluku (int) -tyyppi, lue arvo tai tallenna arvo siihen muuttujavarastoelementti paikalla indeksi. Esimerkki: lämpötilat [1]

Arvo välitetty indeksi on 32-bittinen kokonaisluku, joka on joko 0 tai positiivinen arvo, joka on pienempi kuin matriisin pituus, mikä osoitetaan liittämällä .pituus taulukon nimeen. Esimerkiksi, arvosanat. pituus palauttaa määritetyn matriisin elementtien lukumäärän arvosanat.

Matriisimuuttujat vs matriisit

arvosanat ei ole matriisi, mutta on muuttuja, joka sisältää viittauksen ryhmän muodostavaan muistialueeseen. Tämä pätee kaikkiin Java-matriiseihin. On kuitenkin tavanomaista viitata arvosanat tai mikä tahansa matriisimuuttuja matriisina.

Esimerkkisovellus: Taulukko-operaattori

Listaus 2 esittää lähdekoodin esimerkkisovellukselle, jonka avulla voit pelata taulukko-operaattorin kanssa.

Listaus 2. Java-taulukko-operaattori (ArrayIndexOp.java)

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

Listaus 2 on jonkin verran mielenkiintoisempi kuin Listaus 1. Kun olet luonut viiden elementin, yksiulotteisen kokonaislukumatriisin (taulukon alustusohjelman kautta) ja osoittanut taulukon viitteen arvosanat, main () etenee pääsemään useisiin elementteihin. Kaksi kohdetta ovat erityisen kiinnostavia:

  • Taulukko-operaattorin indeksin on viime kädessä oltava 32-bittinen kokonaisluku (0 tai positiivinen arvo). Voit määrittää kokonaislukumuuttujan nimen (esim. indeksi), joka sisältää indeksin arvon indeksinä.
  • Voit määrittää laskelman, joka sisältää merkkilitraaleja. (Myöhemmin tässä opetusohjelmassa esitän tyyppimuunnokset ja huomaat miksi 'C' - 'A' tuottaa kokonaisluvun (2), joka toimii kelvollisena hakemistona.)

Viimeinen esimerkki, joka kulkee 1D taulukko-operaattorin hakemistona, kommentoidaan, koska se ei käänny. Jos poistat rivin kommentin ja yrität kääntää luetteloa 2, saat virheilmoituksen yhteensopimattomista tyypeistä: "mahdollinen häviöllinen muunnos kaksinkertainen että int.."

Koosta luettelo 2 (javac ArrayIndexOp.java) ja suorita sovellus (java ArrayIndexOp). Ota huomioon seuraava tulos:

90 91 79 68

Taulukko-operaattori ja moniulotteiset taulukot

Voit käyttää tätä operaattoria moniulotteisten taulukoiden kanssa. Oletetaan esimerkiksi kaksiulotteinen kustannukset taulukko, kustannukset [0] [1] käyttää ensimmäiselle riville määritettyä elementtiä (kautta [0]) ja toinen sarake (via [1]).

Tehtäväoperaattorit

tehtävänoperaattori (=) määrittää lausekkeen arvon muuttujalle (esim. i = 6;), mukaan lukien taulukkoelementti (esim. x [0] = 15;). Lausekkeen ja muuttujan on oltava tehtävä yhteensopiva, mikä tarkoittaa, että heidän tyyppinsä on sovittava. Et voi esimerkiksi määrittää merkkijonon kirjainta kokonaislukumuuttujalle. Selitän tästä enemmän, kun keskustelemme tyyppimuunnoksista.

Yhdistelmäoperaattorit (+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=) arvioida lausekkeita ja liittää tulokset muuttujiin yhdessä vaiheessa. Jokaisen lausekkeen ja muuttujan on oltava tehtävien kanssa yhteensopivia. Jokainen operaattori toimii hyödyllisenä pikakuvakkeena. Esimerkiksi määrittelyn sijasta x = x + 3;, voit määrittää lyhyemmän ja vastaavan x + = 3;.

Pidä se lyhyenä!

Määrittelyn sijasta x = x + 1; tai x = x - 1;, voit määrittää lyhyemmän x + = 1; tai x - = 1;. Voisit säästää vielä enemmän näppäinyhdistelmiä määrittämällä lyhyempi x ++; tai x--;.

Bit-operaattorit