- Biztonsági aggályok miatt késik a Microsoft hatalmas AI-újítása
- Kíváncsi az EU, milyen online védelmet adnak a pornóplatformok a kiskorúaknak
- Panaszt tettek a Google ellen, mert követi a felhasználókat a böngészője
- Rengeteg áram kell az adatközpontoknak, erre válasz a geotermikus energia
- Az AI megmondja, hogy van-e fájdalma a macskának
- ASUS routerek
- Amazon
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- YouTube
- Synology NAS
- MSI afterburner
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Router gondok
- Kíváncsi az EU, milyen online védelmet adnak a pornóplatformok a kiskorúaknak
- Biztonsági aggályok miatt késik a Microsoft hatalmas AI-újítása
Új hozzászólás Aktív témák
-
BaLinux
tag
Ez egy picit összetett dolog, biztosan ki is fogok felejteni valamit.
Használat módjai:
- static osztály változók: nem keletkeznek objektumonként, hanem az osztály összes példánya közösen használja a változót
pl.
class A { static int count; A() {count++;} }
esetén minden egyes konstruktorhívásnál inkrementálódik a count.
- static tagfüggvények: az előbbihez kapcsolódik, ugyanis ilyen függvényhez nem tartozik objektum. Ezt úgy értem, hogy a class A { static void fgv() {} } oszály fgv függvénye így hívható: A.fgv(); Természetesen ennél fogva nincs az fgv-ben definiálva ''this'' változó és ezért nem-static osztály változók/függvények sem használhatók, viszont static-kel jelöltek igen. (Persze ha átadsz paraméterben bármilyen objektumot, azzal azt csinálsz amit akarsz.)
- static belső osztályok: olyan osztályon belül definiált osztályok, melyek nem kapcsolódnak a külső osztályhoz példányszinten. Huh, ez bonyi
Na szóval:
class A { static int count; int local; static class B { }}
ilyenkor az A.B osztály példányosítható A-n kívülről. Egyébként nem! Továbbá az A.B osztály nem fér hozzá az A.local változóhoz, de az A.counthoz igen.
Ööö van még valami?!
[Szerkesztve] -
BaLinux
tag
Kiegészíteném a nem-static belső class-ról mondottakat azzal, hogy példányosíthatóak kívülről, amennyiben a new operátor egy kevéssé szokásos szintaxisát használjuk.
pl. legyen:
class A {
int a;
class B {
void ezmuxik() {
// itt hivatkozunk a kulso osztalyra! Ehelyett irhatunk a++;-t, ha az egyertelmu.
A.this.a++;
}
}
}
Van egy másik osztály, mely ezt csinálja:
class C {
void f() {
// hibas! ''no enclosing instance of A''
new A.B();
// gyartunk egy A-t
A a_peldany=new A();
// explicit megadhato az enclosing instance!
A.B ab_peldany=a_peldany.new B();
}
}
Na kezd teljes lenni a dolog. Remélem érthető. -
Zsu_
senior tag
köszönöm a kielégítő választ
Kérdezhetnék még egy konkrétat is?
1.
Mi a hiba az alábbi forráskódban?
public class Application {
class Vector { double m_x, m_y; Vector(double x, double y) { m_x = x; m_y = y; } }
public static void main (String[] args) { Vector v = new Vector(0.0, 0.0); }
}
Fordítóval kipróbáltam, hogy az a hiba, hogy a class Vector elé kell a static szó.
De miért? nem igazán értem.
2.
Mi a hiba az alábbi forráskódban?
class A { int a;
static class B {
B(int aa) { a = aa; }
}
}
Itt pedig az a hiba, hogy nem kell a static a class B elé. De ennek sem igazán értem a miértjét...
Hálás lennék, ha elmagyaráznád!
Előre is köszi -
BaLinux
tag
Nyugodtan
Bár úgy látom, hogy a kérdéseidre kifejtettem már a választ, csak nem pont ezekkel a példákkal... na lássuk:
1. A hiba valóban az, hogy oda kell a static, ugyanis (ahogy már leírtam): tetszőleges osztályban definiált static függvény osztálypéldány nélkül hívható. Ez azt jelenti, hogy nem tud hozzáférni (nem ''látható'' a függvény törzséből) semmilyen nem-static osztályváltozó. A nem-static belső osztályokra ez a szabály azért vonatkozik (tehát nem tud létrehozni olyan belső osztály típusú objektumot), mert a nem-static belső osztályok példányainak alapból rendelkezniük kell referenciával a külső osztályuk (amiben definiáltad a belső osztályt) egy példányára. Méghozzá pontosan arra, amely teremtette őket.
A belső osztály példány referenciája a külsőre úgy néz ki, hogy A.this (ha A a külső osztály neve). Remélem összeállt...
2. két lehetőség: nem kell static a B osztály elé, vagy éppen static kell az int a elé.
A szabály ugyanaz, mint az előbb: mivel a belső osztály statikus, nem kötődik külső oszályhoz, így a belső példány nem is rendelkezik információval (referenciával) az ő bennfoglaló objektumáról, ami ha a staticot eltöröljük, az A osztály egy példánya lenne.
Így a
a = aa;
sorban nem tud hozzáférni az 'a' változóhoz, ugyanis a szimbólumtáblázat látható részében (hogymondják szépen magyarul azt, hogy scope? ) nincs ilyen változó!
Ugye amikor azt írod hogy 'a', ebben az esetben prioritási sorrendben így tud feloldódni a jelentése:
1) lokális blokkban ({ } közötti utasítások) lévő változók
2) szülő blokkban lévők
3) rekurzívan a függvény fejlécig, itt a fgv paraméterek jönnek be
4) osztályváltozók (ez az ami ilyen bonyi szabályokkal írható le, ahogy eddig tettem)
Az utóbbinál az 'a' szimbólum ekvivalens a 'this.a'-val, amennyiben a belső rendelkezik nem-static 'a' nevű változóval; továbbá ekvivalens 'Belsoosztaly.a'-val, ha rendelkezik static 'a' nevű változóval.
Van egy ''5.'' szint, amennyiben egy belső osztályban használt változóról van szó. Ilyenkor az 1-es ponttól oldjuk fel ismét rekurzívan attól a helytől kezdve, ahol az osztályt definiáltad... így lesz az 'a'-ból 'Kulsoosztaly.this.a', ha a belső osztály nem static és a a Kulsoosztaly rendelkezik nem static 'a' változóval, a static szintaxis meg egyenlő a fentivel, tehát a 'Kulsoosztaly.a' static(!) változó mindenhonnan hozzáférhető, akár static, akár nem a belső osztály.
Hmmm... remélem érthető
[Szerkesztve] -
beeboy
addikt
ha ebben segítenél, megpróbálom röviden:
van egy vektor osztályom, ebben adatok.
ebben akarok keresni, úgy csináltam, hogy létrehoztam még egy vektor osztályt, és ebbe vittem be az adatot (hogy egyforma objektumúak legyenek)
de nem adja vissza a találatot, pölö:
tárolóvektor - ebben vannak az adatok, közte ''qqq'' srting
keresővektor értéke: 1 hosszú vektor, értéke ''qqq''
int melyiksor=tárolóvektor.indexOf(keresővektor.get(0));
tehát ''qqq'' értékű vektorelemet hasonlítok ''qqq'' értékhez, de nem jó, mindig -1 -el jön vissza.
próbáltam már sima stringel hasonlítani, de nem megy.
ötleted? kösziNem vagyok intelligens. Én AMDligens vagyok...
-
BBC
tag
hátha még nem késő...
vagy mást is érdekel
szóval: .java->.class futtatása jdk esetén parancssoros bénázás nélkül:
akármi.bat-ba bemásolni, és erről egy parancsikont a SENDTO-ba!
@echo off
set folderfile=%~n1
set folderut=%~p1
set folderdriver=%~d1
%folderdriver%
cd %folderdriver%%folderut%
javac %folderfile%.java
java %folderfile%
pause
majd intézőben jobb klatty a .java fájlon és küldés-> java fordító (vagy ami a neve)Tégy a megélhetési rasszisták ellen! Sőt, ne tegyél semmit ellenük. Semmi nem viseli meg ezeket jobban, mint az hogy semmibe veszed őket.
-
BaLinux
tag
Megkérdezhetem, hogyan? Gondolom rájöttél hol hibás a gondolat.
Másrészt viszont ilyen kulcsra való keresést (itt egy String a kulcs) ne Vector-ban, hanem HashMap/HashSet-tel vagy TreeMap/TreeSet-tel csinálj, mert a vector nem erre való. Ugye Vector esetén O(n) az elérési idő, Hash*-nél átlagosan O(1), Tree*-nél garantált O(log n). -
beeboy
addikt
ööö ez nekem még magas, a második java óra után
mondjuk engem érdekel, szóval tanulgatom
a vektor egyébként amolyan házi feladat volt, ezért csinálom ezt.
mindjárt keresek valami fájlt, amúgy otthon van a cuccos, most meg melózokNem vagyok intelligens. Én AMDligens vagyok...
-
beeboy
addikt
na ez már nem a legújabb, de ez megvan itt, és már működik:
public void bevisz(){
Tkonyv sz1;
sz1 = new Tkonyv();
sz1.szerzobe();
konyvek.add(sz1.toString());
}
public void keres(){
Tkonyv sz2;
sz2 = new Tkonyv();
sz2.szerzobe();
int temp=konyvek.indexOf(sz2.toString());
if (temp>=0)
System.out.println (''A könyv: ''+konyvek.get(temp)+ '' létezik!'');
else System.out.println (''A könyv nem létezik!'');
***************és persze a Tkonyv osztály része:
public void szerzoki(){
System.out.println (szerzo);
}
public void szerzobe(){
szerzo = Console.readLine(''Kérem a szerzőt: '');
}Nem vagyok intelligens. Én AMDligens vagyok...
-
Alec
tag
-
sonar
addikt
Ezt aprogramrészletet vki elmagyarázná nekem:
_L2:
e = ''\346\376\021\021\346\377\021\021\346\375\021\021\354\000\366\375\000\376\340\001\340]\\\021\360\301\\!\000\034\334O\231Nf\362\017\000\000\022(\321=\365(\345F\361\314\230=\032\340\f\340\002\230\034f\361\377\360F\361\346\360=\r\250\034F\361\252\n=\t(\302\346\361\372\000\270\034\b\302\346\361\000\371\270\034x!F\374\376?=\352\334O\271N\374\000\333\0''.getBytes();
d = ''\346\376\021\021\346\377\021\021\346\374\021\021\346\000\021\021\346\367\021\021\276\210\346\372\252\n\346\373U\005\346\362U\252\347\367\240\000\334O\230\036\273\004(r=\373\267H\267\267\271Z\271K\271z\270\034\250L@A=\375\b\302\313\0''.getBytes();
return;
a_javax_microedition_midlet_MIDlet_static_fld = arg0;
arg1;
a_javax_microedition_lcdui_y_fld;
b = ''\276\210\346\372\252\n\346\373U\005\346\362U\252\347\367\240\000\346\000\003\002\346\374\000>\346\376f9\340?\346\3670\000\334O\230\036\273\025(q=\373\346\000\000\002\346\374`\001\340\001\273\r\346\361\r8\273\n\346\374\324\001\346\361\372\200\273\005\346\361\000\376\273\002\267H\267\267\271Z\271K\271z\270\034\250L@A=\375\b\302\313\000\327P\003\000\362\376$:\362\377&\376nu=\037F\377tz=\034\346\000\000\000\346\b\000\374\314\000\314\000\346X\006\000\273\027\302\364\262\376\346\360\000\372\000@\273\021\244\000\262\376\b\001@\004=\372\273\013\346X\245\000~\266\232\266\376p\372\000\000\372f\374\377?\372\200d\001\232\267\376p~\267\313\0''.getBytes();
c = ''\346\376\021\021\346\377\021\021\346\374\021\021\346\375\021\021\346\362\021\021\334M\231,\334O\271.\b\341(!=\371\333\0''.getBytes();
if(true) goto _L2; else goto _L1A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
taltos
senior tag
Van valaki köztetek, aki tisztában van az XCode alatti Java abszolút alapjaival?
-
BaLinux
tag
Ez gáz, ugyanis nemhogy nem tudok a PH!-n javasolni topicot ennek, hanem az egész rohadt nagy neten nem láttam még soha ilyet, és néhány kulcsszóra google-özve sem találtam semmit, úgyhogy... no comment, sok sikert, engem is érdekel ha jutottál valamire.
Ez így nem Java, annyi biztos. Van köze hozzá a szintaxisnak, de abszolút nem ugyanaz. -
sonar
addikt
Ez szopó!
Amugy nem vagyok programozó. De gondolom az a a=....sok szám ami gáz
azt nem tudom észre vetted -e hogy ha kijelölöd és huzod az egeret balra akkor még folytatódik a sor.
Hátha az segít
Amugy meg vminek lennie kell , mert a progi meg müxikA tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
BaLinux
tag
Nem, a hosszú sorok Java-ban is szintaktikailag helyesek. Ami nincs: goto, illetve azok a hosszú nevű azonosítók.
Szumma: ez nem java, csak valami zombi/mutáns.
mod: ilyen formában ez egy programrészlet, azok a hosszú azonosítók lehetnek korábban deklarált változók, stb. Mondjuk érdekes az a return ott a közepén. Goto tényleg nincs.
[Szerkesztve] -
stanci
tag
hurrá java topic. Kár, hogy csak most vettem észre.
Nem tudjátok, hogy lehet jar fájlból futtathatót csinálni. Úgyértem, hogy duplaklikk és menjen mintha egy exe-t indítanék. Nem natív fordító kell, hanem, hogy normálisan bytekódból fusson.''Az élet egy hatalmas film... ...csak nem te választod a műfajt''
-
muad_dib
tag
Tsokolom!
Belekukkantottam a temaba, de nem leltem semmit ami a problemamra megoldas lenne:
Nem is problema, inkabb kerdes. Kellene nekem valami okos XML parser, de nem nagyon talaltam olyan leirast, ami kiterne arra, hogy a parser felolvassa az egesz cuccot a memoriaba, vagy pedig streamkent viselkedik. Streames cucc kellene, mert elkepzelheto pl. hogy egy nagyobb video vagy hasonlo binaris adatkupac utazik az xml fileban, es nem lenne igazan hasznos ha felolvasna az egeszet.... ha mar van ilyen akkor a fenenek van kedve megirni
[Szerkesztve]Hogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
BaLinux
tag
válasz muad_dib #289 üzenetére
Van egy olyan lib, hogy JDOM. Ez jó. Eddig mindig a SAXBuilder-t használtam, az végigparszolja a memóriában és fát épít belőle, azt mondod hogy ez nem túl jó.
Ezen kívül van a SAXParser, ami nem olvassa fel, hanem egy összetett listener rendszeren keresztül küldözgeti neked az elemeket, így streammel is elboldogul talán.
Videót XML-ben? Állat
Nem lenne értelmesebb egy saját protokoll, ami csomagokra bontja a nagy bináris adatfolyamot, és közötte lehet olyan csomag, hogy ''metaadat'', ami egy xml dokumentum lenne?
A SAXParser természetesen legalább egy elemet mindig teljesen felolvas, sőt nyilván az aktuális elem összes parentjét is meg kell tartania. Így ne gondolj olyanra, hogy 100 megás text adat. Ráadásnak XML-ben binárisat nem tudsz normálisan átvinni, legegyszerűbb a Base64 encode, ami még a méretet is növeli, igaz tömörítéssel részben visszahozhatod azt.
Gondold meg, na. -
stanci
tag
JBuilder X Foundationt használok. Ingyenesen letölthető és tanulási célokra használható.
Van is ilyen menüpont, hogy ''Native Executable Builder'' de nem aktív.
Nekem nem is natív fordító kéne, hanem az, hogy lehessen dupla klikkel indítani mint egy normál alkalmazást. Jar-ba sikerült már összeraknom, így legalább nincs húsz osztály, de még mindig csak parancssorból tudom indítani.''Az élet egy hatalmas film... ...csak nem te választod a műfajt''
-
muad_dib
tag
Koszi a tippeket, infokat!
Kozben ram esett egy masik javitani valo feladat, aze csak most irok...
Egyebkent irtam mar ilyet, SSL-en keresztul bufferelgettem fel az adatot, es az esetleges base64 encoded cuccot mint binaris adatot ahogyan megkapta a parser csomagonkent egybol rakta ki tempfileba, szal egesz jo kis cucc volt, csakhat nagyon nem JavabanHogyan nősül a hálózati játék fanatikus? - Holtomiglan holtodiglan...
-
BBC
tag
na most légy szíves írd le egy kezdőnek, hogy is csináljak konkrétan futtatható állományt.
a legegyszerűbb eset: kiír egy sort a konzolra, és kész
na most ezt elküldöm valakinek, sima felhasználó, a gépén nincs semmi java, stb. annyit ért hozzá, hogy dupla klikkre indulnak a progik.
tudsz segíteni?
köszi!
UI: ja és lehetőleg 1 fájl legyen - és bekavar-e ha az illető gépén pl. winrar sincs a tömörített állományok kezelésére, vagy ez a jar nem az a jar?
[Szerkesztve]Tégy a megélhetési rasszisták ellen! Sőt, ne tegyél semmit ellenük. Semmi nem viseli meg ezeket jobban, mint az hogy semmibe veszed őket.
-
BaLinux
tag
Úgy hogy nincs a gépén Java runtime, nem fog futni Java progi...
1) le kell töltenie (vagy mellékeled) a legfrissebb jre-t.
2) a programodat tetszőleges számú jar fileban beinstallálod egy könyvtárba
3) a link amire duplaklikkel behívja a fent említett parancsot, amivel a progi elindul.
Mért legyen lehetőleg 1 file, nem értem... semmi értelme.
Semmi egyéb program nem kell Java runtimeon kívül, a .jar fileok igaz hogy .zip-ek, de a jre természetesen tudja kezelni magától, semmivel nem kell foglalkozni.
Persze ha már van java-s progija az illetőnek, akkor az egyes pontot nem kell elvégezni. -
BBC
tag
kösz!
hogy miért kell egy fájl?
hát nem úgy egyszerű futtati egy programocskát?
1 db. exe és ennyi, nincs installshield stb, klatty oszt fut.
ezért vagyok ellene a javának, amúgy - suliban ezt erőltetik, elhiszem hogy ez a divat, stb. de talán nem ezzel kéne kezdeni
UI: nem tudom mennyi a jre ''lecsontozva'', de most képzeld el, hogy egy egysoros java progiért becsomagolom a fél vinyómat!
jó, persze lehet mondani, a java nem erre való
[Szerkesztve]Tégy a megélhetési rasszisták ellen! Sőt, ne tegyél semmit ellenük. Semmi nem viseli meg ezeket jobban, mint az hogy semmibe veszed őket.
-
BaLinux
tag
A Java nem erre való.
Manapság már illik adni kicsit a modularitásra. Értsd, nem teszünk bele mindent egy exe-be statikusan, hanem közös dll-ek, stb.
Ez a ''mindent egybe'' szoftvertervezési módszer... öö... elavult, és a Java meg ilyenek nem ''divat'' kérdése, hanem komoly mérnöki munka és tapasztalat eredménye.
Persze egy beágyazott rendszerbe (autó, hifi, tv) nyilván nem való ez a dolog (még!).
A jre-nek meg van installerje, azt telepíti külön, és örül magának, mert soha többet nem kell megtennie. A saját progidhoz is csinálsz installert, ha már átlagusernek írod, és azzal sem lesz gond.
[Szerkesztve] -
stanci
tag
Ez tök jó ötlet.
Csak még egy kérdés:
Ugye van olyan, hogy minden kiterjesztéshez lehet társítani egy progit ami megpróbálja megnyitni. jar-hoz megadtam a java.exe-t. De, hogy tudom azt megcsinálni, hogy a -jar kapcsolóval hívja meg?''Az élet egy hatalmas film... ...csak nem te választod a műfajt''
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- XFX GTS RX 580 8GB OC - eladó!
- Samsung Galaxy Watch 4 Classic 46mm, E-SIM, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy S21+ 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Beats Studio 3 Wireless /// Makulátlan Állapot // Számla + 6 Hónap Garancia
- 1More ComfoBuds Pro Vezeték nélküli fejhallgató ZAJSZŰRÉSSEL /// ÚJ // Számla + garancia