Het gegevenstype wordt bepaald door drie componenten:
De programmeertaal bevat een aantal vooraf gedefinieerde ingebouwde typen en stelt programmeurs in staat hun eigen aangepaste typen te definiëren.
In Java zijn gegevenstypen onderverdeeld in primitief en referentieel.
"Primitief" betekent dat het verder issplitsing is onmogelijk. Breidt de programmeertaal uit of wijzigt deze niet. Dit gegevenstype wordt beschreven door primitieve en andere gebruikerstypen.
Een variabele van het primitieve type bevat een waarde en een referentie bevat het adres van een object in het geheugen.
Samengestelde gegevens zijn onderverdeeld in klassen, interfaces en arrays. De leden van het interfacetype zijn abstracte methoden en constanten. In Java worden datum- en tijdgegevenstypen gespecificeerd door de Date () constructor:
Een voorbeeld van een link is ook een string.
Een tekenreeks is een klasse die is gedefinieerd in de Java-bibliotheek en die kan worden gebruikt om met tekst (een reeks tekens) te werken.
De declaratie van de referentie String-variabele is als volgt: String str.
Voordat u een objectverwijzing aan een dergelijke variabele toewijst, moet u deze maken met de nieuwe operator. U kunt bijvoorbeeld een object van klasse String maken met de tekst "Hallo":
Wat gebeurt er als deze code wordt uitgevoerd?Eerst wordt geheugen toegewezen en de naam str wordt geassocieerd met deze geheugencel. Dit is niet anders dan het declareren van een primitieve variabele. Het tweede codefragment creëert een String-object in het geheugen met de tekst "Hallo" en slaat er een link naar op (of een geheugenadres) in str.
Java-referentiegegevenstypen zijn ook toegestaanwijs een verwijzing toe aan een object dat is opgeslagen in de ene variabele, een andere. Beiden verwijzen naar hetzelfde object in het geheugen. Dit kan als volgt worden bereikt:
Er is een null-permalink die aan elke referentievariabele kan worden toegewezen. Het verwijst niet naar een object.
Met de nieuwe operator wordt een String-object gemaakt.Maar aangezien snaren vaak worden gebruikt, is er een eenvoudigere manier om er een te maken. Alle letterlijke tekenreeksen, d.w.z. een reeks tekens tussen dubbele aanhalingstekens, worden behandeld als String-objecten. Daarom kunnen in plaats van de nieuwe operator tekenreeksen worden gebruikt:
Primitieve Java-gegevenstypen - byte, kort, int,long, char, float, double en boolean. Ze zijn onderverdeeld in twee categorieën: logisch en numeriek. Deze laatste kunnen worden onderverdeeld in gehele getallen en drijvende-kommagetallen.
Java integer-gegevenstypen zijn numerieke typen waarvan de waarden gehele getallen zijn. Er zijn er vijf: byte, short, int, long en char.
Int is een 32-bits primitief gegevenstype. De variabele neemt 32 bits geheugen in beslag. Het geldige bereik is van -2147483648 tot 2147483647 (-231 maximaal 231 - 1). Alle gehele getallen in dit bereik zijn letterlijke getallen of constanten. 10, -200, 0, 30, 19 zijn bijvoorbeeld letterlijke int. Ze kunnen worden toegewezen aan een int-variabele:
Gehele literalen kunnen worden uitgedrukt als binaire, octale, decimale en hexadecimale getallen.
Wanneer een letterlijke letter begint bij nul en ten minste twee cijfers heeft, wordt deze beschouwd als geschreven in octaal formaat. 0 en 00 vertegenwoordigen dezelfde waarde - nul.
Alle int-literalen in hexadecimale indeling beginnen met 0x of 0x en ze moeten ten minste één hexadecimaal cijfer bevatten:
Int literals in binair formaat beginnen met 0b of 0B:
Dit is een 64-bits ondertekend primitief type. Het wordt gebruikt wanneer het resultaat van berekeningen het bereik van int kan overschrijden. Lange afstand - van -263 maximaal 263- 1. Alle gehele getallen in dit bereik zijn lettertypes van het lange type.
Om int en lange gegevenstypen in Java te onderscheiden, eindigt een letterlijke van het laatste type altijd met L of l.
Lange integers kunnen ook worden uitgedrukt in octale, hexadecimale en binaire formaten.
Wanneer een lange letterlijke waarde is toegewezen aan een lange variabele,de Java-compiler controleert de toegewezen waarde en zorgt ervoor dat deze binnen een acceptabel bereik ligt; anders zal er een compilatiefout optreden.
Aangezien het int-bereik minder dan lang is,de waarde van een int-variabele kan altijd worden toegewezen aan een variabele van het type long. Maar omgekeerde toewijzing is niet mogelijk, zelfs niet binnen het bereik van int. Hiervoor wordt een expliciete verwijzing gebruikt:
Byte is een primitief type met 8 bits. Het bereik is van -128 tot 127 (-27 maximaal 27 - 1). Dit is het kleinste type integer dat beschikbaar is in Java.In de regel worden bytevariabelen gebruikt wanneer een programma veel waarden in het bereik van -128 tot 127 gebruikt, of wanneer met binaire gegevens wordt gewerkt. In tegenstelling tot int en lange literalen, ontbreken byte-literalen. U kunt echter een bytevariabele toewijzen aan elke letterlijke int, omdat deze het bytebereik overschrijft.
Als de waarde van de variabele buiten het bereik valt, genereert Java een compileerfout.
Bovendien kunt u alleen een letterlijke int toewijzen, maar niet de waarde die is opgeslagen in de variabele int, omdat dit kan leiden tot verlies van precisie. Dit vereist een expliciet type cast.
Vertegenwoordigt een 16-bits primitief gegevenstype met geheel getal. Het bereik is van -32768 tot 32767 (of -215 maximaal 215 - 1).
Over het algemeen is er behoefte aan korte variabelentreedt op wanneer het programma een groot aantal waarden gebruikt die het opgegeven bereik niet overschrijden. Er is geen korte letterlijke tekst, maar toewijzing van elke letterlijke int binnen de korte reeks is mogelijk. De waarde van een bytevariabele kan altijd worden toegewezen. De rest van de regels voor het toewijzen van een int of lange korte variabele is hetzelfde als voor byte.
Char is 16-bit ongetekendeen primitief gegevenstype dat een Unicode-teken vertegenwoordigt. Het ontbreken van een teken betekent dat de variabele geen negatieve waarde kan hebben. Het bereik is van 0 tot 65535, wat hetzelfde is als de Unicode-tekensetcodering. Een letterlijke vertegenwoordigt een char-waarde en kan worden uitgedrukt in de volgende vormen:
Een symbool kan worden uitgedrukt door het in te sluitenenkele aanhalingstekens: char C1 = "A". Dubbele aanhalingstekens geven een letterlijke tekenreeks aan die niet kan worden toegewezen aan een char-variabele, zelfs als de tekenreeks uit slechts één teken bestaat. Dit is niet toegestaan omdat er geen verwijzing naar een primitieve variabele is toegewezen. Alle letterlijke tekenreeksen zijn objecten van de klasse String en zijn daarom verwijzingen, terwijl letterlijke lettertypen van een primitief type zijn.
De letterlijke uitdrukking van de escape-reeks wordt geschreven als een backslash met het teken tussen enkele aanhalingstekens. Er zijn er acht: ‘n’, ‘r’, ‘f’, ‘b’, ‘t’, ‘\’, ‘’ ’,‘ ’’.
Unicode-besturingssequentie heeft de vorm"uxxxx", waarbij u (de backslash gevolgd door de kleine letter u) het begin aangeeft, en xxxxx staat voor precies vier hexadecimale cijfers van de tekencode in het Unicode-systeem. 'A' heeft bijvoorbeeld een waarde van 65 in decimaal en 41 in hex. Dit symbool kan dus worden weergegeven als "u0041".
De octale escape-reeks wordt geschreven als "nnn", waarbij n het octale cijfer (0-7) is. Het waardebereik is van "00" tot "377", waarbij 3778 komt overeen met 25510. Daarom wordt het gebruikt om te vertegenwoordigentekens met een code van 0 tot 255, noodzakelijk voor compatibiliteit met andere programmeertalen. In tegenstelling tot een Unicode-reeks, waar alle vier hexadecimale cijfers nodig zijn, kunt u hier 1, 2 of 3 octaal gebruiken: "n", "nn" of "nnn".
Boolean heeft slechts twee geldige waarden:waar (waar) en onwaar (onwaar). Ze worden Booleaanse literalen genoemd. Een logische variabele kan niet naar een ander type worden gegoten en vice versa. Java bepaalt niet de grootte van boolean - het hangt af van de specifieke implementatie van de virtuele Java-machine.
Het nummer dat het fractionele deel in het geheugen bevatEen computer kan worden opgeslagen in een weergave met een vast aantal cijfers voor en na een punt of om zijn positie aan te geven. Omdat het aantal cijfers kan variëren, zeggen ze dat het punt "zweeft".
In Java gebruiken datatypen met drijvende komma 32 bits. Volgens de IEEE 754-standaard komt dit overeen met een enkele precisie, waardoor bijvoorbeeld de getallen 1,4 x 10 kunnen worden weergegeven-45 en 3,4 x 1038zowel positief als negatief.
Alle reële getallen die eindigen op f of F worden float-literals genoemd. Ze kunnen worden weergegeven in decimaal formaat en als wetenschappelijke notatie. Bijvoorbeeld:
Het type definieert twee nullen: + 0,0F (of 0,0F) en -0,0F.Voor vergelijkingsdoeleinden worden beide nullen echter als gelijk beschouwd. Daarnaast definieerde hij twee soorten oneindigheid: positief en negatief. De resultaten van sommige bewerkingen (bijvoorbeeld 0,0F delen door 0,0F) zijn niet gedefinieerd en worden weergegeven door de speciale waarde NaN.
Double gebruikt 64 bits om getallen met drijvende komma op te slaan. Een dubbel precisienummer kan positieve en negatieve waarden van 4,9 x 10 vertegenwoordigen-324 en 1,7 x 10308.
Alle echte nummers zijn standaarddubbele literals. Optioneel kunnen ze expliciet worden aangegeven met het achtervoegsel d of D, bijvoorbeeld 19.27d. Een dubbele letterlijke letter kan worden uitgedrukt in decimale vorm en in wetenschappelijke notatie.