Řetězce (String
)
- uchovávání posloupnosti znaků: typ
String
- už je trochu známe, cokoliv v uvozovkách je
String
: "řetězec"
-
args
z main()
je pole řetězců
- funguje na nich operátor
+
- porovnání metodou
.equals()
String a = "ahoj";
String b = "svete";
if (a.equals(b)) {
System.out.printf("a a b jsou stejne!\n");
}
- výpis v
printf()
pomocí %s
String jmeno = "Lojza";
System.out.printf(" Jmeno: %s\n", jmeno);
Zajímavé metody
- velké množství funkcí, vizte dokumentaci, níže je výběr
-
startsWith
- zda-li začíná stejně jako jiný řetězec
-
substring
- vydá podřetězec s daným začátkem a koncem (začátek a konec jsou index na jednotlivé znaky)
-
toLowerCase
, toUpperCase
- převod na malá (velká) písmena
-
trim
- oseká nadbytečné mezery na začátku a konci řetězce
-
split
- rozdělí na více podřetězců
- umí i regulární výrazy
-
String.format
- vytvoří nový řetězec z formátovaného vstupu (
printf
, ale netiskne se na obrazovku, ale do řetězce)
Balíčky (packages)
- další členění programů (jejich částí) do logických skupin
- balíček je určen v záhlaví programu
package mujbalicek;
public class TridaVMemBalicku {
}
- konvence jmen balíčků
- malá písmena (třídy začínají velkým písmenem)
- odvozeny od domovské stránky
- např.
com.google.blablabla
- pro naše účely můžeme používat např.
cz.alej.prog.prijmeni.lekceX
- (pod)balíčky jsou oddělené tečkou
- IDE většinou vyžaduje novou vrstvou adresářů
- pod
java.
jsou tzv. systémové balíčky (např. Scanner
je v java.util
)
- důvody
- další logické členění
- prevence kolize jmen
- organizace souborů na disku
- pokud balíček uveden není, jde o tzv. default package, který je
prázdný
- používání
java.util.Scanner
bylo použití třídy Scanner
z balíčku
java.util
- ušetření psaní
- abychom nevypisovali vždy celé jméno balíčku (protože úrovní vnoření
je často kolem 5-8)
- deklarace
import
na začátku souboru
package mujbalicek;
import java.util.Scanner;
public class MojeTrida {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/* ... */
}
}
Příklad
src/
src/cz/
src/cz/alisma/
src/cz/alisma/alej/
src/cz/alisma/alej/prog/
src/cz/alisma/alej/prog/lekceXY/
src/cz/alisma/alej/prog/lekceXY/Priklad.java
- a odpovídající soubor
Priklad.java
package cz.alisma.alej.prog.lekceXY;
public class Priklad {
public static void main(String[] args) {
/* ... */
}
}
java cz.alisma.alej.prog.lekceXY.Priklad
JUnit: unit testovací knihovna pro Javu
- Domovská stránka
- budeme používat verzi 4
- přidáváme do speciální třídy následující metody a JUnit
je automaticky spustí a vyhodnotí
@Test
public void getCoefficientQuadratic() {
Mnohoclen a = new Mnohoclen(1, 2, 1);
assertEquals(16, a.hodnota(3));
}
java -cp .:junit.jar org.junit.runner.JUnitCore TestMnohocleny
-
@Test
je speciální zápis, který uvozuje test
- je to tzv. anotace, ale to nás teď nemusí trápit
- pak je obvyklá
void
metoda
- v jejím těle spustíme nějaký kód a ověříme, že vše funguje
- v tomto příkladu:
- vytvoříme objekt
Mnohoclen
pro práci s mnohočleny
- voláním
assertEquals(ocekavane, skutecne)
testujeme, že
- k čemu to je?
- testy napíšeme jednou, kód upravujeme a opravujeme vícekrát
- pokud nejdříve napíšeme testy, tak si vlastně rozmyslíme, jak
budou naše třídy používány
- chrání nás před zavlečenými chybami
- tj. z míst zdánlivě s naším kódem nesouvisející