Informatika4-2018/Gyakorlat4

A MathWikiből
(Változatok közti eltérés)
40. sor: 40. sor:
 
     }
 
     }
 
</java>
 
</java>
 +
 +
== Primitív típusok ==
 +
Az alábbi típusok ''primitívek'', azaz a szóbanforgó értéket közvetlnül tárolják.
 +
 +
[[Fájl:Data-types-in-java.jpg]]
 +
 +
Minden más típus (pl '''String''', '''int[]''', saját osztály) referencia, azaz az objektumra mutatnak.
 +
 +
== Értékek megváltoztatása ==
 +
Ez például azt vonja maga után, hogy ha egy tömböt (nem-primitív értéket) így átírunk:
 +
<java>
 +
int[] x = new int[5];
 +
x[0] = 1
 +
x[1] = 2
 +
int[] y = x;
 +
y = new int [10];
 +
</java>
 +
Akkor '''y''' nem írja felül '''x'''-et, csupán mostantól másra mutat az '''y'''.
 +
 +
Hasonló okokból lehet két változót összekapcsolni.
 +
<java>
 +
int[] x = new int[5];
 +
int[] y = x;
 +
 +
x[0] = 1
 +
x[1] = 2
 +
 +
</java>
 +
Ekor az utolsó két parancs '''y'''-ra is hatéssal van, mert lényegében ők ugyan azok (ugyan arra referálnak).
  
 
[[Informatika4-2018/Gyakorlat3|Előző]] - [[Informatika4-2018#Gyakorlat|Fel]] - [[Informatika4-2018/Gyakorlat5|Következő]]
 
[[Informatika4-2018/Gyakorlat3|Előző]] - [[Informatika4-2018#Gyakorlat|Fel]] - [[Informatika4-2018/Gyakorlat5|Következő]]

A lap 2018. október 3., 11:52-kori változata

Előző - Fel - Következő

Referencia, Konstansság

Legyen Osztaly egy java osztály, mindegy is, hogy mi van benne. Tegyük fel, hogy van egy setName metódusa, ami valamilyen adattagot megváltoztat az osztályban.

public class Osztaly
{
    private String string_;
    public Osztaly()
    {
    }
    public void SetName(String newName)
    {
        string_ = newName;
    }
    public String GetName()
    {
        return string_;
    }
}

Mit kezdhetünk ezzel az osztállyal egy tömbben:

    public static void main(String[] args)
    {
        Osztaly[] tomb = new Osztaly[3];
        tomb[0] = new Osztaly();        // létrehozok egy üres példányt
        tomb[0].SetName("Steve");       // átállíthatunk egyes adatokat benne
 
        tomb[1] = new Osztaly();
        tomb[1].SetName("Stefan");
        tomb[2] = new Osztaly();
        tomb[2].SetName("Istvan");
 
        Osztaly x = tomb[0];
        x = new Osztaly();
 
        System.out.println(tomb[0].GetName()); // ez az eredeti nevet tartalmazza, nem sikerült felülírni!
    }

Primitív típusok

Az alábbi típusok primitívek, azaz a szóbanforgó értéket közvetlnül tárolják.

Data-types-in-java.jpg

Minden más típus (pl String, int[], saját osztály) referencia, azaz az objektumra mutatnak.

Értékek megváltoztatása

Ez például azt vonja maga után, hogy ha egy tömböt (nem-primitív értéket) így átírunk:

int[] x = new int[5];
x[0] = 1
x[1] = 2
int[] y = x;
y = new int [10];

Akkor y nem írja felül x-et, csupán mostantól másra mutat az y.

Hasonló okokból lehet két változót összekapcsolni.

int[] x = new int[5];
int[] y = x;
 
x[0] = 1
x[1] = 2

Ekor az utolsó két parancs y-ra is hatéssal van, mert lényegében ők ugyan azok (ugyan arra referálnak).

Előző - Fel - Következő

Személyes eszközök