Základy programování v jazyce Java. Objektově orientované programování, datové typy, řídící struktury, třídy a objekty.
Programování v Javě je základní povinný předmět FIS. Naučíš se objektově orientované programování (OOP) od nuly na jazyce Java. Předmět tvoří základ pro většinu dalších IT předmětů.
Proměnné a datové typy:
int, long, double, float, boolean, char, byte, shortString, pole (int[]), objektyint ↔ Integer, double ↔ Double// Podmínky
if (x > 0) { ... } else if (x < 0) { ... } else { ... }
// Cykly
for (int i = 0; i < 10; i++) { ... }
while (podminka) { ... }
do { ... } while (podminka);
for (String s : seznam) { ... } // foreach
// Switch
switch (hodnota) {
case 1: ...; break;
default: ...;
}
Třída a objekt:
public class Osoba {
// Atributy (fields)
private String jmeno;
private int vek;
// Konstruktor
public Osoba(String jmeno, int vek) {
this.jmeno = jmeno;
this.vek = vek;
}
// Metody
public String getJmeno() { return jmeno; }
public void setJmeno(String jmeno) { this.jmeno = jmeno; }
@Override
public String toString() {
return jmeno + " (" + vek + ")";
}
}
// Použití
Osoba o = new Osoba("Jan", 22);
System.out.println(o.getJmeno()); // Jan
Dědičnost:
public class Student extends Osoba {
private String obor;
public Student(String jmeno, int vek, String obor) {
super(jmeno, vek); // volání konstruktoru rodiče
this.obor = obor;
}
@Override
public String toString() {
return super.toString() + " [" + obor + "]";
}
}
Rozhraní (Interface):
public interface Tisknutelny {
void tiskni(); // abstraktní metoda
default String format() { return "výchozí"; } // default metoda
}
public class Dokument implements Tisknutelny {
@Override
public void tiskni() { System.out.println("Tisknu..."); }
}
Abstraktní třída:
public abstract class Tvar {
public abstract double plocha(); // musí přepsat potomek
public void vypis() {
System.out.println("Plocha: " + plocha());
}
}
import java.util.*;
// ArrayList — dynamické pole
List seznam = new ArrayList<>();
seznam.add("alfa");
seznam.get(0);
seznam.size();
Collections.sort(seznam);
// HashMap — slovník klíč→hodnota
Map mapa = new HashMap<>();
mapa.put("alfa", 1);
mapa.get("alfa");
mapa.containsKey("alfa");
for (Map.Entry e : mapa.entrySet()) {
System.out.println(e.getKey() + "=" + e.getValue());
}
// HashSet — množina (bez duplicit)
Set mnozina = new HashSet<>();
mnozina.add(5);
mnozina.contains(5);
try {
int x = Integer.parseInt("abc"); // NumberFormatException
} catch (NumberFormatException e) {
System.out.println("Chyba: " + e.getMessage());
} finally {
// vždy se provede
}
// Vlastní výjimka
public class MojeVyjimka extends RuntimeException {
public MojeVyjimka(String zprava) { super(zprava); }
}
throw new MojeVyjimka("Nastala chyba");
import java.io.*;
import java.nio.file.*;
// Čtení souboru
List radky = Files.readAllLines(Path.of("soubor.txt"));
// Zápis souboru
Files.writeString(Path.of("output.txt"), "obsah");
// BufferedReader pro velké soubory
try (BufferedReader br = new BufferedReader(new FileReader("soubor.txt"))) {
String radek;
while ((radek = br.readLine()) != null) {
System.out.println(radek);
}
}
== pro String — vždy používej .equals()null reference → NullPointerException, vždy kontroluj(int) 3.7 = 3 (ořezává, nezaokrouhluje)static metody/atributy patří třídě, ne instancifinal proměnná = konstanta (nelze přiřadit znovu)private < protected < public (package-private bez modifikátoru)Používej Markdown: ## Nadpis, **tučně**, `kód`, - odrážky, > citace