- M0ng00se: Hardvert áruhitelre?
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- eBay-es kütyük kis pénzért
- Rap, Hip-hop 90'
- Brogyi: CTEK akkumulátor töltő és másolatai
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
shev7
veterán
válasz
loszerafin #899 üzenetére
errol irnal kicsit bovebben? mit ertesz azon, hogy eltunik, ha keszen vagy?
-
loszerafin
senior tag
válasz
Forest_roby #897 üzenetére
Sajnálom, hogy késtem 1 órát, de úgy érzem, ha 1 héttel ezelőtt írok, az is késésben lenne.
Amit javaslok:
Egy gyors Java alapok:
http://java.sun.com/docs/books/tutorial/
(Erre 1 hét elég lehet, ha nagyon nekifekszel, 3 nap /napi 4 óra alvással/)
Learning the Java language, Essential java classes, Collections, Deployment
Ezután JDBC:
http://java.sun.com/docs/books/tutorial/jdbc/index.html
Majd ez (bár ez egy monstrum, úgyhogy szelektálnod kell, viszont én nem ismerem a Javat eléggé, hogy ebben segítsek)
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/
És nem árt némi AJAX ismeret (szerintem):
http://www.w3schools.com/ajax/default.asp
Ehhez persze JavaScript, css és html tudás is kell, amit szintén megszerezhetsz a w3schools oldalain. -
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] -
loszerafin
senior tag
válasz
Forest_roby #894 üzenetére
És mi nem megy?
1. Server oldalon nem tudod módosítani az adatbázist? (SQL gondok/Java sql használat gondok/
2. Serverprogramod nem tudja elkapni az adatokat?
3. html Weboldaladból nem tudod elküldeni az adatokat? (form/ajax probléma)
4. Java appletből nem tudod elküldeni az adatokat a szerver felé?
Talán ezek segítenek:
1. [link]
3. [link]
3. [link]
[Szerkesztve] -
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. -
Forest_roby
őstag
HI!
Ma írok java server oldali programozásból - még csak a nagyon alapokból, de mivel én soha nem tanultam java-t, ez így egy kicsit nehéz lesz(, ha nem inkább lehetetlen), nem tudom minek vettem fel ez az órát- egy kis segítséget kérnék.
Van egy ablak, benne egy táblázat, és a cellákba egy adatbázisból tölti be az adatokat.
Ez idáig elvileg működik.
A feladat az lenne, hogy ha módosítok egy cella tartalmát, akkor az adatbázisban is módosuljon az adott cellához tartozó érték.
Ebben tudnátok segíteni?
( ha kell tudok küldeni programot, annak akit érdekel )
Előre is köszönöm!
Forest -
loszerafin
senior tag
Hát, én nem tudok vitorlázni és ezt a programot valószínűleg elindítani sem. De ha el is indítanám se tudnám, mit hogy állítsak be rajta.
Bejött egy kép, bal felső sarokban feltehetően egy szélzsák meg kriksz-krakszok a képernyőn, de sehol egy ellenfél, akit le lehetne lőni...
Ha most ehhez hozzáveszem, hogy mondjuk az emberek tudása a vitorlázásról (nagy átlagban) kb az enyémnek megfelelő szinten van és hogy az intelligenciám nem átlag alatti, akkor ez a fórum ennek a kérdésnek a megválaszolására nem alkalmas.
Miért nem írsz a játék fórumába?
A ''90%-ot a grafika teszi ki'' : ez sok minden lehet. A programkód 90%-a? a belefeccölt munka 90%-a? A futásidő 90%-a?
Ez egy szimulátor, és ha a hajókat tényleg a szél lökdösi, meg a vitorlákat lehet állítani (és még ki tudja mit) és többen is vagytok egyszerre (hálózatos a játék), korántsem gondolnám triviális feladatnak és még csak megbecsülni se tudom, milyen nehéz kiszámolni az egyes hajók adatait (pl. hely, irány, sebesség) és az algoritmus meddig fut.
Azt gondolom, próbáld ki egy gyengébb gépen, ha lassú, kérdezz a fejlesztőtől. -
Sziasztok!
A legutóbbi win xp automatikus frissítésem óta néhány weboldal nem jön be, a többi pedig nagyon lassan.
A javascript console ilyet produkál:
[link]
Van valakinek ötlete mi lehet a gond?és mi a megoldás?
Köszönöm! -
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... -
Louies
aktív tag
Sziasztok! HELP!
lenne egy kérésem vagy kérdésem.
egy programot kellene öszehozni nekem . teljesen egyszerü annak aki járt órára , de én nem járok be javara. Shell rendezést kellene csinálni, ugy, hogy mondjuk az elején megadok 5számot. és azt rendezi. Semmi extra. Pseudoban már megcsináltam Cben is , de java ban nem megy. ha ebben tudna valaii segíteni esetleg.? -
Drizzt
nagyúr
Kösz, s egy másik kérdés: azt szeretném, hogy egy exceptiont dobjak, ha egy sztring nem ''V'', vagy ''D'', de ha egy if utáni feltétel részbe írnám őket or-ral összekapcsolva, akkor mindig azt mondja, hogy már korábban zárójelet vár. Mi lehet ilyenkor a megoldás? Néezegettm ezt-azt, de nem lettem sokkal okosabb... :S
-
Drizzt
nagyúr
Akkor a kérdés pontosan. Szóval van egy java fájlom, ami applet, s a htm megjeleníti. Kéne nekem egy exception leszármazott osztály intervalexception néven. Ha simán belerakom az eredeti javaba public class intervalexception extends exception, akkor azt írja ki, hogy ezt egy másik fájlban kellene definiálni. Na ekkor mit csináljak?
-
robisz
senior tag
Az volt a para, hogy a htm file bírálta felül.
Így kell működnie, html-ből lehet beállítani az applet méretét.
A másik kérdésed nem pontosan értem, ha nem ugyabban a package-ben vannak
akkor kell importálni.
Ha a lefordított class-t nem találja a Java akkor meg fel kell venni a classpath-ba,
vagy applet esetén úgyis egy jar-ba kell csomagolni őket. -
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... -
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ő. -
loszerafin
senior tag
Én eléggé új vagyok a Javában, de a show az deprecated. setVisible(true) a menő 1.5 óta.
A setMinimumSize() beleszólhat a dologba.
Nálam awt-tal megy:
import java.awt.*;
import java.awt.event.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.*;
import java.util.*;
[...]
class MyFrame extends Frame implements Runnable{
[...]
MyFrame(){
[...]
setSize(100,100);
[...]
setVisible(true);
[...]
}
[...]
}
[Szerkesztve] -
Drizzt
nagyúr
Van egy frame-m, hiába csinálok rajta setSize-ot, nem változik meg a mérete, úgy rémlik, hogy még valami extra kéne ezek után a showon kívül, nem?
-
loszerafin
senior tag
debug üzenetek
Gondoltam jó lenne pár debug üzenet, és erre kézenfekvő az assert-et használni, úgyhogy csináltam egy Log osztályt:
class Log {
static int Level = 6;
public static boolean log(int level, String s){
if (level>=Level) System.out.println(s);
return(true);
}
public static boolean dlog(int level, String s){
if (level>=Level) {
new Throwable().printStackTrace();
log(level,s);
};
return(true);
}
}
Ezt a programban így lehet használni:
assert Log.log(5,''itt vagyok'');
assert Log.dlog(7,''itt vagyok'');
A log csak az üzenetet írja ki, a dlog a stack-et is.
Van erre valami bejáratott út, vagy megfelelő ez?
Előre is köszönöm
KL -
-
Fisha
őstag
Ja meg az lemaradt, hogy ha kerdesed vana fenti temakorokben, akkor szivesen segitek. A topicot nem mindig olvasom, szoval ha surgos, akkor privi.
-
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. -
Weier
csendes tag
Sziasztok!
Keresek valakit JDBC munkára.
Max pár óra alatt megcsinálható és nem ingyen kérem!
Akit érdekel, az írjon magánban. Sürgős! -
loszerafin
senior tag
Köszönöm
KL -
-
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! -
loszerafin
senior tag
Sziasztok,
Kb. már tisztában vagyok a Java alapokkal, szerintetek hogyan tovább, mit tanuljak?
UML-t látom hasznosnak meg a Design Pattern-eket. Vagy esetleg mást?
Gondolkodtam a konkurrens programozás elméletén, ami jól jöhet a szálak írásakor, de ez talán csak később kellhet.
Azután itt van a unit tesztelés, javadoc, i18n.
Persze, gyakorlatot kellene szereznem, de nem akarok rossz (=gyenge minőségű) programokat írni, gyakorlás képpen sem.
Előre is köszönöm
KL -
sekli
addikt
helo topic,
Ezen az oldalon ([link]) van egy jatekocska, amit javaban irtak, na amikor ezt megtalaltam, akkor gondoltam, hogy de jo egyszeru, biztos jo kicsi a gepigenye, de aztan, hogy task managerban nezem, a procit 30-50% korul hasznalja (3.0Ghz P4), es 30mega ramot eszik... hat kicsit csalodott voltam, mert azt hittem, hogy egy P1-en is elfut majd... ez normalis egyebkent, hogy egy ilyen alkalmazas, amiben lenyegeben csak nehany pontbol allo sokszogek maszkalnak ide-oda ilyen gepigenyes...? persze, lehet, hogy rosszul van megirva, azzal nem tudok mit csinalni, egyreszt mert egyaltalan nem ismerem a java-t, masreszt nem en csinaltam...Esetleg valahogy mashogy futtatva lehet csokkenteni az etvagyat? most JRE 1.6-ot hasznalok...., (a forumaban a program keszitoje ugyan azt irta az 1.6 megjelenesekor, hogy ezzel jobb, mint 1.5-tel volt...)
-
Sianis
addikt
Sziasztok!
Hogyan tudom megoldani, hogy egy osztályon belül két különböző paraméterszignatúrájú konstruktor közül az egyik meghívja a másikat?
Sianis -
loszerafin
senior tag
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
Köszönöm, igaz, megnéztem még 1x. Azt írja a könyv, hogy a yield() átteszi a jelenleg futó szál állapotát runnable-be, ezáltal a scheduler választhat egy új szálat, amit futtatni fog.
Azonban nincs előírva, hogy a scheduler másik szálat válasszon, ezért lehet, hogy ugyanazt fogja futtatni, azaz előfordulhat, hogy a yield() tulajdonképpen nem csinált semmit.
Kicsit meg lehet spékelni az egészet a szálak prioritásával, de mivel a prioritást meg nem kötelező megvalósítania a JVM-eknek, kár a gőzért... -
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. -
loszerafin
senior tag
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. Vagy tévedek?
Tehát nem a lock az érdekes itt, hanem hogy egy szál nem engedi futni a többit, mert nincs benne sleep és sose áll le. -
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.
-
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) {}
} -
loszerafin
senior tag
Köszönöm, valóban jó megoldás egy lock objektum létrehozása:
class Counter3 {
static int cnt = 0;
static boolean end = false;
static Object lock = new Object();
static class ModCounter implements Runnable {
public void run() {
while(!end){
synchronized (lock) {
cnt += 1;
cnt -= 1;
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
Thread t1 = new Thread(modc);
t1.start();
for(int i=0; i<10; i++){
Thread.sleep(500);
synchronized (lock) {
System.out.println(cnt);
};
};
end = true;
t1.join();
System.out.println(cnt);
}
} -
loszerafin
senior tag
Köszönöm, hogy foglalkozol a témával.
Közben kitaláltam egy megoldást (egy oldallal tovább kellett olvasnom a könyvben a wait()-ig)
class Counter2 {
static int cnt = 0;
static boolean end = false;
static class ModCounter implements Runnable {
public void run() {
while(!end){
synchronized (this) {
cnt += 1;
cnt -= 1;
notify();
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
Thread t1 = new Thread(modc);
t1.start();
for(int i=0; i<10; i++){
Thread.sleep(500);
synchronized (modc) {
modc.wait();
System.out.println(cnt);
};
};
end = true;
t1.join();
System.out.println(cnt);
}
} -
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] -
Eastman
addikt
Most találtam, ha valakit érdekel egy állás: [link]
mail: job@virgosystems.hu -
loszerafin
senior tag
Próbálkozom a thread-ekkel és elakadtam.
a run() metódusom szinkronizált, egy ciklusban a cnt mezőhöz hozzáad egyet, majd ki is von.
A main()-ben 500 msec-enként kiírom a cnt értékét. A kimenet hol 0, hol egy. Nyilván, a main() metódust futtató szál println-ja ''beüt'' a cnt-hez hozzáadó és abból kivonó utasítás közé. Hogy lehet ezt elkerülni?
class Counter1 {
static int cnt = 0;
static boolean end = false;
static class ModCounter implements Runnable {
public synchronized void run() {
while(!end){
cnt += 1;
cnt -= 1;
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
Thread t1 = new Thread(modc);
t1.start();
for(int i=0; i<10; i++){
System.out.println(cnt);
Thread.sleep(500);
};
end = true;
t1.join();
System.out.println(cnt);
}
}
Kimenet:
0
1
1
0
0
1
1
1
0
1
0
Szeretném, ha csupa 0 jelenne meg.
Próbáltam a kiírást szinkronizálni:
synchronized (Counter1.class) {
System.out.println(cnt);
};
De semmi változás.
Előre is köszönöm
KL -
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. -
loszerafin
senior tag
[...]hanem a referencia kerul atadasra, pont ezert hivjuk referencia szerinti atadasnak...
Nem, nem. A ''referencia szerinti paraméterátadás'' fogalma független a Java-tól, független az objektumoktól, sőt független az objektum orientált programozástól.
Egyrészt:
Az érték szerinti paraméterátadás a következő:
A hívó fél által átadott dologról (paraméter) egy másolat készül. Ezt a másolatot használja a hívott fél. Azaz a hívott fél hiába módosítja az argumentumát, az nincs kihatással a paraméterre, a hívó fél a módosításról nem vesz tudomást, hiszen a hívott eljárás csak egy másolatot módosít.
A referencia szerinti paraméterátadásnál ha a hívott fél módosítja a megkapott dolgot,
akkor a hívó félnél is megváltozik a dolog.
Az, hogy ezt hogy oldják meg az egyes nyelvek, vagy megvalósítják-e egyáltalán, az most nem érdekes.
Javában paraméterként objektum referenciát megadva a hívott eljárás egy másolatot kap a referenciáról, azaz azt hiába változtatja meg (nem az objektumot, hanem a referenciát), ebből a hívó fél semmit sem érzékel. Tehát az objektum referencia is érték szerint adódik át a hívott metódusnak.
Pl. Nyugodtan lehet null-ra állítani a metódusban a megkapott objektum referenciát, attól még nem vész el az objektumunk, csak eggyel kevesebb referenciája lesz, és minimum egy marad, amit a hívó fél használ. -
loszerafin
senior tag
Teljesen érthetően van leírva a Sybex könyvben és teljesen rosszul.
A sun weboldalán van az igazság, ahol szó szerint ez van:
------------------
Primitive arguments, such as an int or a double, are passed into methods by value.
[....]
Reference data type parameters, such as objects, are also passed into methods by value.
------------------
Mivel tudtommal nincs más típusú paraméter a Java-ban, csak primitív és objektum referencia, ezért nem is létezhet más fajta paraméterátadás, mint érték szerinti.
Itt ugyan van egy kis pontatlanság, mikor azt írja ''such as objects'', hiszen objektumot _nem_ lehet átadni paraméterként, de a hétköznapi szóhasználatban elfogadható ez a pongyolaság. (más kérdés, hogy szerintem a Sun weboldalán elfogadhatatlan, de ez most nem fontos) -
shev7
veterán
kifutottam az idobol:
''Ha ''objektumot adunk át paraméterként'' akkor nem is az objektum a paraméter, hanem az objektum referencia, ami már ''by value'' kerül a metódusba.''
itt a lenyeg, mivel nem az objektum, hanem a referencia kerul atadasra, pont ezert hivjuk referencia szerinti atadasnak... -
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. -
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
-
loszerafin
senior tag
Ezt olvastam egy Sybex könyvben:
--------------------
Which of the following statements accurately describes how variables are passed to methods?
A. Arguments are always passed by value.
B. Arguments are always passed by reference.
C. Arguments that are primitive type are passed by value.
D. Arguments that are passed with the & operator are passed by reference.
--------------------
Boldogan bejelöltem az A-t, majd megnéztem a megoldást:
C. Arguments are not always passed only by reference or only by value. It depends on the
argument itself, and primitives are always passed by value. Java does not use the & operator
to denote “pass by reference” as is done in the C programming language. See Chapter 1 for
more information.
Én azt gondolom, hogy mindig értékmásolás történik paraméterátadásnál, függetlenül attól, hogy objektum referencia vagy primitív típusú az átadni kívánt paraméter.
Ha ''objektumot adunk át paraméterként'' akkor nem is az objektum a paraméter, hanem az objektum referencia, ami már ''by value'' kerül a metódusba.
Mit gondoltok?
Közben megnéztem a Sun site-ján (nyilván ott olvastam ezt) és bizony így van
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html
Úgyhogy ezt a Sybex könyvet el kell felejteni... -
loszerafin
senior tag
Ha valaki szereti a fejtörőket:
class Proba {
public static void main(String[] args){
int i1 = 10;
int i2 = 10;
Integer I1 = 10;
Integer I2 = 10;
Integer I3 = 1000;
Integer I4 = 1000;
Integer I5 = new Integer(10);
Integer I6 = new Integer(10);
Integer I7 = new Integer(1000);
Integer I8 = new Integer(1000);
String s1 = ''a'';
String s2 = ''a'';
String s3 = s1;
String s4 = new String(''a'');
String s5 = new String(''a'');
String s6 = s4;
String s7 = new String(s1);
System.out.println(1 + '':'' + (i1 == i2));
System.out.println(2 + '':'' + (I1 == I2));
System.out.println(3 + '':'' + (i1 == I1));
System.out.println(4 + '':'' + (I3 == I4));
System.out.println(5 + '':'' + (I5 == I6));
System.out.println(6 + '':'' + (I7 == I8));
System.out.println(7 + '':'' + (I3 == I7));
System.out.println(8 + '':'' + (I2 == I5));
System.out.println(9 + '':'' + (s1 == s2));
System.out.println(10+ '':'' + (s3 == s1));
System.out.println(11+ '':'' + (s3 == s2));
System.out.println(12+ '':'' + (s4 == s5));
System.out.println(13+ '':'' + (s6 == s4));
System.out.println(14+ '':'' + (s6 == s1));
System.out.println(15+ '':'' + (s6 == s5));
System.out.println(16+ '':'' + (s7 == s1));
System.out.println(17+ '':'' + (s7 == s4));
}
}
Mit ír ki a program? (persze, fejben érdemes próbálkozni előszőr, és magyarázatot fűzni a megoldásokhoz...)
(Azután tegye fel a kezét, aki 100% volt. Bár én csináltam a fenti ''feladatot'', nekem 94%-ot sikerült összehoznom) -
robisz
senior tag
válasz
motoroscsaj #841 üzenetére
Nem ismeres a telót de szerintem JAD fájl is kell neki vagy az is elképzelhető,
hogy a JAR fájl nem kompatibilis a telefonoddal. -
motoroscsaj
csendes tag
Sziasztok!
Nekem egy Sony Ericsson P800asom van, és az a problémám, hogy amikor feltelepitek egy JAR fájlt a telefonra, és amikor elinditom, megjelenik, hogy ''MIDlet inditása'' és utána nem történik semmi. Esetleg nem tudna nekem valaki segiteni, hogy mi lehet a probléma? Újabb java-t kéne rá tennem? (amit nem találok a neten sehol :S )
Kérlek segitsetek! -
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 -
loszerafin
senior tag
Köszönöm mindkettőtöknek,
substring(startindex, startindex + 10)
Így könnyen megjegyezhető.
Közben találtam egy újabb ''fejfájást'':
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
De ezt csak mint érdekességet írom, nem fontos reagálni rá, és azt hiszem, abbahagyom a ''különös'' dolgok beírását a fórumba, talán fárasztó már, meg úgyis parttalan... -
shev7
veterán
''substring(startindex, startindex + 10)
Ami visszaadja a startindex-től kezdődő 10 hosszúságú stringet.''
En is pont ezt akartam irni, sztem teljesen logikus...
Egyreszt a fenti modszerrel pontosan ugy mukodik mint a c fele (start,darab) megoldas masreszt ha pl egy bizonyos minta elotti reszt akarod kivagni, akkor miutan megvan a minta kezdete nem kell meg egyet kivonni...
Szoval szerintem van ertelme, hogy igy irtak meg... -
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] -
loszerafin
senior tag
válasz
Protezis #834 üzenetére
Köszi a linket, bár nem tűnik komoly oldalnak.
Ez kétszer is megtalálható az oldalon :
''a programozók ... fogalmatlan (sic!) emberek''
Van ott egy 35 soros program, ami a Java ''bénaságát'' szemlélteti, hát azt nekem (2 hete tanulom a Java-t) sikerült megírnom kissé rövidebben is.
A program a test változó szövegében levő szavak előfordulási gyakoriságát számolja meg:
import java.util.*;
class MyTest {
public static void main(String[] argv) {
String test = ''Let's count the words in this text. ''
+ ''The text contains some words more than once, ''
+ ''so their count will be more than one.'';
Collection<String> list = Arrays.asList(test.split('' ''));
Collection<String> set = new HashSet<String>(list);
for (String word : set ){
System.out.println(word + '':'' + Collections.frequency(list,word));
}
}
}
Egyébként igaz, hogy a Java az elején igen nehézkes volt, pl. említik a linkelt oldalon, hogy castolni kellett a primitív típus - objektum típus miatt, de ez mára eltűnt (autoboxing/unboxing), és a Collection Framework-öt is eléggé ütősnek érzem, pedig csak a felszínét értem. Azután itt van az assert, ami kitűnő eszköz, meg a kivételkezelés, stb.
Meg ''csúnya'' dolog erősen típusos, fordítós nyelvet összehasonlítani script-nyelvekkel.
A Java és a C# próbál közelíteni a scriptnyelvek hajlékonyságához, szabadságához, de nyilván sose lehetnek olyanok.
Ráadásul azt is írja, a Java könnyen tanulható, hát, nem tudom. Nekem gyötörnöm kell magam, meg magolnom eléggé sokat, és még van 400 oldalam hátra, és akkor csak az alapokon rágtam át magam és még gyakorlatom se lesz.
Személyes véleményem, hogy a programok olvashatósága rettentő fontos. Egy ismerősöm azt mondta a C-ről (eléggé régen volt ez) hogy azt csak írni tudja, olvasni nem...
Én eléggé otthon vagyok a perlben, (ami egy zseniális nyelv), de könnyedén összehozok benne olyan 1 soros programot, amit 3 perc múlva már magam se értek. -
Protezis
őstag
válasz
loszerafin #833 üzenetére
Itt van meg par erdekes eszrevetel a Javaval kapcsolatban: [link]
-
loszerafin
senior tag
Persze hogy egyértelmű. Az lenne a csuda, ha nem az lenne.
Azonban cseppet sem logikus.
Láthatod, a bemásolt leírásod is körmönfont:
beginIndex-ről és endIndex-ről ír, holott a substring vége _nem_ az endIndex-nél van, hanem endIndex-1 -nél.
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.
[Szerkesztve] -
Protezis
őstag
Eclipse-ben hasznalok Visual Editort. Kerdesem az lenne, hogy tudom elrejteni az elemeket a formban? Tehat szerkesztes kozben el szeretnem rejteni, hogy lassam az ''alatta'' levo elemeket.
-
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>.'' -
loszerafin
senior tag
Nézegetem a String osztály metódusait, és találtam valami furcsát.
substring(start,end)
Már az is eléggé furcsa, hogy a substring nem ilyen:
substring(start,darab)
Na de hogy az ''end'' 1-től számozódik!!!! Ez hihetetlen. Főleg annak tükrében, hogy a ''start'' meg 0-tól. Azért megkérdezném attól, aki ezt így találta ki, hogy mi volt az oka.
Gondolom, az oka a Java nyelv elődeiben keresendő.
Direkt megnéztem, C++-ban a substring(start, darab). Utánanéztem az Ada-nak, úgy láttam, az se ilyen ''elvetemült'', a slice-oknál tól-ig lehet megadni a pozíciót. -
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? -
loszerafin
senior tag
Köszi, megnézem később. Most van egy könyvem, azon rágom át magam éppen.
Ezt ismeri valaki?
Kérdés: Mit ír ki a program? (Figyelem! Tilos begépelni és kipróbálni, előbb tippelni kell!)
class Equal {
public static void main(String[] args){
Integer i,j;
i=10; j=10;
System.out.println(i==j);
i=1000; j=1000;
System.out.println(i==j);
}
}
(Persze az igazi kérdés inkább az, hogy miért van ez így?)
[Szerkesztve] -
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] -
loszerafin
senior tag
További ''érdekesség'' ebben a témában:
Az eredeti kérdés ez volt:
Az ugye világos, hogy ez
----------------
int a = 10;
int a = 10;
------------------
Nem működik (already defined, mondja a compiler).
És persze ez sem:
-------------------------
MyClass a = new MyClass();
MyClass a = new MyClass();
-------------------------
Az érdekes viszont az, hogy így működik:
for (int i=0; i<2; i++){
int a = 10;
};
pedig itt is 2x van az ''int a = 10'' sor.
A kérdés az volt, hogy lehet ez?
Amit ''felfedeztem'', hogy van olyan eset, amikor minden végrehajtáskor készül egy új objektum!
Legalábbis, ha osztályokról van szó:
class MyClass { }
class MoreMyClass {
public static void main (String[] args){
MyClass a = new MyClass();
for(int i=0; i<2; i++){
MyClass s = new MyClass();
if (i == 0) a = s;
System.out.println(i + '':'' + (a==s));
}
}
}
És az eredmény:
0:true
1:false
Ami azt szemlélteti, hogy a ciklus második futásakor az s másik objektumra mutat, mint az első körben. (már, ha nem tévedek, persze)
[Szerkesztve]
[Szerkesztve] -
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] -
loszerafin
senior tag
Köszönöm a válaszokat.
KL -
dantes
tag
Jó, abban igazad van, hogy általános esetben, ha tényleg egy értelmes ciklusmag van, akkor a benne deklarált változók nem jönnek létre és szünnek meg minden iterációban. Ezt inkább csak szemantikailag lehet így képzelni.
A te hozzászólásodban meg az zavart, hogy csak simán kiraktad a ciklusmagból a változót.
Már így is túl sok volt erre a kérdésre. -
dantes
tag
Az első fele a mondatomnak arra vonatkozott, hogy hogy kell elképzelni. Azzal pedig semmi gond nem volt. A ciklusmagon kívűl nem létezik az n változó.
A második fele pedig az hogy a fordító kioptimalizálhatja. Nem tudom hogy, mert nem ismerem a jdk forrását, lehet hogy úgy ahogy te mondtad (+ a külső blokk köré egy {}), de ennél egy jobb megoldás, amit én mondtam, hogy észreveszi, hogy a ciklusmagon bellül nincs hivatkozás az n-re (ezt azt hiszem amúgy is észreveszi, mert warningot ad), és akkor a ciklusmag üres, ezt is kioptimalizálhatja és nem csinál semmit. -
Lortech
addikt
Én azt nem mondtam, hogy az értékadás csak egyszer fut le, hisz ott van az én kódomban is. Így azt kapod ami a példádban is van. Csupán azt állítottam, hogy nem történik allokáció és felszabadítás minden iterációnál. Ez komoly bünti lenne egy ilyen magas szintű nyelvnél, még egy egyszerű int-nél is.
szerk: 815: np.
[Szerkesztve] -
Lortech
addikt
Nem, nem mondtam ilyet.
Még azt sem mondtam, hogy pont ezt csinálja a fordító. C# alatt megmondom neked assemblyre, java-nál nem tudom. Szemantikailag viszont így kell elképzelni. Ha mondjuk egy újabb blokkba rakod az egészet, akkor mindjárt nem látszik kívülről..., de tök mindegy, nem találgattam, csak választ adtam, hogy kell elképzelni.
De te aztán még úgy jól tudod, írsz egy totál hülyeséget aztán én vagyok a hülye.. -
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. -
loszerafin
senior tag
Találkoztam egy érdekes kérdéssel:
Ez nem megy, mert a NetBeans hibát jelez:
(n is already defined)
--------------------
int n = 10;
int n = 10;
--------------------
Ez viszont fut, hiba nélkül:
for (int i=0;i<2;i++){
int n = 10;
}
Az a kérdésem, mi történik ilyenkor ? Az int n = 10 lefut kétszer?
Előre is köszönöm
KL -
Travelos
őstag
az én problémám viszont nem érdektelen, valaki esetleg egy kis HELP?
-
Forest_roby
őstag
válasz
Forest_roby #805 üzenetére
Közben volt óra - megmutatták, úgyhogy érdektelen!
-
Forest_roby
őstag
Hi!
A suliban Fedora alatt az eclipse -szel létrehoztunk egy új java projectet és abban mappákat, classokat, meg ilyesmiket hoztunk létre és ezeket a fileokat az eclips szépen menti is. Ez így szép, jó, meg minden, de hogyan tudom átvinni az egész projektet egy masik gépre?
Projektre vonatkozó file-t nem találtam sehol, csak ezeket a class fileokat látom egy mappában ( - a mappa neve a project neve). Lényeg az, hogy próbálkoztam, de nem sikerült ezt így megnyitnom az otthoni gépen ( igaz, otthon windows alatt próbálkoztam, de az elvileg nem számíthat ).
Előre is köszi a segítséget!
Forest -
Travelos
őstag
sziasztok!
adott egy online progi
[link]
és a képek nézegetéséhez valami beépülő cucc kell, neve: proquest
azonban a telepítéskor hibával leáll, valami cfg file baja van
PLEASE segítsetek fontos lenne!! -
loszerafin
senior tag
Szia
Linux alá NetBeans5.5
http://www.netbeans.org/
Nálam néha lefagy, akkor bezárom a konzolt, amiből indítottam, és akkor újra konzol ablak, netbeans.
Javas ''könyv'':
http://java.sun.com/docs/books/tutorial/
Feladatgyűjtemény: nem ismerem a Juhász-... félét.
De:
http://www.javapassion.com/javaintro/#Software
Igaz, ezt se próbáltam...
[Szerkesztve]
[Szerkesztve] -
pawee
tag
Hello most kezdtem a suliban java-t tanulni és érdeklődni szeretnék, hogy tudtok-e ajánlani vmi jó java könyvet vagy az angster erzsébetes tökéletes?vmi jó IDE felületet?(linux alá) eclipse?
és egy jó feladatgyűjti érekelne mint pl a juhász-kósa-pánovics féle java gyak könyv...
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Hegesztés topic
- Filmvilág
- Azonnali mobilos kérdések órája
- Anime filmek és sorozatok
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Milyen légkondit a lakásba?
- Debian GNU/Linux
- Norvégia átmenetileg betiltja az áramigényes kriptobányászatot
- Óvodások homokozója
- További aktív témák...
- Sigma 150-600mm f/5-6.3 DG OS HSM C ( Canon ) -Újszerű-
- Dell Latitude 7410 Strapabíró Ütésálló Profi Ultrabook Laptop 14" -80% i7-10610U 16/512 FHD IPS MATT
- Új MSI KATANA 15 Gamer Tervező Laptop 15,6" -35% i7-13620H 10Mag 16/1TB RTX 4060 8GB FHD 144Hz
- HP Omen - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync - HDR 400 - USB-C - KVM Switch
- Garanciális MSI Katana GAMER 15,6"240Hz!i5 12500H(16X4,5Ghz)RTX 3060 6 GB VGA,32-64GB RAM/1TB SSD
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- Bomba ár! Dell Inspiron 15 3511 - i5-11GEN I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gari
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- Eladnád a telefonod? KÉSZPÉNZES OKOSTELEFON FELVÁSÁRLÁS azonnali fizetéssel!
- AKCIÓ! Csere-Beszámítás! Manli RTX 3070Ti 8GB GDDR6X Videokártya!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged