Introduktion til Java Primitives

1. Oversigt

Java Programming Language har otte primitive datatyper.

I denne artikel husker vi, hvad primitiver er, og går over dem.

2. Primitive datatyper

De otte primitiver defineret i Java er int, byte, kort, lang, flyde, dobbelt, boolskog char - disse betragtes ikke som objekter og repræsenterer rå værdier.

De opbevares direkte på stakken (tjek denne artikel for mere information om hukommelsesstyring i Java).

Lad os se på lagerstørrelse, standardværdier og eksempler på, hvordan man bruger hver type.

Lad os starte med en hurtig reference:

TypeStørrelse (bits)MinimumMaksimumEksempel
byte8-2727– 1byte b = 100;
kort16-215215– 1kort s = 30_000;
int32-231231– 1int i = 100_000_000;
lang64-263263– 1lang l = 100_000_000_000_000;
flyde32-2-149(2-2-23)·2127flyde f = 1,456f;
dobbelt64-2-1074(2-2-52)·21023dobbelt f = 1,456789012345678;
char160216– 1char c = ‘c’;
boolsk1boolsk b = sand;

2.1. int

Den første primitive datatype, vi skal dække, er int. Også kendt som et heltal, int typen indeholder en bred vifte af ikke-brøktalværdier.

Specifikt Java gemmer det ved hjælp af 32 bit hukommelse. Med andre ord kan det repræsentere værdier fra -2,147,483,648 (-231) til 2,147,483,647 (231-1).

I Java 8 er det muligt at gemme en usigneret heltalværdi op til 4.294.967.295 (232-1) ved hjælp af nye specielle hjælperfunktioner.

Vi kan simpelthen erklære en int ganske enkelt:

int x = 424_242; int y;

Standardværdien af ​​en int erklæret uden en opgave er 0.

Hvis variablen er defineret i en metode, skal vi tildele en værdi, før vi kan bruge den.

Vi kan udføre alle standard aritmetiske operationer på ints. Bare vær opmærksom på det decimalværdier hugges af når du udfører disse på heltal.

2.2. byte

byte er en primitiv datatype, der ligner int, undtagen det tager kun 8 bit hukommelse. Derfor kalder vi det en byte. Fordi hukommelsesstørrelsen er så lille, byte kan kun holde værdierne fra -128 (-27) til 127 (27 - 1).

Vi kan skabe byte:

byte b = 100; byte tom;

Standardværdien af byte er også 0.

2.3. kort

Det næste stop på vores liste over primitive datatyper i Java er kort.

Hvis vi vil spare hukommelse og byte er for lille, kan vi bruge typen halvvejs mellem de to: kort.

Ved 16 bit hukommelse er det halvt så stort som int og dobbelt så stort som byte. Dets række af mulige værdier er -32.768 (-215) til 32.767 (215-1).

kort erklæres således:

kort s = 202_020; shorts;

Svarende til de andre typer er standardværdien 0. Vi kan også bruge al standard aritmetik på den.

2.4. lang

Vores sidste primitive datatype relateret til heltal er lang.

lang er storebror til int. Det er gemt i 64 bit hukommelse så det kan indeholde et betydeligt større sæt mulige værdier.

De mulige værdier for en lang er mellem -9.223.372.036.854.775.808 (-263) til 9.223.372.036.854.775.807 (263 - 1).

Vi kan simpelthen erklære en:

lang l = 1_234_567_890; lang l;

Som med andre heltalstyper er standard også 0. Vi kan bruge al aritmetik til lang det fungerer videre int.

2.5. flyde

Vi repræsenterer grundlæggende brøktal i Java ved hjælp af flyde type. Dette er et decimaltal med en præcision. Hvilket betyder, at hvis vi kommer forbi seks decimaler, bliver dette tal mindre præcist og mere af et skøn.

I de fleste tilfælde er vi ligeglade med præcisionstabet. Men hvis vores beregning kræver absolut præcision (dvs. økonomiske operationer, landing på månen osv.), Er vi nødt til at bruge specifikke typer designet til dette arbejde. For mere information, se Java-klassen Big Decimal.

Denne type er gemt i 32 bit hukommelse ligesom int. På grund af det flydende decimalpunkt er dets rækkevidde dog meget forskelligt. Det kan repræsentere både positive og negative tal. Den mindste decimal er 1.40239846 x 10-45, og den største værdi er 3.40282347 x 1038.

Vi erklærer flydeer det samme som enhver anden type:

flyde f = 3.145f; flyde f;

Og standardværdien er 0,0 i stedet for 0. Bemærk også, at vi tilføjer f betegnelse til slutningen af ​​det bogstavelige tal for at definere en float. Ellers kaster Java en fejl, fordi standardtypen for en decimalværdi er dobbelt.

Vi kan også udføre alle standard aritmetiske operationer på flydes. Det er dog vigtigt at bemærke, at vi udfører flydende aritmetik meget forskelligt end heltal aritmetik.

2.6. dobbelt

Dernæst ser vi på dobbelt - navnet kommer fra det faktum, at det er et decimaltal med dobbelt præcision.

Det er gemt i 64 bit hukommelse. Hvilket betyder, at det repræsenterer et meget større udvalg af mulige tal end flyde.

Selvom det lider under den samme præcisionsbegrænsning som flyde gør. Området er 4.9406564584124654 x 10-324 til 1.7976931348623157 x 10308. Dette interval kan også være positivt eller negativt.

Erklæring dobbelt er det samme som andre numeriske typer:

dobbelt d = 3.13457599923384753929348D; dobbelt d;

Standardværdien er også 0,0 som den er med flyde.Svarende til flyde, vi vedhæfter brevet D at betegne det bogstavelige som et dobbelt.

2.7. boolsk

Den enkleste primitive datatype er boolsk. Den kan kun indeholde to værdier: rigtigt eller falsk. Den gemmer sin værdi i en enkelt bit.

For nemheds skyld placerer Java dog værdien og gemmer den i en enkelt byte.

Erklære boolsk sådan her:

boolsk b = sand; boolsk b;

At erklære det uden en værdi er som standard falsk. boolsk er hjørnestenen i at kontrollere vores programflow. Vi kan bruge boolske operatører på dem (dvs. og, eller etc.).

2.8. char

Den sidste primitive datatype at se på er char.

Også kaldet et tegn, char er et 16-bit heltal, der repræsenterer et Unicode-kodet tegn. Dens rækkevidde er fra 0 til 65.535. Hvilket i Unicode repræsenterer '\ U0000' til '\ Uffff'.

For en liste over alle mulige Unicode-værdier, se websteder som Unicode Table.

Lad os nu erklære en char:

char c = 'a'; char c = 65; char c;

Når vi definerer vores variabler, kan vi bruge enhver bogstavelig bogstav, og de transformeres automatisk til deres Unicode-kodning for os. Standardværdien for et tegn er '/ U0000'.

2.9. Flyde over

De primitive datatyper har størrelsesgrænser. Men hvad sker der, hvis vi prøver at gemme en værdi, der er større end den maksimale værdi?

Vi løber ind i en situation, der kaldes flyde over.

Når et heltal overløber, ruller det over til minimumsværdien og begynder at tælle op derfra.

Flydende nummer nummeroverløb ved at returnere Infinity. Når de understrømmer, returnerer de 0,0.

Her er et eksempel:

int i = Integer.MAX_VALUE; int j = i + 1; // j vil rulle over til -2_147_483_648 dobbelt d = Double.MAX_VALUE; dobbelt o = d + 1; // o vil være uendelig

Underflow er det samme problem, undtagen hvis vi gemmer en værdi, der er mindre end minimumsværdien.

2.10. Autoboxing

Hver primitive datatype har også en fuld implementering af Java-klassen, der kan pakke den ind. For eksempel Heltal klasse kan pakke en int. Der er undertiden behov for at konvertere fra den primitive type til dens objektindpakning (f.eks. Ved hjælp af dem med generiske stoffer).

Heldigvis kan Java udføre denne konvertering automatisk for os. Vi kalder denne proces Autoboxing. Her er et eksempel:

Tegn c = 'c'; Heltal i = 1;

3. Konklusion

I denne vejledning har vi dækket de otte primitive datatyper, der understøttes i Java.

Dette er byggestenene, der bruges af de fleste, ikke alle Java-programmer derude - så det er værd at forstå, hvordan de fungerer.