Hirdetés
- Lassan állítjuk a fát, és a hardverek is be vannak csomagolva
- Klasszikus kínai festmények ihlették a Colorful legfrissebb memóriáinak külsejét
- Ultrakompakt Key E SSD-vel jelentkezett a Silicon Power
- Mesterséges intelligenciára kihegyezett mini PC jött az ASUS műhelyéből
- ASUS blog: ExpertBook P5 notebook, a munkagép
- Házimozi belépő szinten
- Dell notebook topic
- VR topik (Oculus Rift, stb.)
- AMD Navi Radeon™ RX 7xxx sorozat
- ASUS blog: ExpertBook P5 notebook, a munkagép
- Milyen egeret válasszak?
- OLED TV topic
- Milyen videókártyát?
- Lassan állítjuk a fát, és a hardverek is be vannak csomagolva
- Fejhallgató erősítő és DAC topik
Új hozzászólás Aktív témák
-
loszerafin
senior tag
válasz loszerafin #1250 üzenetére
Help->Check for Updates->Install JIndent
-
loszerafin
senior tag
válasz loszerafin #1239 üzenetére
Közben találtam pár okot, amiért egyébként se működne a dolog:
Tomcat 5.5 nem kompatibilis java ee 5-tel, szóval 1.4-gyel kellene próbálnom vagy tomcat 6-tal.Feltettem Windowsra a Tomcat5.5-öt, hátha könnyebb lesz.
A NetBEans 6-ban meg felvettem szervernek a Tomcat-et, ez látszólag meg is történt,
de mikor elkezdek egy Enterprise projectet, nem tudom szervernek kiválasztani a Tomcat5.5-öt, csak a glassfish-t. Pedig ha "Add"-dal próbálok hozzáadni, látszik, hogy a windowsos Tomcat fel van véve a szerverek közé.A Tomcat bin-jébe belemásoltam a *.bat állományokat, úgyhogy ez nem lehet a probléma, meg működik is a tomcat, kipróbáltam. Igaz, áttettem 8180-as portra, hogy ne zavarja a GlassFish-t.
-
Muton
addikt
válasz loszerafin #1240 üzenetére
telepítve van az 1.6-os java, van is jar.exe-m (c:\pro..\java\jdk1.6.0_05\bin. jar.exe), csak nem használja
hol lehet a beállítani a path-t?Muton#2316 - $z@r a drop >_<
-
Muton
addikt
-
VinoRosso
veterán
válasz loszerafin #1220 üzenetére
hmm hát régen tudtam makaózni, de nekem már újra megtanulni a játékot és leprogramozni túl bonyis lenne. De van olyan atarsolyomban amit tok, és szerintem még nem csinálták meg, mert kevesen ismerik. Azért kösz a tippet.
-
VinoRosso
veterán
válasz loszerafin #1217 üzenetére
na ezek már jók lesznek. Kár hogy az első postba lévő linkekeket nem lehet elérni Mind1 kösz a segítséget, ha majd a négyszögletű kerek erdő felé járok meghálálom!
-
VinoRosso
veterán
válasz loszerafin #1215 üzenetére
bakker nem én modtam hanem a tanár
-
VinoRosso
veterán
válasz loszerafin #1213 üzenetére
egyetértek veled, de gondoltam igy jobb, mint tapasztalat nélkül belevágni a keresésbe. Biztos nem 1 oolyan ember van, aki valahogy megtanulta, és ennek egy része talán ismer valami könyvet, amit tud ajánlani. Pl Javaból én is tudnék ajánlani bevezető könyvet, amiből jól meg lehet tanulni. Jah valami kártyajáték lesz amugy a dologból, mert többre nem fogja futni az időmből. Csak valami olyat kéne kitalálni, amit még nem csináltak meg.
-
VinoRosso
veterán
válasz loszerafin #1211 üzenetére
semmi baj nincs ezzel, ha gugliba akarok keresni akkor neki jajjgatok. Nekem olyasvalakinek a tanácsa kéna, aki vágja az ME-t és tisztában va vele milyen tankönyvek vannak( ha vannak egyetalán ), és hogy melyiket érdemes kézbe venni. De azért köszi, már ez is több annál amire az órán jutottam.
mod: Ja és azt még meg kell emlitenem hogy MIDP 1.0 és CLDC 1.0-ás apival toljuk, szal ha lehet akkor valami ősirégi forrás leggyen, ahogy látom itt MIDP 2.0 van, az meg nem jó mert abba már van ey csomó újítás( pl MIDP 1.0 -ba nics lebegőpontos tipus mások a memóriakorlátok stb.. )
lehet még meg éne kérdeznem Mikkamakkát vagy Dömdödömöt
[ Szerkesztve ]
-
Dare2Live
félisten
válasz loszerafin #1201 üzenetére
Tudnál adni pár linket, hogy te mit/miket ajánlasz?
btw azthiszem válaszoltama kérdésére a java + programnévvel.
don't look up, don't look up, don't look up, don't look up, don't look up, don't look up, don't look up...
-
Sianis
addikt
válasz loszerafin #1193 üzenetére
String tömb tud utazni XML-ben?
Sianis
-
Sianis
addikt
válasz loszerafin #1173 üzenetére
Már megjelent a stabil Netbeans 6.0.
Sianis
-
Peetry
senior tag
válasz loszerafin #1173 üzenetére
ok de a kérdés jbuilder 2007-re vonatkozott.
-
veterán
válasz loszerafin #1169 üzenetére
ezen még azért kell heggeszteni hogy működjön, de legalább az algoritmus megvan
- Árad -
-
fLeSs
nagyúr
válasz loszerafin #1159 üzenetére
Még nem, de ha már belinkelted akkor átfutom. Köszi.
"Consider if you change your perspective about life, you have changed your experience of life."
-
fLeSs
nagyúr
válasz loszerafin #1157 üzenetére
Miért, szervereknél mást kéne használni?
"Consider if you change your perspective about life, you have changed your experience of life."
-
fLeSs
nagyúr
válasz loszerafin #1155 üzenetére
Értem amit írsz.
Nem tudok róla, hogy lenne külön Inteles és AMD-s Java, legalábbis a Sun oldalán nem találtam, csak egy fajtát.
Namost én nem JVM-eket akarok tesztelni, hanem procikat. De ezekszerint ennek csak akkor van értelme, ha többféle JVM-et használok? Maradjunk csak egynél. Így is millió tesztet kell még megnézni procinként.
Melyik a legelterjedtebb? Gondolom a Sun-é?...[ Szerkesztve ]
"Consider if you change your perspective about life, you have changed your experience of life."
-
kalló
aktív tag
-
Alvin_ti4200
félisten
válasz loszerafin #1139 üzenetére
ó már túl vagyok ezen a részen, megoldottam az időzítést is Timer és TimerTask nélkül Most írom az RMS részt, hogy tárolni és megjeleníteni is tudjam a HighScore-okat
-
Alvin_ti4200
félisten
válasz loszerafin #1137 üzenetére
nem titkos, kedden délután már elárulhatom, akkor már túl leszek a bemutatásán és a leadásán Konzultáltam ma a szakirány tanárommal és azt javasolta, hogy bonstam ketté a render() metódust, mégpedig rajzolós és billentyűzetelemzős részre. Módosítsam ezek alapján a Midletben a szál run() metódusát úgy, hogy először billvizsgálatot csinál, aztán vár valamennyit, aztán egy for ciklusba tegyem bele a rajzolós metódust és ehhez mérten igazítsam mennyi ideig sleepeljen a thread. Tehát pl. 1 mp-es képváltásnál thread.sleep(50) és ciklusváltozó 0-19. Most ezt fogom megpróbálni megcsinálni, remélem sikerrel járok és utána már "csak" az RMS (RecodStore) rész van hátra az eredmények mentéséhez és kiírásához (HighScore).
-
Alvin_ti4200
félisten
válasz loszerafin #1135 üzenetére
megcsináltam az alábbi módon (remélem jól értelmeztem a mondani valódat)
int[] tomb1={25,85,145,25,85,145,25,85,145};
int[] tomb2={50,50,50,110,110,110,170,170,170};
int[] gombtomb={512,2,1024,4,256,32,2048,64,4096};
Random rnd=new Random();
int veletlen=rnd.nextInt(8);
dx=tomb1[veletlen];
dy=tomb2[veletlen];
sprite.next(dx,dy,veletlen);
lm.paint(g,0,0);
flushGraphics();
int keyStates=getKeyStates();
if (keyStates==gombtomb[veletlen]){
pontszam++;
}
else{
if(keyStates!=0){
pontszam=(pontszam)-1;
}
}Apró szépséghiba, hogy az időzítések össze-visszasága miatt a jó billentyűleütéseket is néha rossznak veszi és fordítva, illetve valamiért a 2,4,5,6,8 gombok értéke nulla Pedig tudomásom szerint azok felveszik a LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED, DOWN_PRESSED és FIRE_PRESSED értékeit is. A gombtomb[]-ben a gombok sorrendjében tároltam le a koordinátákat, tehát az index maga a gomb száma. Lehet az a gond, hogy a paint és/vagy flushgraphics után tettem a feltételeket?
[ Szerkesztve ]
-
loszerafin
senior tag
válasz loszerafin #1108 üzenetére
Egyébként az a "mellékhatása" az algoritmusnak, hogy a kihúzott számokat nagyság szerint
rendezve írja ki. -
loszerafin
senior tag
válasz loszerafin #1107 üzenetére
Itt a Java kód:
Csak azért írom egy sorba, hogy ha vki gondolkodni akar, ne lássa rögtön a megoldást
/* */ int i=95; int x=5; while (i>0 && x>0) { if (Math.random()*i<=x) { System.out.println(i); x--; } i--; }[ Szerkesztve ]
-
jeri
tag
válasz loszerafin #844 üzenetére
C és társai érték szerint
meg létezik:címszerint,eredmény-érték szerint,visszatérési érték szerint. -
almi
senior tag
válasz loszerafin #922 üzenetére
Köszönöm szépen, hátha segít valamit..
-
Fisha
őstag
válasz loszerafin #917 üzenetére
Hat igen, en pont ezek miatt a dolgok miatt, vettem ki a szotarambol.
-
shev7
veterán
válasz loszerafin #917 üzenetére
ha jol tudom a switch case szerkezet egy goto-nak fele meg. Ezert van az, hogy nem lehet felsorolni a case utan tobb erteket, mivel akkor nem stimmelne a label. Es ezert van az, hogy kell a break, mert goto utan a kovetkezo sorban folytatod. Persze biztos meg lehetett volna oldani maskepp, de az nagy valoszinuseggel lassabb lett volna.
mod: Ha megnezzuk a C# fele switch megvalositast, akkor az annyibol kezdo-baratabb, hogy muszaj kitenni a break-et, ezert nem is nezheted be a fall-through-t
[Szerkesztve]''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Fisha
őstag
válasz loszerafin #912 üzenetére
Megmondom oszinten nekem a switch-case eleve egy nyelvidegen dolog. Mar leirva is rosszul nez ki.
-
shev7
veterán
válasz loszerafin #909 üzenetére
hat mondjuk erre kezenfekvo valasz az, hogy egyreszt nem egyertelmu mikor egyezik meg ket StringBuilder objektum (marmint tobbfele megkozelites is elkepzelheto), illetve, hogy nagyon ritkan hasonlitasz ossze ket stringbuilder objektumot, ami sokkal inkabb elkepzelheto az az, hogy egy Stringhez hasonlitod.
De barmikor kiterjesztheted a StringBuildert, es akkor ugy mukodik az equals, ahogyan csak szeretned''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
robisz
senior tag
válasz loszerafin #906 üzenetére
A for ciklus általános szintaxisa:
for (kifejezés1; kifejezés2; kifejezés3) {
...
}
Tehát három tetszőleges kifejezést kell megadni (lehet üres kifejezés is).
Viszont a Java-ban nem tudsz egy kifejezéssel különböző típusú referenciákat
létrehozni, tehát az alábbi deklaráció nem csak a for ciklusban, hanem mindenhol hibás:
int i = 0, byte j = 0;
Pontosvesszővel elválasztva már jó de így már két kifejezésnek számít:
int i = 0; byte j=0;
Azonos típusú változóból viszont többet is létrehozhatsz egy deklarációval:
int i = 0, j=0;
Ezt tehát nyugodtan beírhatod a kifejezés1 helyére. -
Forest_roby
őstag
válasz loszerafin #898 üzenetére
Tudom, hogy én írtam későn! Nem hibáztattam senkit, maximum magamat.
Mindenesetre köszi ezeket a linkeket!-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
robisz
senior tag
válasz loszerafin #902 üzenetére
Ugyanezt el tudod érni a Logger-ból is, hiszen vannak loglevelek amiket be tudsz állítani
Pl. a kódba azt írod hogy:
log.debug(message);
Így a loglevel-t debug-ra állítva megjelenik az üzenet, de pl. info-ra állítva nem.
Az assert szintén debug-olásra használható, de nem logolásra!!
Arra találták ki, hogy olyan logikai állításokat helyez el a kódban, amelynek
az adott ponton teljesülnie kell. Ha mégsem akkor az kivált egy exception-t.
Amire Te használod, az ugyan működik, de nem szép mert nem erre találták ki. -
sekli
addikt
válasz loszerafin #892 üzenetére
loni meg nekem se sikerult... a lenyeget szerintem lattad egyebkent, marmint ami a grafikat illeti..., igazabol nem akartam nagyon belemenni, csak nekem azt tunt fol, hogy ha VisualBasic-ben irnek egy hasonlot (ahogy irtam is) es sokkal kevesebb eroforrast hasznal, a programozoja azt mondta, hogy a ''grafika'' itt az eroforrashasznalat, processzorido 90%-a..., a szimulacio, azert nem annyira komplex... a kerdesem igazabol arra iranyult, hogy a java ennyire lassu-e a megjelenitesben...? most kezdte el fejleszteni a fejleszto a 3D-s verziot, (az en modellem alapjan) es azt igeri, hogy a GPU rendereles miatt jobban fog futni..., ez egyebkent hiheto is... koszi, hogy foglalkoztal vele..., ahogy nezem mondjuk nem lettel fuggo...
-
shev7
veterán
válasz loszerafin #899 üzenetére
errol irnal kicsit bovebben? mit ertesz azon, hogy eltunik, ha keszen vagy?
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Forest_roby
őstag
válasz loszerafin #896 üzenetére
1órát késtél a válasszal!
Hogy mi nem megy?
Az idáig működő részeket se látom át (igazán)...
Innentől kezdve meg az egész gáz...
pl az adatmódosítást hogyan érzékeli a program(, vagy gombenyomásra update-eljen)?
az update megírása se igazán megy...
Nincsenek nagy problémáim, csak nem értem az egészet!
mod: de mostmár mindegy!
[Szerkesztve]-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D
-
hdanesz
őstag
válasz loszerafin #893 üzenetére
Köszi!
Az xp-ben már írtam,de nem válaszolt senki.
Megpróbálom a firefox-ost. -
sekli
addikt
válasz loszerafin #874 üzenetére
nem en szeretnek javitani, hanem, erdekel a velemenyetek, hogy normalis-e, hogy egy ilyen program ennyit terhel..., a keszito szerint 90%-ot a ''grafika'' teszi ki...
[link] az oldal kozepe fele van egy tablazat: Tacticat Sailing Fields ott vannak a gombok, hogy S1, L1, t4... , arra kell kattintani, hogy elinduljon... -
Drizzt
nagyúr
válasz loszerafin #877 üzenetére
Az volt a para, hogy a htm file bírálta felül. :S
Na más egyszerűbb kérdésem van. Appletet kell csinálni, írtam egy filet IntervalException.java néven, ahol van. Az importálásához kell még valami, hogy lássa? Elég idegesítő, hogy Unixon kell fejleszteni(ssh loginnal), így elég nehézkes, míg valamit kipróbálgtok...I am having fun staying poor.
-
robisz
senior tag
válasz loszerafin #875 üzenetére
Szia!
Logolásra a java.util.Logger osztály a megoldás (ez nem túl régen
került a Java-ba), vagy pedig a log4j csomag amit külön kell letölteni
és talán még az előbbinél is többen használják. Tudásban kb. ugyanaz a kettő. -
Fisha
őstag
válasz loszerafin #865 üzenetére
Velemenyem szerint elso korben jdbc, servletek jsp-k, aztan egy tetszoleges mvc framework. Persze ha az a cel, hogy a konnyen el tudj helyezkedni. Ilyen temakorben keresnek a legtobb embert. Aztan johetnek ejb-k egyebek.
Egyebkent maga az, hogy j2ee annyira tag fogalmkor, hogy nem igazan lehet azt mondani, hogy akkor en most j2ee-t tanulok. -
robisz
senior tag
válasz loszerafin #865 üzenetére
Ha később komolyan akarsz Javazni, esetleg ilyen téren szeretnél dolgozni,
akkor egyet ajánlok: J2EE.
Ha a ''sima'' Java már elég jól megy, akkor mindenképp érdemes megismerkedni vele.
Az UML és a Design Pattern-ek ismerete mindig (de J2EE-hez különösen) jól jöhet! -
robisz
senior tag
válasz loszerafin #858 üzenetére
Ha jól értem a JVM-ek működését az olvasmányaim alapján, akkor nincs garantálva, hogy időosztásosan működjenek a JVM-ek. Azaz, ha azt akarom, hogy a többi szál is labdába rúghasson, kell sleep()-et tennem a hosszan futó ciklusaimba.
Igazából a yield() metódust találták ki megoldásként erre problémára, de sajnos
kínszenvedés a használata mert nagyon nem egyértelmű mikor kell meghívni.
(Valami olyasmit lehet elképzelni, hogy pörgetsz egy számlálót a ciklusodban és
minden 10-edik futáskor meghívod a yield()-et vagy valami hasonló)
Szerencsére azonban ez a probléma a ''való életben'' elég ritkán fordul elő,
hisz az ember általában olyan szálakat ír amelyek egyébként is blokkolnak.
Pl. mert egy socket-ről akarsz olvasni vagy vársz egy beérkező üzenetre... stb. -
shev7
veterán
válasz loszerafin #856 üzenetére
mivel a program alapesetben mast is csinal, nem csak a lockolt teruleten tolti az idejet ez nem szokott problemat okozni, de a te peldadban tenyleg jol jon egy kis sleep.
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
loszerafin
senior tag
válasz loszerafin #855 üzenetére
Még annyit hozzáteszek azok kedvéért, akik később olvassák ezt a topicot:
Azt hiszem nem szerencsés egy több szálon futó programban olyan ciklust futtatni, amiben nincs Thread.sleep(), mert így nem hagyunk időt másik szálaknak a bekapcsolódásra, ráadásul zabálja a processzort, szóval
valami ilyesmi jobb, mint ami a fenti kódjaimban látható:
while(!end){
synchronized (lock) {
cnt += 1;
cnt -= 1;
};
try {
Thread.sleep(10);
} catch (InterruptedException e) {}
} -
shev7
veterán
válasz loszerafin #851 üzenetére
nezd meg ezt:
class Main {
static int cnt = 0;
static boolean end = false;
static Object lock = new Object();
static class ModCounter extends Thread {
public void run() {
while(!end) {
synchronized (lock) {
cnt += 1;
System.out.println(cnt);
cnt -= 1;
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
ModCounter modc2 = new ModCounter();
modc.start();
modc2.start();
Thread.sleep(500);
end = true;
}
}
[Szerkesztve]''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Lortech
addikt
válasz loszerafin #849 üzenetére
Valóban, referencia típusnál is átmásolódik a hívó paraméter referenciája a hívott paraméterbe. De mivel ez egy referencia, azaz mindkettő rámutat majd ugyanarra az objektumra, ezért mellékhatásokkal jár, ha a lokál paraméterrel mutatott objektumot mdosítjuk. Maga a paraméterként átadott objektum értéke, referenciája valóban nem fog megváltozni. Viszont az előbb említett mellékhatás miatt célszerű megkülönböztetni a hagyományos érték szerinti paraméterátadástól. Mint ahogy a ''valódi'' referencia szerintit is meg kell különböztetni tőle, ahol nem a referencia adódik át, hanem magának a referencia típusú változónak a címe, így a hívott eljárásban egy és ugyanaz a változó, mint a hívás helyén.
Hogy hogy hívjuk, az már nekem mindegy, ha a sun simán érték szerintinek írja, ám legyen, nem ez a lényeg, hanem hogy értsük a működését. C#-ban egyébként létezik mind a három általam említett paraméterátadás, dehát ez nem az a topik.Thank you to god for making me an atheist
-
Lortech
addikt
válasz loszerafin #844 üzenetére
Kérdés az, hogy mit tekintesz értéknek.
Én azt mondtam volna, amit megadtak megoldásnak. De szó szerint véve elfogadható az A is, mivel egy objektum értéke a referenciája. (szintaktikailag)
Ugyanakkor ha azt mondod, hogy referencia szerinti átadás van objektumoknál, szerintem akkor sem mondasz hülyeséget (sőt), mivel az az érték ami átadódik az egy referencia, így ugyanazt mondod, csak a referencia pontosabb megnevezés, bővebb jelentéssel bír, épp ezért ez utóbbit preferálom.Thank you to god for making me an atheist
-
shev7
veterán
válasz loszerafin #844 üzenetére
szerintem meg teljesen jol, es erthetoen van leirva, nem ertem mi a gond? Az ertek es a referencia szerinti atadas kozott az a leglenyegesebb kulonbseg, hogy az eredeti ertek megvaltozik-e. Ha objektumot adsz at, es megvaltoztatod egy parameteret, akkor az eredetinek is valtozni fog. Marpedig ekkor a parameteratadas nem lehet ertek szerinti
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
robisz
senior tag
válasz loszerafin #838 üzenetére
A Calendar osztály set metódusában a hónapok 0-tól kezdve számozódnak, míg az év és a nap természetesen 1-től indul
Igen ez tényleg furának nevezhető, de a Calendar osztály estében az előre definiált
static konstansokat (JANUARY, FEBRUARY stb...) illik használni, innentől kezdve
pedig édesmindegy hogy a január a háttérben 0 vagy 5000 -
robisz
senior tag
válasz loszerafin #833 üzenetére
Ugyanilyen ''logikával'' akár lehetne a string vége endIndex-17 -nél. Ekkor pl.
substring(0,17)-re kapnánk meg az első karakterét a stringnek.
Lehet hogy elsőre furcsának tünik, de azért van benne némi logika
Ha csíkokat rajzolsz a string karakterei közé így:
| H | e | l | l | o |
akkor a substring-nek azt kell megadni, hogy melyik két ''csík'' közötti részt
kéred (0-tól kezdve az indexeket).
További előny, hogy az endIndex és a startIndex különbsége így pont az
eredmény hossza lesz. Tehát így is hasznáhatod:
substring(startindex, startindex + 10)
Ami visszaadja a startindex-től kezdődő 10 hosszúságú stringet.
[Szerkesztve] -
Protezis
őstag
válasz loszerafin #833 üzenetére
Itt van meg par erdekes eszrevetel a Javaval kapcsolatban: [link]
-
shev7
veterán
válasz loszerafin #830 üzenetére
hat pedig eleg egyertelmu a mukodese:
''Returns a new string that is a substring of this string. The
substring begins at the specified <code>beginIndex</code> and
extends to the character at index <code>endIndex - 1</code>.
Thus the length of the substring is <code>endIndex-beginIndex</code>.''''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
robisz
senior tag
válasz loszerafin #827 üzenetére
A gyakorlatban ugyan ennek vajmi kevés jelentősége van, mert az Integer
érték egyenlőségét úgyis equals-al vizsgáljuk, de ez akkor is... meghökkentő -
robisz
senior tag
válasz loszerafin #823 üzenetére
false, false
Tipikus autoboxing kérdés, amit így is meg lehet fogalmazni:
while (i<=j && i>=j && i!=j) {
;
}
Hogyan deklaráljuk i-t és j-t hogy a fenti ciklus végtelen legyen? -
Lortech
addikt
válasz loszerafin #821 üzenetére
Referencia típusoknál mindig allokáció van.
Ha így érdekel a téma, ajánlom áttanulmányozásra az alábbi írást és a kommenteket : [link]Thank you to god for making me an atheist
-
loszerafin
senior tag
válasz loszerafin #808 üzenetére
A beszélgetéseteket olvasva rájöttem, hogy elég megnéznem a bytekódot:
class MoreInt {
public static void main(String[] args){
for (int i=0; i<2; i++){
int j = 10;
}
}
}
És a bytekód:
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iconst_2
4: if_icmpge 16
7: bipush 10
9: istore_2
10: iinc 1, 1
13: goto 2
16: return
}
A lokális változók számozva vannak, a j a kettes számú. A fordításkor ennek biztosít helyet a fordító, futáskor végig ezt a helyet használja.
[Szerkesztve] -
dantes
tag
válasz loszerafin #808 üzenetére
A {} blokkban deklarált változók csak a {} blokkon bellül érvényesek.
Vagyis az történik, hogy lefoglal az n számára tárterületet, majd felszabadítja, megint lefoglalja és megint felszabadítja.
De egy okos fordítóprogram ki is optimalizálhatja, és valójában nem csinál semmit.''Twenty years from now you will be more disappointed by the things that you didn't do than by the ones you did do.'' - Mark Twain
-
robisz
senior tag
válasz loszerafin #778 üzenetére
A SUNDAY, MONDAY stb.. olyanok mintha a Day osztály statikus field-jei lennének,
(a compiler azzá is alakítja őket a háttérben) ÉS egyúttal Day típusú objektumok.
A kettő korántsem zárja ki egymást!
Így már gondolom érthető a
Day day = Day.MONDAY;
írásmód, hiszen a Day osztály statikus field-jére hivatkozol, ami egy Day típusú
objektum. Pontosan ahogy te is leírtad.
Ha akarod írhatod így is:
Day day = MONDAY;
de akkor a statikus importot kell használnod:
import static Day.*;
és ezzel gyönyörűen visszakanyarodtunk a legelső kérdésedhez
[Szerkesztve] -
robisz
senior tag
válasz loszerafin #776 üzenetére
Pontosan így van
Az enum egy speciális osztály a Java-ban (ami egyébként a java.lang.Enum
leszármazottja lesz) a benne szereplő ''konstansok'' pedig sima objektumok.
Egyik nagy előnyük, hogy switch-ben is használhatóak. -
robisz
senior tag
válasz loszerafin #774 üzenetére
Egyedül az nem világos, hogy ki, mikor hívja meg a Day konstruktort
Ez is benne volt a válaszomban csak talán nem volt elég világos:
A MONDAY(''Monday'') sor az enum kódjában egyenértékű az általad leírt
konstruktorhívással. Olyan mintha statikus változót hoznál létre valahogy így:
Day MONDAY = new Day(''Monday'');
Tehát azzal hogy felsoroltad a 7 napot az enum-ban, egyúttal a konstruktor
is meghívódott mind a 7 alkalommal.
Kivülről nem tudsz új példányokat létrehozni az enum-ból, de nem is nagyon lenne értelme. -
robisz
senior tag
válasz loszerafin #772 üzenetére
Szia!
Az enum típusra úgy érdemes gondolni mint egy sima osztályra.
Annyi a különbség, hogy ebből az osztályból közvetlenül sosem hozunk
létre példányokat, csak az előre definiált ''konstansokat'' használhatjuk.
A példában tehát létrejön egy Day ''osztály'' és annak a 7 példánya (SUNDAY,
MONDAY, stb...)
Legegyszerűbb formában tehát az enum így nézne ki:
enum Day {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY;
}
Mint minden sima osztályban az enum-ban is írhatunk metódusokat, tárolhatunk
egyéb adatokat.
Alapból a toString() metódus a konstans nevével megegyező string-et ad vissza,
tehát a System.out.println(Day.MONDAY) eredménye ''MONDAY''.
A te példádban az enum-ban tárolunk egy dayname string-et is. Itt jön be
a képbe a konstruktor szerepe. Igaz te kivülről sosem hivod közvetlenül a
konstruktor-t, de a SUNDAY(''Sunday'') sor az enumban valójában egy konstruktor
hívást jelent, azaz a ''Sunday'' string eltárolodik a dayname változóba.
A toString metódust is felüldefiniálódik a te példádban, mégpedig úgy, hogy ezt a
dayname String-et adja vissza. Igy a System.out.println(Day.MONDAY) eredménye
''Monday'' lesz ''MONDAY'' helyett.
Azt hogy milyen adatokat tárolsz az enum-ben és milyen konstruktorokat írsz
te döntöd el, csak a konstansok felsorolásánal (SUNDAY, MONDAY stb) a megfelelő
számú és típusú paramétert kell átadni.
[Szerkesztve] -
robisz
senior tag
válasz loszerafin #769 üzenetére
Szia!
A static import viszonylag új dolog a Java-ban az 1.5-től kezdve jött képbe.
A hagyományos import arra jó, hogy a package név kiirása nélkül hivatkozhass
osztályokra. Ha például azt írod, hogy
import java.util.HashMap;
akkor a kódban simán HashMap-ként hivatkozhatsz a java.util.HashMap osztályra.
Az import java.lang.Math.*; értelmetlen, mivel az osztályon belüli dolgokat
nem lehet beimportálni a sima importtal.
A Math osztályra egyébként már eleve hivatkozhatsz rövid névvel, mivel az a java.lang package-ben van. Ez az egyetlen package amit soha nem kell beimportálni, mert mindig alapból be van importálva.
Az ''régi'' import esetén tehát a package név elhagyható, de nem
az osztálynév! Java 1.5 előtt tehát a PI konstansra úgy tudtál hivatkozni, hogy
Math.PI
Itt jön be a statikus import a képbe, mivel pont arra találták ki, hogy statikus
változók használatakor ne kelljen beirni az osztály nevét sem.
Ha tehát azt mondod, hogy
import static java.lang.Math.PI;
akkor attól kezdve sima PI-t irhatsz a kódban.
Az interfészek, osztályok importja között nincs különbség.
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest