Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!



Podobné dokumenty
Úvod do programovacích jazyků (Java)

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

5. Ř etězce (třída String)

Programování v jazyce JavaScript

Výčtový typ strana 67

Teoretické minimum z PJV

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Algoritmizace a programování

Algoritmizace a programování

7. Datové typy v Javě

Paměť počítače. alg2 1

Sada 1 - PHP. 03. Proměnné, konstanty

Java Řetězce Java, zimní semestr

8 Třídy, objekty, metody, předávání argumentů metod

9. přednáška - třídy, objekty

ADT/ADS = abstraktní datové typy / struktury

Seminář Java II p.1/43

Programování v Javě I. Leden 2008

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v Javě I. Únor 2009

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Pole a kolekce. v C#, Javě a C++

Algoritmizace a programování

Úvod do programování 6. hodina

Java a XML. 10/26/09 1/7 Java a XML

Abstraktní datové typy: zásobník

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do programovacích jazyků (Java)

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Programovací jazyk Pascal

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

5 Přehled operátorů, příkazy, přetypování

Úvod do programování - Java. Cvičení č.4

přetížení operátorů (o)

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Programování v C++ 1, 5. cvičení

Algoritmizace a programování

Regulární výrazy. Vzory

Algoritmizace a programování. Terminálový vstup a výstup

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Vytváření a použití knihoven tříd

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

typová konverze typová inference

PŘETĚŽOVÁNÍ OPERÁTORŮ

Java - řazení objektů

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Datové typy strana 29

Jazyk C# a platforma.net

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Zápis programu v jazyce C#

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Generické programování

Textové soubory. alg9 1

Programování v jazyce JavaScript

KTE / ZPE Informační technologie

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Programování v C++, 2. cvičení

VISUAL BASIC. Práce se soubory

Jazyk C# (seminář 3)

Algoritmizace a programování

15. Projekt Kalkulačka

6. PRÁCE S DATOVÝMI PROUDY

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Visual Basic for Applications

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Zadání k 2. programovacímu testu

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

Poslední nenulová číslice faktoriálu

Pointery II. Jan Hnilica Počítačové modelování 17

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Formátové specifikace formátovací řetězce

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Typický prvek kolekce pro české řazení

2. Základy jazyka. Proměnné. Základy jazyka

PREPROCESOR POKRAČOVÁNÍ

Konstruktory a destruktory

Programovací jazyk Java

Programování v C++ 2, 4. cvičení

KTE / ZPE Informační technologie

OOPR_05. Případové studie

Třída jako zdroj funkcí

Programování v C++ 1, 6. cvičení

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Empty, Null, Nothing, Missing, prázdný řetězec a buňka

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

7. Dynamické datové struktury

Transkript:

Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného importu balíčku. Objekt typu String je konstantní řetězec (nelze ho modifikovat). Za řetězcovou konstantu lze považovat sekvenci znaků uvozenou znaky uvozovka např. Ahoj. Pokud potřebujeme vytvořit řetězec, který lze libovolně měnit, musíme pro něj použít objekt typu StringBuffer. S instancemi třídy String zachází v některých případech kompilátor jako by to byly primitivní typy. Například pokud narazí ve zdrojovém textu na text uzavřený v uvozovkách, vytvoří pro něj automaticky objekt typu String. Operátor "+" sloužící pro spojování řetězců vlastně spojuje 2 různé objekty typu String a vytváří jako výsledek operace 3. objekt typu String, proto není vhodný ke spojování více řetězců zbytečné vytváření nových objektů. Třída java.lang.string Jak bylo již řečeno, tato třída reprezentuje řetězcovou konstantu. Vytvořit ji lze 2 způsoby : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! String txt2 = Ahoj vsichni! ; //udělá totéž txt2.equals(txt1); //tento výraz vrací true proč? txt2 == txt1; //tento výraz vrací false proč? Třída String poskytuje celou řadu užitečných metod, jejich úplný výčet lze najít na stránkách s dokumentací. Podíváme se na některé ty nejdůležitější z nich.

Java práce s řetězci (2) - String char charat(int i) Tato metoda vrací znak v řetězci, který se nachází na pozici i. První znak v řetězci leží na pozici 0! char ch = txt.charat(4); char ch = txt.charat(8); // v proměnné ch je uložen znak 'r' // volání metody způsobí chybu (vyvolá výjimku) int compareto(string s) Porovná lexikograficky dva řetězce a vrací 0, pokud jsou si řetězce rovny, zápornou hodnotu, pokud je řetězec s "menší", nebo kladnou nenulovou hodnotu, pokud je řetězec s "větší",í : String txt2 = Praha ; String txt3 = new String( Liberec ); int vysledek = txt.compareto(txt2); // v proměnné vysledek je uložena nenulová hodnota int vysledek2 = txt.compareto(txt3); // v proměnné vysledek je 0. int length() Tato metoda vrací délku řetězce v podstatě se jedná o počet znaků v řetězci int delka = txt.length(); // v proměnné delka je uloženo 7 int delka =.length(); // v proměnné delka je uloženo 0

Java práce s řetězci (3) - String String replace(char z1, char z2) Tato metoda zamění výskyty znaku z1 za z2 a vrátí modifikovaný řetězec String novy = txt.replace('e', 'o'); // v proměnné novy je uložen řetězec Liboroc String substring(int start) String substring(int start, int end) První metoda vrátí jako podřetězec tu část původního řetězce, která začíná indexem start a končí na konci původního řetězce. Druhá metoda vrátí jako podřetězec tu část původního řetězce, která začíná indexem start a končí indexem end.. String sub = txt.substring(2); String sub2 = txt.substring(2,5); // v proměnné sub je uložen řetězec berec // v proměnné sub2 je uložen řetězec bere String trim() Tato metoda odstraní z počátku a z konce původního řetězce bílé znaky a vrátí upravený řetězec String txt = Liberec ; String novy = txt.trim(); // v proměnné novy je uložen řetězec Liberec bez mezer na počátku a konci int indexof(string s) int indexof(char ch) Tato metoda vrací index v řetězci, který se nachází podřetězec s nebo znak ch. int pozice = txt.indexof( erec ); // v proměnné pozice je uloženo 3 int pozice2 = txt.indexof('r'); // v proměnné pozice2 je uloženo 4

Java práce s řetězci (4) - StringBuffer třída StringBuffer Třída StringBuffer je definována v balíku java.lang. Na rozdíl od třídy String lze řetězec tohoto typu modifikovat (automaticky se též mění jeho délka). Instance této třídy se využívá hlavně ke spojování řetězců. String bad = Liberec + je + krasne + město ; // toto spojování řetězců sice fungovat bude, ale pro každý řetězec je vytvořena nová instance třída String a proto je neefektivní String ok = new StringBuffer( Liberec ).append( je ).append( krasne ).append( mesto ).tostring(); // tento způsob je mnohem efektivnější, protože pracuje s jednou instancí třídy StringBuffer Třída StringBuffer má následující často používané metody : int length() Tato metoda vrací délku řetězce zapouzdřeného v třídě StringBuffer v podstatě se jedná o počet znaků v řetězci StringBuffer buf = new StringBuffer( Liberec ); int delka = buf.length(); // v proměnné delka je uloženo 7 StringBuffer reverse() Metoda vytvoří StringBuffer obsahující původní znaky v opačném pořadí String sub = txt.substring(2); String sub2 = txt.substring(2,5); // v proměnné sub je uložen řetězec berec // v proměnné sub2 je uložen řetězec bere

Java práce s řetězci (5) - StringBuffer StringBuffer append(string s) Metoda byla demonstrována na začátku ve výkladu o třídě StringBuffer. Připojí řetězec s na konec řetězce zapouzdřeného v třídě StringBuffer a nastaví celkovou délku na hodnotu odpovídající novému řetězci StringBuffer insert(int index, String s) Metoda vloží řetězec s na pozici index řetězce zapouzdřeného v třídě StringBuffer a nastaví celkovou délku na hodnotu odpovídající novému řetězci StringBuffer buf = new StringBuffer( Liberec ); StringBuffer novy = buf.insert(2, bebe ); // vytvoří instanci StringBuffer novy, která obsahuje řetězec Libebeberec void setlength(int delka) Metoda nastaví novou délku řetězce v třídě StringBuffer. Pokud je hodnota menší než původní délka řetězce, řetězec bude oříznut na novou délku. StringBuffer buf = new StringBuffer( Liberec ); StringBuffer sub = buf.setlength(3); // v proměnné sub je uložen řetězec Lib

Java práce s řetězci (6) - konverze Konverze datových typů na String Velmi často potřebujeme převést číselnou hodnotu (nebo jiný datový typ) na String. K převodu z hodnoty primitivního datového typu na řetězec nabízí třída String několik verzí statické metody valueof() : valueof(boolean b); // převod true / false na String valueof(char c); // převod znaku na String valueof(double d); // převod double na String valueof(float f); // převod float na String valueof(int i); // převod int na String valueof(long l); // převod long na String valueof(object o); // převod Object na String (volá jeho metodu tostring() ) Konverze String na jiné datové typy Pro převod řetězce na hodnotu jiného datového typu je zapotřebí použít metod ze tříd Byte, Integer, Long, Double, Float, Boolean, Short z balíku java.lang umožňující pracovat s primitivními datovými typy jako s objekty. Všechny tyto třídy obsahují příslušnou verzi metody valueof(), která vrací řetězec zkonvertovaný na příslušnou třídu datového typu: public static Integer valueof(string s) public static Double valueof(string s) public static Float valueof(string s) public static Long valueof(string s) public static Boolean valueof(string s) public static Byte valueof(string s) public static Short valueof(string s) String strfloat = 12.78. ; float novy = Float.valueOf(strfloat).floatValue() public int intvalue() public double doublevalue() public float floatvalue() public long longvalue() public boolean booleanvalue() public byte bytevalue() public byte shortvalue() // v proměnné novy je číslo 12.78 typo float