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ää 1ikä
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
alkaenoperandi 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 tallentaminenmuuttuja
) ja palauta alkuperäinen arvo. Esimerkki:x--;
. - Jälkikorotus: Annettu
muuttuja++
, missämuuttuja
on oltava luonteeltaan tai numeerista tyyppiä, lisää kohtaan 1muuttuja
: n arvo (tuloksen tallentaminenmuuttuja
) ja palauta alkuperäinen arvo. Esimerkki:x ++;
. - Ennakkomaksu: Annettu
--muuttuja
, missämuuttuja
on oltava merkki- tai numerotyyppiä, vähennä arvosta 1, tallenna tulosmuuttuja
ja palauta uusi vähennetty arvo. Esimerkki:--x;
. - Ennakkoluulo: Annettu
++muuttuja
, missämuuttuja
on oltava merkki- tai numerotyyppiä, lisää sen arvoon 1, tallenna tulosmuuttuja
ja palauta uusi lisäysarvo. Esimerkki:++ x;
. - Merkkijono ketjutus: Annettu
operandi 1 + operandi2
, jossa ainakin yksi operandi onMerkkijono
kirjoita, liitäoperandi2
merkkijonoesitys kohteeseenoperandi 1
merkkijonon 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 muuttuja
varastoelementti 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--;
.