{"id":80,"date":"2014-04-10T11:51:06","date_gmt":"2014-04-10T09:51:06","guid":{"rendered":"http:\/\/www.webotlet.hu\/wp\/?p=80"},"modified":"2019-11-08T21:48:57","modified_gmt":"2019-11-08T20:48:57","slug":"80","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=80","title":{"rendered":"Java programoz\u00e1s 3. &#8211; V\u00e1ltoz\u00f3k"},"content":{"rendered":"<h1>V\u00e1ltoz\u00f3k, avagy dobozok minden esetre<\/h1>\n<p>Ismerkedj\u00fcnk meg a v\u00e1ltoz\u00f3kkal. A v\u00e1ltoz\u00f3knak alapvet\u0151en k\u00e9t t\u00edpus\u00e1t k\u00fcl\u00f6nb\u00f6ztetj\u00fck meg: primit\u00edv \u00e9s referencia. A referencia t\u00edpus\u00fa v\u00e1ltoz\u00f3k nem egy egyszer\u0171 \u00e9rt\u00e9re mutatnak, hanem egy \u00f6sszetettebb adatszerkezetre, maga a v\u00e1ltoz\u00f3 csak egy hivatkoz\u00e1s az adatszerkezet mem\u00f3riabeli c\u00edm\u00e9re. Most a primit\u00edv v\u00e1ltoz\u00f3kat fogjuk t\u00e1rgyalni.<\/p>\n<p>A programunkban szinte mindig el\u0151fordul az, hogy valamilyen adatot t\u00e1rolni szeretn\u00e9nk. Az elm\u00e9leti bevezet\u00e9s cikkben foglalkoztunk azzal, hogy a Java egy objektum orient\u00e1lt programoz\u00e1si nyelv. Az objektumok pedig r\u00e1juk jellemz\u0151 tulajdons\u00e1gokb\u00f3l \u00e9s az ezeket kezel\u0151 (be\u00e1ll\u00edt\u00f3, lek\u00e9rdez\u0151, m\u00f3dos\u00edt\u00f3) met\u00f3dusokb\u00f3l \u00e1llnak. Ezeket a tulajdons\u00e1gokat mi rendelj\u00fck hozz\u00e1 az objektumokhoz, hiszen mi d\u00f6ntj\u00fck el, miket k\u00edv\u00e1nunk haszn\u00e1lni. Minden tulajdons\u00e1got alapvet\u0151en h\u00e1rom fontos elem hat\u00e1roz meg. A tulajdons\u00e1g t\u00edpusa, neve \u00e9s \u00e9rt\u00e9ke. A v\u00e1ltoz\u00f3 a h\u00e1tt\u00e9rben val\u00f3j\u00e1ban egy mem\u00f3riater\u00fclet, ami valamilyen \u00e9rt\u00e9ket t\u00e1rol. Felsorol\u00e1sk\u00e9pp n\u00e9zz\u00fcnk meg p\u00e1r fontos meg\u00e1llap\u00edt\u00e1st a v\u00e1ltoz\u00f3kkal kapcsolatban:<\/p>\n<ul>\n<li>A v\u00e1ltoz\u00f3k neve egyedi kell hogy legyen (adott blokkon bel\u00fcl), csak bet\u0171vel kezd\u0151dhet, de ut\u00e1na b\u00e1rmennyi \u00e9s b\u00e1rmilyen karakter \u00e1llhat.<\/li>\n<li>A v\u00e1ltoz\u00f3k \u00e9rt\u00e9ke alapvet\u0151en nem fix, ezt m\u00f3dos\u00edthatjuk, erre utal a v\u00e1ltoz\u00f3 n\u00e9v. (l\u00e9teznek fix v\u00e1ltoz\u00f3k is, melyek \u00e9rt\u00e9k\u00e9t csak egyszer adhatjuk meg.)<\/li>\n<li>Minden v\u00e1ltoz\u00f3 egy id\u0151pontban egyetlen \u00e9rt\u00e9ket t\u00e1rolhat. Ha \u00faj \u00e9rt\u00e9ket adunk neki, az el\u0151z\u0151 \u00e9rt\u00e9k t\u00f6rl\u0151dik.<\/li>\n<\/ul>\n<p>A v\u00e1ltoz\u00f3 neve a programunkon bel\u00fcl minden esetben a benne t\u00e1rolt \u00e9rt\u00e9ket jelenti. Ahol a v\u00e1ltoz\u00f3 nev\u00e9t a programba illesztj\u00fck, ott az abban t\u00e1rolt \u00e9rt\u00e9ket fogja felhaszn\u00e1lni. Eml\u00edtettem, hogy a v\u00e1ltoz\u00f3 t\u00edpussal, n\u00e9vvel \u00e9s \u00e9rt\u00e9kkel rendelkezik. Ebb\u0151l a t\u00edpusr\u00f3l nem volt m\u00e9g sz\u00f3. A t\u00edpus azt hat\u00e1rozza meg, hogy milyen jelleg\u0171 \u00e9rt\u00e9ket t\u00e1rolhatunk az adott v\u00e1ltoz\u00f3ban. A primit\u00edv v\u00e1ltoz\u00f3k alapvet\u0151en n\u00e9gyf\u00e9le t\u00edpus\u00faak lehetnek, egy-egy konkr\u00e9t p\u00e9ld\u00e1val:<\/p>\n<ul>\n<li>eg\u00e9sz sz\u00e1m: 32<\/li>\n<li>val\u00f3s sz\u00e1m: 1.125<\/li>\n<li>karakter: c<\/li>\n<li>logikai \u00e9rt\u00e9k: true<\/li>\n<\/ul>\n<p>Ezek az alapt\u00edpusok, de az eg\u00e9sz \u00e9s val\u00f3s sz\u00e1mok v\u00e1lt\u00f3z\u00f3i a benn\u00fck t\u00e1rolt sz\u00e1m nagys\u00e1g\u00e1t\u00f3l f\u00fcgg\u0151en m\u00e9g tov\u00e1bb bonthat\u00f3k. Az eg\u00e9sz sz\u00e1mok eg\u00e9sz \u00e9rt\u00e9keket t\u00e1rolnak tizedesjegyek n\u00e9lk\u00fcl. A val\u00f3s sz\u00e1mok tizedesjegyekkel rendelkez\u0151 sz\u00e1mokat jelentenek. A karakter t\u00edpus\u00fa v\u00e1ltoz\u00f3 valamilyen billenty\u0171zeten l\u00e9v\u0151 beg\u00e9pelhet\u0151 karaktert t\u00e1rolhat (bet\u0171k, sz\u00e1mok, \u00edr\u00e1sjelek, speci\u00e1lis karakterek, sz\u00f3k\u00f6z, stb), valamint speci\u00e1lis, \u00f6nmag\u00e1ban be nem g\u00e9pelhet\u0151 vez\u00e9rl\u0151 karaktereket tartalmazhat. A logikai \u00e9rt\u00e9k pedig egy k\u00e9t\u00e1ll\u00e1s\u00fa kapcsol\u00f3, mely igaz vagy hamis \u00e9rt\u00e9keket t\u00e1rolhat, pontosabban ezek angol nyelv\u0171 megfelel\u0151j\u00e9t (true, false).<\/p>\n<p>A v\u00e1ltoz\u00f3 teh\u00e1t egy t\u00edpussal, n\u00e9vvel \u00e9s a t\u00edpus \u00e1ltal meghat\u00e1rozott \u00e9rt\u00e9kkel rendelkez\u0151 adatelem. N\u00e9zz\u00fcnk a v\u00e1ltoz\u00f3k haszn\u00e1lat\u00e1ra egy p\u00e9ld\u00e1t. Vegy\u00fcnk egy aut\u00f3 objektumot \u00e9s p\u00e1r ahhoz tartoz\u00f3 tulajdons\u00e1got. Legyen az aut\u00f3nak sebess\u00e9gfokozata, pillanatnyi sebess\u00e9ge, sz\u00ednk\u00f3dja, \u00e9s egy jelz\u0151, ami a sz\u00ednk\u00f3dot b\u0151v\u00edti ki, hogy met\u00e1lf\u00e9ny\u0171-e vagy sem. Ebben a p\u00e9ldak\u00f3dban mind a n\u00e9gy alapt\u00edpus megtal\u00e1lhat\u00f3.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class Auto\r\n{\r\n  public static void main( String&#x5B;] args )\r\n  {\r\n    int fokozat;\r\n    double sebesseg;\r\n    char szinkod;\r\n    boolean metal;\r\n\r\n    System.out.println(&quot;Ez egy virtualis auto.&quot;);\r\n\r\n    fokozat = 4;\r\n    sebesseg = 48.6;\r\n    szinkod = 'R';\r\n    metal = true;\r\n\r\n    System.out.println( &quot;Az auto sebessegfokozata: &quot; + fokozat );\r\n    System.out.println( &quot;Az auto pillanatnyi sebessege: &quot; + sebesseg );\r\n    System.out.println( &quot;Az auto szinkodja: &quot; + szinkod );\r\n    System.out.println( &quot;Az auto metalszinu: &quot; + metal );\r\n  }\r\n}\r\n<\/pre>\n<p>A v\u00e1ltoz\u00f3k haszn\u00e1lat\u00e1val kapcsolatban k\u00e9t nagyon fontos fogalmat kell tiszt\u00e1zni:<\/p>\n<ul>\n<li>deklar\u00e1l\u00e1s<\/li>\n<li>inicializ\u00e1l\u00e1s<\/li>\n<\/ul>\n<p>A deklar\u00e1l\u00e1s a v\u00e1ltoz\u00f3 t\u00edpus\u00e1nak \u00e9s nev\u00e9nek megad\u00e1s\u00e1t jelenti. Ennek \u00e1ltal\u00e1nos form\u00e1ja:<br \/>\nt\u00edpus v\u00e1ltoz\u00f3n\u00e9v;<br \/>\nAz inicializ\u00e1l\u00e1s a v\u00e1ltoz\u00f3nak t\u00f6rt\u00e9n\u0151 kezd\u0151\u00e9rt\u00e9k ad\u00e1s. \u00c1ltal\u00e1nos form\u00e1ja:<br \/>\nv\u00e1ltoz\u00f3n\u00e9v = kezd\u0151\u00e9rt\u00e9k;<br \/>\nEz a k\u00e9t l\u00e9p\u00e9s ak\u00e1r \u00f6ssze is vonhat\u00f3, ekkor a k\u00f6vetkez\u0151t \u00edrjuk:<br \/>\nt\u00edpus v\u00e1ltoz\u00f3n\u00e9v = kezd\u0151\u00e9rt\u00e9k;<\/p>\n<p>A v\u00e1ltoz\u00f3k tekintet\u00e9ben fontos \u00fcgyelni arra, hogy addig ne haszn\u00e1ljuk &#8211; nem is nagyon tudjuk &#8211; a v\u00e1ltoz\u00f3t, am\u00edg nem rendelkezik kezd\u0151\u00e9rt\u00e9kkel, ami ak\u00e1r nulla vagy t\u00edpust\u00f3l f\u00fcgg\u0151en speci\u00e1lis null (\u00fcres) \u00e9rt\u00e9k is lehet. Haszn\u00e1latnak min\u0151s\u00fcl az is, ha a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t ki szeretn\u00e9nk \u00edratni a k\u00e9perny\u0151re. A v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t term\u00e9szetesen t\u00f6bbsz\u00f6r is meg lehet v\u00e1ltoztatni, ilyenkor az el\u0151z\u0151 \u00e9rt\u00e9k, mint m\u00e1r eml\u00edtettem, t\u00f6rl\u0151dik. Ez az \u00e9rt\u00e9kad\u00e1s formailag ugyanolyan, mint az inicializ\u00e1l\u00e1s. A k\u00fcl\u00f6nbs\u00e9g a kett\u0151 k\u00f6z\u00f6tt csak annyi, hogy az inicializ\u00e1l\u00e1s a legels\u0151 \u00e9rt\u00e9kad\u00e1s.<\/p>\n<p>Ahogy m\u00e1r eml\u00edtettem, a v\u00e1ltoz\u00f3 nev\u00e9t haszn\u00e1lva a benne t\u00e1rolt \u00e9rt\u00e9ket kaphatjuk meg. Amikor p\u00e9ld\u00e1ul ki szeretn\u00e9nk \u00edrni, hogy milyen \u00e9rt\u00e9ket t\u00e1rol, akkor a k\u00f6vetkez\u0151t tessz\u00fck:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n&quot;Az auto sebessegfokozata: &quot; + fokozat\r\n<\/pre>\n<p>Az id\u00e9z\u0151jelek k\u00f6z\u00f6tti sz\u00f6vegr\u00e9szt String-nek nevezz\u00fck. Ez egy karakterekb\u0151l \u00e1ll\u00f3 karakterl\u00e1nc (sz\u00f6vegnek is nevezik, b\u00e1r nem csak bet\u0171ket tartalmazhat). A String egy referencia v\u00e1ltoz\u00f3t\u00edpus, k\u00e9s\u0151bb fogjuk t\u00e1rgyalni, most el\u00e9g annyit tudni r\u00f3la, hogy amit id\u00e9z\u0151jelek k\u00f6z\u00e9 tesz\u00fcnk, az String t\u00edpus\u00fa lesz. Az\u00e9rt fontos ez, mert jellemz\u0151en sz\u00f6vegeket \u00edrunk ki a k\u00e9perny\u0151re. L\u00e1tjuk azt azonban, hogy a sz\u00f6veghez &#8220;hozz\u00e1adjuk&#8221; a v\u00e1ltoz\u00f3t. A Java nyelvben a m\u0171veletek t\u00f6bbs\u00e9g\u00e9t (csak\u00fagy, mint matematik\u00e1ban) balr\u00f3l jobbra \u00e9rt\u00e9kelj\u00fck ki. Ekkor az t\u00f6rt\u00e9nik, hogy a megadott sz\u00f6veghez hozz\u00e1f\u0171zi a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t. De nem csak ennyi t\u00f6rt\u00e9nik, hanem egy nagyon fontos dolog is!<\/p>\n<p>Az \u00f6sszead\u00e1s, mint m\u0171velet itt \u00f6sszef\u0171z\u00e9st jelent, vagyis a v\u00e1ltoz\u00f3 tartalm\u00e1t odailleszti a sz\u00f6veg v\u00e9g\u00e9re. De a sz\u00f6veg \u00e9s a p\u00e9ld\u00e1ban eml\u00edtett fokozat nev\u0171 v\u00e1ltoz\u00f3 nem egyforma t\u00edpus\u00fa. Az \u00f6sszef\u0171z\u00e9s sor\u00e1n a sz\u00e1m\u00e9rt\u00e9k sz\u00f6veg t\u00edpus\u00fav\u00e1 alakul egy automatikus konverzi\u00f3t (t\u00edpusv\u00e1lt\u00e1st) k\u00f6vet\u0151en. Ez\u00e9rt lehet \u00edgy ki\u00edratni a v\u00e1ltoz\u00f3k \u00e9rt\u00e9k\u00e9t.<\/p>\n<p>M\u00e9g a primit\u00edv v\u00e1ltoz\u00f3kn\u00e1l is l\u00e9teznek adott t\u00edpuson bel\u00fcl k\u00fcl\u00f6nf\u00e9le &#8220;m\u00e9ret\u0171&#8221; t\u00e1rol\u00f3k. Att\u00f3l f\u00fcggetlen\u00fcl, hogy egy v\u00e1ltoz\u00f3 mondjuk eg\u00e9sz sz\u00e1mokat tartalmazhat, meg lehet adni a m\u00e9ret\u00e9t is. A m\u00e9rete alatt azt \u00e9rtj\u00fck, hogy a sz\u00e1m\u00edt\u00f3g\u00e9p h\u00e1ny b\u00e1jton t\u00e1rolja a sz\u00e1m \u00e9rt\u00e9k\u00e9t, ez\u00e1ltal meghat\u00e1rozza azt az intervallumot, amekkora \u00e9rt\u00e9ket a v\u00e1ltoz\u00f3 felvehet. Eg\u00e9sz t\u00edpuson bel\u00fcl a k\u00f6vetkez\u0151 \u00e1llnak rendelkez\u00e9s\u00fcnkre:<\/p>\n<table>\n<tbody>\n<tr>\n<th>T\u00edpus<\/th>\n<th>Le\u00edr\u00e1s<\/th>\n<th>T\u00e1rol\u00e1s<\/th>\n<th>Intervallum<\/th>\n<\/tr>\n<tr>\n<td>byte<\/td>\n<td>b\u00e1jt m\u00e9ret\u0171 eg\u00e9sz<\/td>\n<td align=\"center\">8 bit<\/td>\n<td align=\"center\">[-128;127]<\/td>\n<\/tr>\n<tr>\n<td>short<\/td>\n<td>r\u00f6vid eg\u00e9sz<\/td>\n<td align=\"center\">16 bit<\/td>\n<td align=\"center\">[-32768;32767]<\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td>eg\u00e9sz<\/td>\n<td align=\"center\">32 bit<\/td>\n<td align=\"center\">[<span style=\"font-family: Courier New;\">-2147483648;<\/span><span style=\"font-family: Courier New;\">2147483647]<\/span><\/td>\n<\/tr>\n<tr>\n<td>long<\/td>\n<td>hossz\u00fa eg\u00e9sz<\/td>\n<td align=\"center\">64 bit<\/td>\n<td align=\"center\">[-<span style=\"font-family: Courier New;\">9223372036854775808;<\/span><span style=\"font-family: Courier New;\">9223372036854775807] <\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Az eg\u00e9sz t\u00edpusokhoz hasonl\u00f3an lebeg\u0151pontos sz\u00e1mokat tartalmaz\u00f3 v\u00e1ltoz\u00f3b\u00f3l is t\u00f6bbf\u00e9le, sz\u00e1m szerint kett\u0151 van.<\/p>\n<table>\n<tbody>\n<tr>\n<th>T\u00edpus<\/th>\n<th>Le\u00edr\u00e1s<\/th>\n<th>T\u00e1rol\u00e1s<\/th>\n<\/tr>\n<tr>\n<td>float<\/td>\n<td>egyszeres pontoss\u00e1g\u00fa lebeg\u0151pontos<\/td>\n<td align=\"center\">32 bit<\/td>\n<\/tr>\n<tr>\n<td>double<\/td>\n<td>k\u00e9tszeres pontoss\u00e1g\u00fa lebeg\u0151pontos<\/td>\n<td align=\"center\">64 bit<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Mivel azonos t\u00edpusb\u00f3l t\u00f6bbf\u00e9le m\u00e9ret l\u00e9tezik, m\u00e1r a kezd\u0151\u00e9rt\u00e9k megad\u00e1sakor probl\u00e9m\u00e1k lehetnek. Vegy\u00fck ezt a p\u00e9ld\u00e1t:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">int szam = 10;<\/pre>\n<p>Ezzel semmi gond nincs, ugyanis az int t\u00edpusba ez a m\u00e9ret\u0171 sz\u00e1m elf\u00e9r. A byte \u00e9s short t\u00edpusokn\u00e1l is hasonl\u00f3an lehet megadni kezd\u0151\u00e9rt\u00e9ket, arra kell csak \u00fcgyelni, hogy megfelel\u0151 m\u00e9ret\u0171 sz\u00e1mot t\u00e1roljunk csak benne. Az utols\u00f3val m\u00e1r gond lenne, mert a t\u00e1rolni k\u00edv\u00e1nt \u00e9rt\u00e9k m\u00e1r nincs benne a v\u00e1ltoz\u00f3nak megfelel\u0151 intervallumban.<\/p>\n<ol>\n<li>byte b = 10;<\/li>\n<li>byte b = -40;<\/li>\n<li>byte b = 120;<\/li>\n<li><span style=\"color: #ff0000;\">byte b = 130;<\/span><\/li>\n<\/ol>\n<p><span style=\"color: #000000;\">A short t\u00edpussal is hasonl\u00f3 a helyzet, ott p\u00e9ld\u00e1ul m\u00e1r nem lehetne egy 35000 \u00e9rt\u00e9ket t\u00e1rolni, mert nem f\u00e9r el ebben a t\u00edpus\u00fa v\u00e1ltoz\u00f3ban.<\/span><\/p>\n<p>Mi a helyzet a long t\u00edpussal? Egy \u00e9rdekes hib\u00e1ba futhatunk bele egy ilyen sorral<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">long szam = 3000000000;<\/pre>\n<p>Tegy\u00fck fel, egy 3 milli\u00e1rdos kezd\u0151\u00e9rt\u00e9ket akarunk adni. Fura, hiszen a v\u00e1ltoz\u00f3ban sokkal nagyobb m\u00e9ret\u0171 sz\u00e1m is belef\u00e9rne. Ez a 3 milli\u00e1rd melyik v\u00e1ltoz\u00f3nak az intervallum\u00e1b\u00f3l log ki? Az int t\u00edpus\u00e9b\u00f3l. Arr\u00f3l van sz\u00f3, hogy ha csak egy sz\u00e1mot le\u00edrunk mindenf\u00e9le sallang n\u00e9lk\u00fcl, azt a Java int t\u00edpus\u00fa \u00e9rt\u00e9kk\u00e9nt kezeli. A kisebb sz\u00e1mokn\u00e1l akkor hogyan oldja meg, hogy egy byte v\u00e1ltoz\u00f3ba belerakhatja a nagyobb m\u00e9ret\u0171 int t\u00edpus\u00fa \u00e9rt\u00e9ket? Konverzi\u00f3val, vagyis a byte v\u00e1ltoz\u00f3ban m\u00e1r az \u00e1talak\u00edtott, megfelel\u0151 m\u00e9ret\u0171 \u00e9rt\u00e9ket helyezi el. Igen \u00e1m, de maradva az el\u0151z\u0151 hib\u00e1n\u00e1l itt a gond az, hogy ekkora m\u00e9ret\u0171 int sz\u00e1m nem is l\u00e9tezik, ez\u00e9rt el sem fogadja \u00edgy le\u00edrva. Ekkor k\u00fcl\u00f6n jelezn\u00fcnk kell a sz\u00e1m\u00e9rt\u00e9k v\u00e9g\u00e9n a sz\u00e1m t\u00edpus\u00e1t a k\u00f6vetkez\u0151k\u00e9pp:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">long szam = 3000000000L;<\/pre>\n<p>A le\u00edrt fix \u00e9rt\u00e9keket (nem csak ezeket, \u00e1ltal\u00e1ban a le\u00edrt fix \u00e9rt\u00e9keket) liter\u00e1lnak nevezz\u00fck. Ez a long t\u00edpus liter\u00e1lja. K\u00f6z\u00e9piskol\u00e1ban ekkora sz\u00e1mokkal nem dolgozunk, de j\u00f3 ha tudsz err\u0151l. \u00c9rdekes m\u00f3don a Java a 10L helyett a 10l liter\u00e1lt is elfogadja, holott alaphelyzetben a kis \u00e9s nagybet\u0171k k\u00f6z\u00f6tt k\u00fcl\u00f6nbs\u00e9get tesz.<\/p>\n<p>A v\u00e1ltoz\u00f3k, mint adott m\u00e9ret\u0171 t\u00e1rol\u00f3k term\u00e9szetesen csak a nekik megfelel\u0151 m\u00e9ret\u0171 sz\u00e1mokat k\u00e9pesek t\u00e1rolni. A nagyobb m\u00e9ret\u0171 t\u00e1rol\u00f3kba elhelyezhetj\u00fck egy kisebb m\u00e9ret\u0171 v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t, de ford\u00edtva ez nem fordulhat el\u0151, mert m\u00e1r ford\u00edt\u00e1si hib\u00e1val figyelmeztet a rendszer:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint i = 10;\r\nshort s = i;\r\n<\/pre>\n<p>\u00d6sszefoglalva teh\u00e1t az eg\u00e9sz sz\u00e1mokat:<\/p>\n<ul>\n<li>n\u00e9gyf\u00e9le m\u00e9ret\u0171 t\u00edpusa l\u00e9tezik<\/li>\n<li>nagyobb m\u00e9ret\u0171 t\u00edpusba be lehet tenni a kisebbet, ford\u00edtva nem<\/li>\n<li>a sz\u00e1mokkal megadott liter\u00e1l int t\u00edpus\u00fa, ha long t\u00edpust szeretn\u00e9l akkor 10L<\/li>\n<\/ul>\n<p>A lebeg\u0151pontos sz\u00e1mok eset\u00e9n is hasonl\u00f3 a helyzet. Itt a jelz\u00e9s n\u00e9lk\u00fcli liter\u00e1l alaphelyzetben double t\u00edpust jelent: 10.0 Ha azonban mindenk\u00e9ppen float t\u00edpust szeretn\u00e9nk, akkor a 10F vagy 10f liter\u00e1l haszn\u00e1latos. Itt is ford\u00edt\u00e1si hib\u00e1t ad, ha a nagyobb m\u00e9retet a kisebb m\u00e9ret\u0171ben szeretn\u00e9nk elhelyezni:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\ndouble d = 10.0;\r\nfloat f = d;\r\n<\/pre>\n<p>Tizedesvessz\u0151 helyett tizedes pontot haszn\u00e1lunk, valamit nem k\u00f6telez\u0151 ezt sem megadni ebben az esetben:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\ndouble d = 10D;\r\nfloat f = 10F;\r\n<\/pre>\n<p>Itt l\u00e1tsz\u00f3lag eg\u00e9sz sz\u00e1mot adunk kezd\u0151\u00e9rt\u00e9knek, de a 10D liter\u00e1l miatt ez a 10.0 lesz val\u00f3j\u00e1ban, vagy float t\u00edpusn\u00e1l hasonl\u00f3an csak kisebb m\u00e9retben. Float t\u00edpus \u00e9rt\u00e9kmegad\u00e1s\u00e1n\u00e1l viszont a liter\u00e1ln\u00e1l k\u00f6telez\u0151 ezt a form\u00e1t haszn\u00e1lni, mivel az F elhagy\u00e1sakor a sz\u00e1mot alapb\u00f3l double m\u00e9ret\u0171k\u00e9nt kezeln\u00e9 a rendszer, ami viszont a float-ba nem f\u00e9r bele. Ez a p\u00e9lda ezt a hib\u00e1s haszn\u00e1latot mutatja meg a j\u00f3 megold\u00e1ssal egy\u00fctt:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nfloat f = 10.3;  \/\/ hib\u00e1s!\r\nfloat f = 10.3F; \/\/ helyes\r\n<\/pre>\n<h4>K\u00f6vetkez\u0151 lecke: <a title=\"Java programoz\u00e1s 4. \u2013 Ki\u00edrat\u00e1s alapjai\" href=\"http:\/\/www.webotlet.hu\/?p=1374\">Ki\u00edrat\u00e1s alapjai<\/a><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>V\u00e1ltoz\u00f3k, avagy dobozok minden esetre Ismerkedj\u00fcnk meg a v\u00e1ltoz\u00f3kkal. A v\u00e1ltoz\u00f3knak alapvet\u0151en k\u00e9t t\u00edpus\u00e1t k\u00fcl\u00f6nb\u00f6ztetj\u00fck meg: primit\u00edv \u00e9s referencia. A referencia t\u00edpus\u00fa v\u00e1ltoz\u00f3k nem egy egyszer\u0171 \u00e9rt\u00e9re mutatnak, hanem egy \u00f6sszetettebb adatszerkezetre, maga a v\u00e1ltoz\u00f3 csak egy hivatkoz\u00e1s az adatszerkezet <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=80\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s 3. &#8211; V\u00e1ltoz\u00f3k<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[99],"tags":[],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-java-alap-leckek"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=80"}],"version-history":[{"count":28,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":2844,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions\/2844"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}