Java kent meer dan drie soorten variabelen, maar deze kunnen grofweg op verschillende manieren worden gecategoriseerd. Er bestaat geen universeel overeengekomen set van *drie* categorieën, maar hier zijn drie gebruikelijke manieren om ze te groeperen, die elk een iets ander perspectief bieden:
1. Op gegevenstype: Dit is de meest voorkomende categorisering. We kunnen variabelen groeperen in drie brede gegevenstypen:
* Primitieve gegevenstypen: Deze bevatten rechtstreeks eenvoudige waarden. Voorbeelden hiervan zijn `int` (geheel getal), `float` (zwevende-kommagetal), `double` (zwevende-kommagetal met dubbele precisie), `char` (teken), `boolean` (waar/onwaar), `byte`, `short`, `long`.
* Referentietypen (objecten): Deze bevatten geheugenadressen (referenties) die verwijzen naar objecten die elders in het geheugen zijn opgeslagen. Voorbeelden hiervan zijn 'String', 'Integer', aangepaste klassen en arrays.
* Null: Dit is een speciaal type dat de afwezigheid van een waarde aangeeft. Aan een variabele van elk referentietype kan de waarde 'null' worden toegewezen.
2. Per bereik (waar ze toegankelijk zijn): Hier kunnen we identificeren:
* Lokale variabelen: Gedeclareerd in een methode of codeblok. Ze zijn alleen toegankelijk binnen dat specifieke blok.
* Instancevariabelen (lidvariabelen): Gedeclareerd binnen een klasse, maar buiten elke methode. Ze zijn gekoppeld aan elke instantie (object) van de klasse.
* Klassevariabelen (statische variabelen): Gedeclareerd met het trefwoord 'statisch'. Ze behoren tot de klasse zelf, niet tot individuele objecten, en worden gedeeld door alle instanties.
3. Op veranderlijkheid: Dit wordt minder vaak gebruikt voor primaire categorisatie, maar is conceptueel belangrijk:
* Onveranderlijke variabelen: Hun waarde kan niet worden gewijzigd nadat ze zijn geïnitialiseerd (strings zijn bijvoorbeeld onveranderlijk, hoewel stringreferenties kunnen veranderen waarnaar ze verwijzen).
* Veranderlijke variabelen: Hun waarde kan na initialisatie worden gewijzigd (de meeste primitieve typen en objecten zijn veranderlijk).
* Effectief onveranderlijk: Variabelen die zijn ontworpen om onveranderlijk te lijken, zelfs als hun onderliggende componenten veranderlijk zijn. Meestal gaat het hierbij om defensief kopiëren of het zorgvuldig controleren van de toegang tot aanpasbare componenten.
Daarom kunt u, afhankelijk van uw criteria, drie verschillende groeperingen kiezen. De "By Data Type"-benadering komt het vaakst voor bij het classificeren van variabelen in inleidend Java-materiaal. |