5. hét Karakteres adattípusok
Tartalom:
5.1. A Character
osztály
5.1.1.
A Character osztály
fontosabb konstruktorai, metódusai
5.2. A String
osztály
5.2.1.
String objektumok
létrehozása
5.2.2.
Karakterlánc
indexelése
5.2.3.
A String osztály fontosabb konstruktorai, metódusai
5.3. StringBuffer osztály
5.4. Sztringekkel
végezhető műveletek
5.4.1.
Szöveg hosszának
meghatározása, adott karakter megjelenítése
5.4.2.
Manipulálás a
szöveggel
5.4.3.
Összehasonlítás
(egyenlőségvizsgálat)
5.4.4.
Keresés
5.4.5.
Konkatenáció
(összefűzés)
5.4.6.
Bővítés
5.4.7
Törlés
5.5.
Tesztkérdések
5.6.
Feladatok
Karaktereket definiálhatunk egyszerűen a char típus segítségével, ( pl. char a='a';) de létrehozhatunk karakter objektumokat is.
Az egyéb típusoknál ismertetett char típus helyett, van amikor szükségünk van arra, hogy a karaktert objektumként használjuk. pl. Amikor egy karakter értéket akarunk átadni egy metódusnak, ami megváltoztatja ezt az értéket. A Character típusú objektum egyetlen karakter értéket tartalmaz.
Készítsünk egy karakter objektumot! pl. Character a = new Character('a');
5.1.1. A Character osztály fontosabb konstruktorai, metódusai
| Character(char) | A Character osztály egyetlen konstruktora, amely létrehoz egy Character objektumot. |
| compareTo(Character) | Összehasonlít két Character objektumban tárolt értéket. Visszaad egy egész számot, ami jelzi, hogy az objektum értéke kisebb, egyenlő, vagy nagyobb mint a paraméterben megadott érték. |
| equals(Object) | Két karakter objektumot hasonlít össze, true értékkel tér vissza, ha a két érték egyenlő. |
| toString() | Sztringé konvertálja az objektumot. A sztring 1 karakter hosszú lesz. |
| charValue() | Megadja az objektum értékét egyszerű char értékként. |
| boolean isUpperCase(char) | Meghatározza, hogy az egyszerű char érték nagybetű-e. |
| boolean isLowerCase(char) | Meghatározza, hogy az egyszerű char érték kisbetű-e. |
| boolean isLetter(char) | Meghatározza, hogy az egyszerű char érték ékezetes betű-e. |
| boolean isDigit(char) | Meghatározza, hogy az egyszerű char érték számjegy-e. |
| boolean isSpaceChar(char) | Meghatározza, hogy az egyszerű char érték szóköz-e. |
A következő program bemutatja a fenti táblázatban ismertetett metódusok használatát:

A Java nyelvben három osztály áll rendelkezésünkre, amelyekkel tárolhatunk, illetve manipulálhatunk sztringeket, ezek a String, a StringBuffer és a StringBuilder. A StringBuilder osztállyal nem foglalkozunk. A String osztályban olyan sztringeket tárolunk, amelyek értéke nem fog változni. A StringBuffer osztályt akkor alkalmazzuk, ha a szövegen szeretnénk módosítani.
5.2.1 String objektumok létrehozása
A String objektumok létrehozása kétféle módon történhet:
ˇ
Készíthetjük a sztringet egy sztring konstansból,
egy karaktersorozatból.
pl. String str1 = "Ez egy szöveg";
ˇ
Vagy mint minden más objektumot a
new
operátorral hozhatjuk létre.
pl. String str2 = new String ("Ez is
egy szöveg");
5.2.2. A karakterlánc indexelése:
Figyeljük meg a következő ábrát!
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| S | z | ö | v | e | g | ? |
Az ábrán egy "Szöveg?" objektum látható, amely egy 7 karakter hosszú szöveg (String). Az első betű az S indexe 0, a v betű indexe 3, a ? karakteré pedig a 6.
Figyeljünk arra, hogy az indexelés
nullával kezdődik!
5.2.3. A String osztály fontosabb konstruktorai, metódusai:
| String() | A létrehozott objektum az üres karakterláncot reprezentálja. |
| String(String value) | A létrehozott objektum a paraméterben megadott szöveget tartalmazza. |
| int length() | Visszaadja a szöveg hosszát. |
| char charAt(int index) | Visszaadja az index indexű karaktert. |
| String toLowerCase() | Visszaad egy objektumot, amely az objektum szövegének csupa kisbetűs változata. |
| String toUpperCase() | Visszaad egy objektumot, amely az objektum szövegének csupa nagybetűs változata. |
| String toString() | Visszaadja saját maga másolatát. |
| String replace(char oldChar,char newChar) | A metósus visszad egy karakterlánc-objektumot, amelyben minden oldChar karaktert newChar-ra cserél. |
| String substring(int beginIndex) | Visszaadja az objektum részláncát beginIndex-től a végéig. |
| String substring(int beginIndex,endIndex) | Visszaadja az objektum részláncát beginIndex-től endIndex-1-ig. |
| boolean equals(Object anObject) | Összehasonlítja az objektumot a paraméterként megadott másik objektummal. |
| boolean equalsIgnoreCase(String str) | Összehasonlítja az objektumot a paraméterül megadott másik String objektummal. A kis- és nagybetű között nem tesz különbséget. |
| int compareTo (String str) | Összehasonlítja az objektumot a paraméterül megkapott másik String objektummal. A visszaadott érték 0. ha a két objektum megegyezik. Ha a szöveg nagyobb mint a paraméter, akkor pozitív, ellenkező esetben negatív. |
| String concat (String str) |
Összefűzi a paraméterül megadott sztringet az objektummal. (A + operátorral is el lehet végezni ezt a műveletet.) |
A String osztállyal ellentétben a StringBuffer osztály szövege manipulálható.
A StringBuffer osztály fontosabb konstruktorai, metódusai:
| StringBuffer() | A létrehozott objektum az üres karakterláncot reprezentálja. |
| StringBuffer(int length) | A létrehozott objektum az üres karakterláncot reprezentálja, kezdeti kapacitása length karakter. |
| StringBuffer(String str) | A létrehozott objektum a paraméterben megadott szöveget tartalmazza. |
| int capacity() | Megadja a kezdeti kapacitást, ennyi karakter fér az objektumba. |
| int length() | Megadja a szöveg aktuális hosszát. |
| char charAt(int index) | Visszaadja az index indexű karaktert. |
| StringBuffer append(<Type> value) | Bővítés, a Type itt egy osztályt reprezentál. |
| StringBuffer append(<type> value) | Bővítés, a type itt egy tetszőleges primitív típus. |
| StringBuffer insert( in offszet, <Type> value) | Beszúrás offszet pozíciótól kezdve. |
| StringBuffer insert( in offszet, <type> value) | |
| StringBuffer deleteCharAt(int index) | Adott indexű karakter törlése a szövegből. |
| StringBuffer delete(int start, int end) | Részlánc törlése a szövegből, start indextől end index-1-ig. |
| StringBuffer replace(int start, int end, String str) | A start és end-1 közötti részlánc cseréje str-rel. |
| StringBuffer reverse() | Megfordítja az objektum szövegét. |
|
String substring (int start, int end) |
Visszaad egy start és end-1 index közötti részláncú új String objektumot. |
| String substring (int start) | Visszaad egy start indexel kezdődő részláncú új String objektumot. |
5.4. Sztringekkel végezhető műveletek
5.4.1. Szöveg hosszának meghatározása, adott karakterek megjelenítése:
int length() >>
Szöveg hossza.
Példa:
String str="Laci";
int hossz=str.length(); >>
4
char charAt(int index) >> Adott indexű karakter.
Példa:
String str="Laci";
char c=str.charAt(0); >>
L
5.4.2. Manipulálás a szöveggel:
String toLowerCase() >>
Kisbetűs átalakítás.
Példa:
String str="KICSI";
String kstr=str.toLowerCase(); >>
kicsi
String toUpperCase() >> Nagybetűs átalakítás.
Példa:
String str="nagy";
String nstr=str.toUpperCase(); >>
NAGY
String replace(char oldChar,char newChar) >> Karakterek kicserélése.
Példa:
String str1="Remek eme Mekk Mester";
String str2=str1.replace(e, a); >>
Ramak ama Makk Mastar
String substring(int beginIndex)
>> Részsztring készítés.
String substring(int beginIndex, int endIndex)
Példa:
String str1="Pálinka";
String str2=str1.substring(3); >>
inka
String str3=str1.substring(0,3); >>
Pál
5.4.3. Összehasonlítás (egyenlőségvizsgálat):
boolean equals(Object anObject) >>
Objektumok összehasonlítása.
int compareTo(String str)
Példa:
String str1="Laci";
String str2="Gizi";
str1.equals(str2); >>
false
str1.compareTo(str2) >> 5
Figyelem! Az = = operátor nem az egyenlőséget, hanem az azonosságot vizsgálja!
int indexOf(int ch) >>
Karakter keresés..
int indexOf(int ch, int fromIndex)
int indexOf(String str) >>
részsztring keresés
int indexOf(String str, int fromIndex)
Példa:
String str1="Laci";
char c = 'a';
String str2="ci";
str1.indexOf(a); >>
1
str1.indexOf(str2;0) >>
2
5.4.5. Konkatenáció (összefűzés):
String concat(String str) >>
Hozzáfűzés.
Példa:
String str1="La";
String str2="ci";
str1.concat(str2); >>
Laci
StringBuffer append(<Type|type> value) >>
Bővítés a végén.
Példa:
StringBuffer szoveg = new StringBuffer("érték");
szoveg.append("12.3"); >> érték12.3
StringBuffer insert(int offset,<Type|type> value) >>
Bővítés adott pozíciótól.
Példa:
szoveg.insert(5, "="); >>
érték=12.3
StringBuffer deleteCharAt(int index) >> Adott
indexű karakter törlése.
StringBuffer delete(int start, int end)
>> Részlánc törlése.
Példa:
StringBuffer szoveg = new StringBuffer("Labdarugás");
szoveg.delete(5,10); >>
Labda
szoveg.deleteCharAt(0) >>
abda
5.5. Tesztkérdések
5.6. Feladatok
5.6.1. Készíts programot, amely az "Indul a görög aludni" sztring tartalmát megfordítja és kiírja! (megoldás)
5.6.2. Készíts programot, amely két adott sztringet
megjelenít, az egyiket kisbetűs, a másikat nagybetűs formában! A második
sztringben található összes 'e' karaktert kicseréli az első sztring második
karakterével. (megoldás)
5.6.3. Mi lesz a következő program outputja:

(megoldás)
5.6.4. A következő sorok közül melyik fog hiba nélkül
lefordulni?
a) "pá"+"linka"
b) 3+"pá"
c) 3+5
d) 3+5.5
(megoldás)
5.6.5. Adj meg egy valós számot. A számot úgy jelenítsd meg, hogy a tizedespont helyén egy tizedesvessző jelenjen meg! (megoldás)