arckép

Neuwirth István

programtervező informatikus MSc – ELTE

Computational and Software Techniques MSc – Cranfield, UK

Elérhetőség
pitta2@gmail.com
+36 30 329 3039

Valid XHTML 1.0 Transitional

Valid CSS!

1. óra (2012.09.11.)

Diák

gyak1.pdf

Feladatok

Hello Java World

Parancssori argumentumok listázása

Standard outputra, illetve standard errorra írás, futtatásnál átirányítás külön fájlokba Megjegyzés: a valóságban a System.out.println és társai ritkán használtak, helyettük logolásra alkalmas könyvtárakat használunk, de ezek nem képezik a tantárgy anyagát.

Java programok fordítása, futtatása

A Java fordító például a C++-tól eltérően nem állít elő natív gépi kódot, így az közvetlenül nem is futtatható, a lefordított bájtkód végrehajtását a Java Virtuális Gép (JVM) végzi. A virtuális géppel való futtatáshoz a java parancsot szükséges kiadnunk, azonban paraméterként nem fájlnevet vár, hanem osztálynevet (lásd az alábbi példákban).

Fájl elnevezése: egy fájlba egy publikus osztály kerülhet, amelynek meg kell egyeznie a fájl kiterjesztés nélküli nevével. Azaz például a

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

programkód egy HelloWorld.java fájlba kell, hogy kerüljön. Ebben az esetben a fordítás és futtatás nagyon egyszerű (tegyük fel, hogy a fájlt tartalmazó könyvtárban "álunk"):

javac HelloWorld.java
java HelloWorld

Fontos: fordításnál a fájlnév relatív elérési útvonallal, futtatáskor az osztálynév (ha csomagba ágyazott, akkor minősített névvel).

Vezérlési szerkezetek szintaxisa

Kb. C++.

// elágazás
if (boolean_kifejezés) {
  // utasítások 
} else if (boolean_kifejezés) {
  // utasítások
} else {
  // utasítások 
}

// többágú elágazás (switch)
switch (vmi) {
  case vmi1:
    // utasítások
  case vmi2:  
    // utasítások
  case vmi3:
    // utasítások
    break;
  default:
  // utasítások
}

/* alkalmazható típusok (itt a vmi típusa): byte, short, char, int 
és csomagolóosztályaik (Byte, Short, Character, Integer), enum-ok és Java 7-től String-ek */

// for ciklus
for (int i = 0; i < 10; i++) {
  // utasítások
}

// elöltesztelős ciklus
while (boolean_kifejezés) {
  // utasítások
}

// hátultesztelős ciklus
do {
  // utasítások
} while (boolean_kifejezés);

/* Ciklusokhoz: van break (címkézhető is!) és continue is. */

Konvenciók

Indentálás (tabolás): lásd a vezérlési szerkezetek példáit.

Névkonvenció: csomagnevek csupa kicsivel, osztálynevek PascalCase stílusban, metódus- és változónevek camelCase stílusban.

Alaptípusok

Primitív típusok: byte, short, int, long, float, double, boolean, char. Ezek csak értékek! A végrehajtási vermen foglalódnak, közvetlenül nem érhetők el rajtuk műveletek (pl. toString, parse műveletek). Megjegyzés: mindegyik számot reprezentáló típus előjeles, nincs unsigned.

Csomagolóosztályok: a fentiekhez tartozó Byte, Short, Integer, Long, Float, Double, Boolean, Character osztályok.

int i = 5;
Integer iWrapper = Integer.valueOf(i);
String string = iWrapper.toString();
// vagy
Integer iWrapper = Integer.valueOf(5);
String string = iWrapper.toString();
// lehetne, de inkább ne használjuk (lásd beépített cachek):
Integer iWrapper = new Integer(i);

String osztály (nincs hozzá tartozó primitív típus (mi is lenne?...)).

Csomagok

Hierarchikus egymásbaágyazás, a csomagok hierarchiáját reprezentálja a forráskódokhoz tartozó könyvtárszerkezet. Lásd a csomagos és az állatos feladatot.

Szemétgyűjtő (Garbage Collector)

Egy egész jó leírás: http://hu.wikipedia.org/wiki/Garbage_collection.

Vissza