- Érkezik a Samsung Health előfizetés?
- Magisk
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Android alkalmazások - szoftver kibeszélő topik
- Szerkesztett és makrofotók mobillal
- CMF Phone 2 Pro - a százezer forintos kérdés
- Nagyon erős ajánlat lett CMF Phone 2 Pro
- Kicsomagolták a Vivo X Fold 5-öt (videó és fotók)
- Telekom mobilszolgáltatások
- Ford SYNC 3 infotainment rendszer teszt
Új hozzászólás Aktív témák
-
disy68
aktív tag
Java alatt az integer/short/akármi az egy szám reprezentáció számrendszertől függetlenül. Az alapértelmezett számrendszer a toString-nél a 10-es.
Integer.toString(int i, int radix)int binary = 0b0010;
int hexa = 0x0ef2;
int sum = binary + hexa;
System.out.println(sum);
System.out.println(Integer.toString(sum, 2));
System.out.println(Integer.toString(sum, 8));
System.out.println(Integer.toString(sum, 16));szerk: Amúgy a java elnevezési konvenciókról olvass még kicsit..
-
skoda12
aktív tag
Na, tehát a javadoc szerint: Csak olyan karakterek lehetnek a stringben, ami az adott számrendszerben használható. Ez magyarázza, hogy a "0x" prefix esetén miért nem működik. Ha csak "0" prefixet használsz, akkor működnie kell, most próbáltam egy online java compilerrel.
Ezt a 390-es dolgot nem értem. 10-es és 16-os számrendszerben értelmezve is simán beleesik a short intervallumába (a vessző nem tizedesvessző, hanem ezres határoló).
-
Sokimm
senior tag
Sajnos már nem volt idő szerkeszteni az előző hsz-t...
Arra rájöttem, hogy a 0x kezdés nélkül képes konvertálni, de egy másik hex alapú (068E) számot már nem.
Aztán néztem, és az eszközk ID-jai elé a függvény generátora betolhat töltő nullákat (ezért az első nulla sem kell, elég 3 karakter, csak 4 digitet akar megjeleníteni (nem tudom mért)).Ha simán a 68E-t konvertálom, akkor megint jó.
Már csak azt nem értem, hogy hogy fér el egy 16 bit-es short-ban (min -32,768 max 32,767 (inclusive)) a 390-es érték.System.out.println(info.getProductId());
Mert erre a console a 390-et adja. (ez már más érték, mint az előbb hozott string/short dolog)A println függvény játszik valamit a kiírási értékkel?
.45! Igen az elgépelés, a valódi kódban jól vannak elnevezve!
-
.45
csendes tag
a parseShortnál rossz változót konvertálsz, a product_ID-t kéne
másfelol nekem sem mukodik ami érdekes, mert ok itt ugyanígy csinálták: String to Hex Short
-
Szmeby
tag
Hogyan lehet vizsgálni, ha egy Objektum példánya létrejött (van, létezik)?
if (myObject != null) {
System.out.println("myObject objektumom létezik, hivogathatom a metódusait");
} else {
System.out.println("myObject objektumom nem létezik, ha ráhívok egy metódusára, NullPointerException a jutalmam");
}vagy
if (myObject instanceof String) {
System.out.println("myObject objektumom létezik, sőt azt is tudom róla, hogy String típusú, így bátran Stringgé castolhatom");
}Ha eleve String típusú a myObject változód, akkor felesleges instanceof-olni.
Pl.:String myObject = "kiskutya";
A bal oldalon jelölve vagyon, hogy ez legalább egy String, és mivel a java erősen típusos nyelv, compile error figyelmeztetne, ha valamit elcsesztél volna.Object myObject = "kiskutya";
Ebben az esetben nem lehetsz teljesen biztos benne, hogy ez egy String (annak ellenére, hogy erről a nyilvánvaló példáról ordít, hogy az), de ha szeretnéd String-ként kezelni, akkor castolnod kell mielőtt meghívod rajta a String osztély metódusait ((String)myObject).isEmpty(); Ha pedig ezt biztonságban szeretnéd elvégezni, akkor a castolás előtt érdemes csekkolni egy instanceof-fal, hogy valóban String van-e benne.
A null nem String, a null nem is Object, a null semmi. Az instanceof mindig false-szal fog visszatérni egy null referenciára, mert a semmiről nem lehet eldönteni annak típusát.És ha létrejött a példány, akkor még lehet null tartalmű, amire hogyan kérdeznétek rá? (azon túl, hogy kiteszed egy lokális változóba, ahogy az előbb írtad (ha nincs más, marad ez a módszer, csak elég bénácskának néz ki a kezdő szememnek))
Ha létrejött a példány, nem lehet null.Kiteheted lokális változóba, ha úgy kényelmes:
String product = info.getProductString();
if (product != null && product.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}De nem kötelező, használhatod a gettert is újra meg újra:
if (info.getProductString() != null && info.getProductString().equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}De akár meg is mókolhatod a lekérdezéskor, hogy kiküszöböld az API hülyeségeit:
String product = info.getProductString() == null ? "" : info.getProductString(); // ez egy ternáris operátor, egyfajta kompakt if: ha a getter null, akkor üres stringet használ helyette, különben meg a getter által visszaadott nemnull értéket
if (product.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}A java könyvek, vagy pl. az oracle tutorial relatíve korán elmagyarázza a java objektumok, referenciák, nullitás témakörét, érdemes rászánni azt a kis időt.
-
Aethelstone
addikt
Tisztázzuk. A csak deklarált, de még nem inicializált objektum kb. ugyanaz, mintha deklarálod, new Akarmi()-vel példányosítod, majd null-ra seteled. Ergó a kezelése is kb. ugyanaz.
Ha már létrejött egy példány, akkor nem lehet null...max a példányváltozók, de az megint egy másik kérdéskör. -
bambano
titán
igen, téves.
az elemi típusoknál, mint ami az int, ha deklarálod, lefoglalódik a helye. az értéke valami lesz, nem tudjuk, hogy inicializálás nélkül mi az értéke (leginkább a korábbi memória használat után ottmaradt szemét), de egy egész számként értelmezhető szám lesz ott.
ezzel szemben az Int-nél (nagybetűvel), a deklaráció eredménye egy pointer, aminek a kezdeti értéke null, és amikor az Int típusú objektumot példányosítod, akkor lesz benne egy olyan pointer, ami az adott példányra mutat és nem null.
ugyanez igaz a Stringre.
-
skoda12
aktív tag
Egyrészt stringeket nem ==-vel hasonlítunk össze, hanem equals() metódussal. Másrészt szerintem rossz stringeket próbálsz összehasonlítani, mert az első kód alapján a productString lenne az a "CM ...", de te valami AskDeviceName-t használsz helyette, ami nem látom hol kap értéket.
-
bucsupeti
senior tag
A ciklusfejben és a ciklusmagban is van egy növelése a ciklusváltozónak.
A System.out.print (++i +" "); sorban legelőször az i értéke növekszik, majd kiirásra kerül.
System.out.print (n++ +" "); sorban először kiirásra kerül az n majd utána növekszik az értéke.Még annyit hozzátennék hogy szerintem a növekményes ciklusban (for) ne piszkáljuk a ciklusváltozót a ciklusmagban. Ha erre szükség van akkor ne for hanem while ciklust kell alkalmazni.
Utálom amikor eröltetett példákkal próbálják magyarázni egy-egy nyelvi elem működését. Ennél már csak a "mutatóramutatómutatóttatalmazómutató" a szebb amit C-ben szoktak példázni, de a gyakorlatban ilyen soha nem jön elő.
-
Jim-Y
veterán
Szia, pszeudo-magyarázat
ciklus 1-től 10-ig
ciklusváltozó explicit inkrementálása
print ciklusváltozó
ciklusváltozó implicit inkrementálása
ciklus végemásik eset:
ciklus 1-től 10-ig
print ciklusváltozó
ciklusváltozó explicit inkrementálása
ciklusváltozó implicit inkrementálása
ciklus végeNézzük konkrétan, hogy a ciklus első periodusában mi történik:
első esetben:
i = 1
i = i + 1
print(i) // 2
i = i + 1 // i == 3másik esetben
i = 1
print(i) // 1
i = i + 1 // i == 2
i = i + 1 // i == 3
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Assetto Corsa
- Luck Dragon: Asszociációs játék. :)
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Spórolós topik
- Kormányok / autós szimulátorok topikja
- Monitor hiba topik
- Érkezik a Samsung Health előfizetés?
- Xbox Series X|S
- sziku69: Fűzzük össze a szavakat :)
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- ACER Aspire 3 15,6" FHD IPS // 11 GEN // MX350 2GB VGA // 8GB DDR4 // WIN11 // 256GB Nvme SSD
- HP Elitebook 840 G6, 14" FULL HD IPS, I7-8665U CPU, 16GB DDR4, 256GB NVMe SSD, WIN 11, 1 év garancia
- HP Elitebook 840 G6, 14" FULL HD IPS, I7-8665U CPU, 16GB DDR4, 256GB NVMe SSD, WIN 11, 1 év garancia
- MacSzerez.com - iPhone 13 Mini / 128GB / Kék / Új gyári Apple akkumulátor! / Garancia!
- MSI GP66 Leopard 10UE 15.6" FHD IPS i7-10870H RTX 3060 16GB 512GB NVMe magyar vbill gar
- Apple Macbook Pro 13 2020 - M1 - 8GB/256GB SSD - Touch Bar - 102 Ciklus - 99% Akku - Ezüst - MAGYAR
- LENOVO ThinkBook 13s - 13.3" FullHD IPS - i5-10210U - 8GB - 256GB SSD - Win11 - MAGYAR
- NJOY Aster 3K 3000VA/2700W Rack Szünetmentes Táp
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst -(2025) - 3 év gari - MAGYAR
- Bomba ár! Dell Latitude 7320 - i5-11GEN I 8GB I 256SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest