English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Controllo dei flussi Java

Array Java

Orientamento ad oggetti Java (I)

Orientamento ad oggetti Java (II)

Orientamento ad oggetti Java (III)

Java 異常處理

Liste Java

Queue (coda) Java

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Java 基本數據類型

Una variabile è l'allocazione della memoria per memorizzare valori. Ciò significa che quando si crea una variabile, è necessario richiedere spazio nella memoria.

Il sistema di gestione della memoria assegna spazi di archiviazione alle variabili in base al loro tipo, e lo spazio assegnato può essere utilizzato solo per memorizzare dati di quel tipo.

Pertanto, definendo variabili di diversi tipi, è possibile memorizzare interi, decimali o caratteri nella memoria.

I due principali tipi di dati di Java:

  • Tipi di dati integrati

  • Tipi di dati di riferimento

Tipi di dati integrati

Il linguaggio Java fornisce otto tipi di dati fondamentali. Sei tipi di dati numerici (quattro interi, due numeri a virgola mobile), un tipo di dati carattere e un tipo di dati booleano.

byte:

  • Il tipo di dati byte è un intero a 8 bit, con segno, rappresentato con il codice di complemento a due;

  • Il valore minimo è -128 (-2^7);

  • Il valore massimo è 127 (2^7-1);

  • Il valore predefinito è 0;

  • Il tipo di dati byte viene utilizzato per risparmiare spazio nei grandi array, principalmente per sostituire gli interi, poiché il variabile byte occupa solo un quarto dello spazio del tipo di dati int;

  • Esempio: byte a = 100, byte b = -50.

short:

  •  Il tipo di dati short è un intero a 16 bit, con segno, rappresentato con il codice di complemento a due;

  •  Il valore minimo è -32768 (-2^15);

  •  Il valore massimo è 32767 (2^15 - 1);

  •  Il tipo di dati Short può anche risparmiare spazio come il tipo di dati byte. Un variabile short occupa metà dello spazio di una variabile di tipo int;

  •  Il valore predefinito è 0;

  • Esempio: short s = 1000, short r = -20000.

int:

  • Il tipo di dati int è un intero a 32 bit, con segno, rappresentato con il codice di complemento a due;

  • Il valore minimo è -2,147,483,648 (-2^31);

  • Il valore massimo è 2,147,483,647 (2^31 - 1);

  • In generale, le variabili intere sono di tipo int di default;

  • Il valore predefinito è 0;

  • Esempio: int a = 100000, int b = -200000.

long:

  • Il tipo di dati long è un intero a 64 bit, con segno, rappresentato con il codice di complemento a due;

  • Il valore minimo è -9,223,372,036,854,775,808 (-2^63);

  • Il valore massimo è 9,223,372,036,854,775,807 (2^63 -1);

  • Questo tipo di dati viene principalmente utilizzato nei sistemi che necessitano di rappresentare grandi interi;

  • Il valore predefinito è 0L;

  •  Esempio: long a = 100000L, Long b = -200000L.
    "L" teoricamente non distingue tra maiuscole e minuscole, ma se scritto come "l" è facile confonderlo con il numero "1", non è facile distinguerlo. Pertanto, è meglio scrivere in maiuscolo.

float:

  • Il tipo di dati float è un numero a virgola mobile a singola precisione, 32 bit, conforme allo standard IEEE 754;

  • Il tipo di dati float può risparmiare spazio di memoria quando si memorizzano array di numeri a virgola mobile di grandi dimensioni;

  •  Il valore predefinito è 0.0f;

  •  I numeri a virgola mobile non possono essere utilizzati per rappresentare valori precisi, come la moneta;

  •  Esempio: float f1 = 234.5f.

double:

  • Il tipo di dati double è un numero a virgola mobile a precisione doppia, a 64 bit e conforme allo standard IEEE 754;

  •  Il tipo di dati a virgola mobile predefinito è double;

  •  Il tipo di dati double non può rappresentare valori precisi come i denari;

  •  Il valore predefinito è 0.0d;

  •  Esempio: double d1 = 123.4。

boolean:

  •  Il tipo di dati boolean rappresenta un'informazione di un bit;

  • Ha solo due valori: true e false;

  •  Questo tipo viene utilizzato solo come flag per registrare situazioni true/false;

  •  Il valore predefinito è false;

  •  Esempio: boolean one = true。

char:

  •  Il tipo di dati char è un singolo carattere Unicode di 16 bit;

  •   Il valore minimo è \u0000 (ovvero 0);

  •  Il valore massimo è \uffff (ovvero 65,535);

  •  Il tipo di dati char può memorizzare qualsiasi carattere;

  •  Esempio: char letter = 'A';。

Esempio

Per i tipi di base dei numeri, non dobbiamo ricordare a forza bruta i loro intervalli di valori, perché i loro valori sono già definiti come costanti nelle classi wrapper corrispondenti. Vedi l'esempio seguente:

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // byte  
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
        System.out.println("包装类:java.lang.Byte");  
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
        System.out.println();  
  
        // short  
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
        System.out.println("包装类:java.lang.Short");  
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
        System.out.println();  
  
        // int  
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
        System.out.println("包装类:java.lang.Integer");  
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
        System.out.println();  
  
        // long  
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
        System.out.println("包装类:java.lang.Long");  
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
        System.out.println();  
  
        // float  
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
        System.out.println("包装类:java.lang.Float");  
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
        System.out.println();  
  
        // double  
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
        System.out.println("包装类:java.lang.Double");  
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
        System.out.println();  
  
        // char  
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
        System.out.println("Classe di imballaggio: java.lang.Character");  
        // Output di Character.MIN_VALUE in forma numerica invece che come carattere  
        System.out.println("Valore minimo: Character.MIN_VALUE=");  
                +(int)Character.MIN_VALUE);  
        // Output di Character.MAX_VALUE in forma numerica invece che come carattere  
        System.out.println("Valore massimo: Character.MAX_VALUE=");  
                +(int)Character.MAX_VALUE);  
    }  
}

Il risultato dell'esecuzione del codice compilato è come segue:

Tipo base: byte, bit binari: 8
Classe di imballaggio: java.lang.Byte
Valore minimo: Byte.MIN_VALUE=-128
Valore massimo: Byte.MAX_VALUE=127
Tipo base: short, bit binari: 16
Classe di imballaggio: java.lang.Short
Valore minimo: Short.MIN_VALUE=-32768
Valore massimo: Short.MAX_VALUE=32767
Tipo base: int, bit binari: 32
Classe di imballaggio: java.lang.Integer
Valore minimo: Integer.MIN_VALUE=-2147483648
Valore massimo: Integer.MAX_VALUE=2147483647
Tipo base: long, bit binari: 64
Classe di imballaggio: java.lang.Long
Valore minimo: Long.MIN_VALUE=-9223372036854775808
Valore massimo: Long.MAX_VALUE=9223372036854775807
Tipo base: float, bit binari: 32
Classe di imballaggio: java.lang.Float
Valore minimo: Float.MIN_VALUE=1.4E-45
Valore massimo: Float.MAX_VALUE=3.4028235E38
Tipo base: double, bit binari: 64
Classe di imballaggio: java.lang.Double
Valore minimo: Double.MIN_VALUE=4.9E-324
Valore massimo: Double.MAX_VALUE=1.7976931348623157E308
Tipo base: char, bit binari: 16
Classe di imballaggio: java.lang.Character
Valore minimo: Character.MIN_VALUE=0
Valore massimo: Character.MAX_VALUE=65535

I valori minimi e massimi di Float e Double vengono espressi in notazione scientifica, la fine "E+numero" indica che il numero prima di E deve essere moltiplicato per 10 alla potenza di quante volte.3 =3140, 3.14E-3 è 3.14 x 10-3 =0.00314.

In realtà, in JAVA esiste anche un altro tipo di base void, che ha anche la sua classe di confezione java.lang.Void, ma non possiamo operare su di loro direttamente.

Valore predefinito del tipo

La tabella seguente elenca i valori predefiniti di vari tipi in Java:

Tipo di dativalore predefinito
byte0
short0
int0
long0L
float0.0f
double0.0d
carattere'u0000'
String (o qualsiasi oggetto)null
booleanofalso

Esempio online

public class Test {
    static boolean bool;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i;
    static long l;
    static short sh;
    static String str;
 
    public static void main(String[] args) {
        System.out.println("Bool: " + bool);
        System.out.println("Byte: " + by);
        System.out.println("Character: " + ch);
        System.out.println("Double: " + d);
        System.out.println("Float: " + f);
        System.out.println("Integer: " + i);
        System.out.println("Long: " + l);
        System.out.println("Short: " + sh);
        System.out.println("String: " + str);
    }
}

Esempio di output:

Bool: false
Byte: 0
Character:
Double: 0.0
Float: 0.0
Integer: 0
Long: 0
Short: 0
Stringa: null

 Tipi di riferimento

  •  In Java, le variabili di tipo di riferimento sono molto simili ai puntatori di C/C++. Un tipo di riferimento punta a un oggetto, e la variabile che punta all'oggetto è una variabile di riferimento. Queste variabili sono specificate con un tipo specifico al momento della dichiarazione, come Employee, Puppy, ecc. Una volta dichiarata, il tipo non può essere cambiato.

  • Gli oggetti e gli array sono tipi di dati di riferimento.

  •  Il valore predefinito di tutti i tipi di riferimento è null.

  •  Una variabile di riferimento può essere utilizzata per riferirsi a qualsiasi tipo compatibile.

  •  Esempio: Site site = new Site("w3codebox").

Costanti Java

Le costanti non possono essere modificate durante l'esecuzione del programma.

In Java, per修饰常量,使用 final chiave, il modo di dichiarazione è simile a quello delle variabili:

final double PI = 3.1415927;

Anche i nomi delle costanti possono essere in minuscolo, ma per facilità di identificazione, di solito si usa il maiuscolo per le costanti.

Le letterali possono essere assegnate a qualsiasi variabile di tipo incorporato. Ad esempio:

byte a = 68;
char a = 'A';

byte, int, long e short possono essere rappresentati in modo decimale, esadecimale e ottale.

Quando si utilizzano costanti, il prefisso 0 indica il sistema a otto, mentre il prefisso 0x rappresenta il sistema a 16, ad esempio:

int decimal = 100;
int octal = 0144;
int hexa = 0x64;

Come in altri linguaggi, le costanti di stringa nel Java sono sequenze di caratteri tra virgolette doppi. Ecco un esempio di costante letterale di stringa:

"Hello World"
"due\nrighe"
"\"This is in quotes\""

Le costanti di stringa e di carattere possono contenere qualsiasi carattere Unicode. Ad esempio:

char a = '\u0001';
String a = "\u0001";

Il linguaggio Java supporta alcune sequenze di escape speciali.

                        Simbolo                        Significato del carattere
                        \n                        Transizione a riga (0x0a)
                        \r                        Inserimento di ritorno (0x0d)
                        \f                        Pagine (0x0c)
                        \b                        Ritorno a riga (0x08)
                        \0                        Carattere nullo (0x0)
                        \s                        Spazio (0x20)
                        \t                        Tabulatore
                        \"                        Doppio apice
                        \'                        Apostrofo
                        \\                        Backslash
                        \ddd                        Carattere ottale (ddd)
                        \uxxxx                        Carattere Unicode a 16esimo (xxxx)

Conversione automatica di tipo

I dati interi, i tipi reali (costanti) e i tipi di carattere possono essere combinati. Durante l'operazione, i dati di tipo diverso vengono prima convertiti nel medesimo tipo e poi calcolati.

La conversione avviene da basso a alto.

Basso ———————————————————————————> Alto
byte,short,char—> int —> long —> float —> double

La conversione di tipo di dati deve soddisfare le seguenti regole:

  • 1. Non è possibile eseguire la conversione di tipo sul tipo boolean.

  • 2. Non è possibile convertire un tipo di oggetto in un oggetto di classe non correlata.

  • 3. Quando si converte un tipo di dati di capacità maggiore in un tipo di dati di capacità minore, è necessario utilizzare la conversione di tipo forzata.

  • 4. Durante il processo di conversione, potrebbe verificarsi un overflow o una perdita di precisione, ad esempio:

    int i = 128;   
    byte b = (byte)i;

    Poiché il tipo byte è di 8 bit e il valore massimo è 127, quando si forza la conversione da int a byte, il valore 128 causerebbe un overflow.

  • 5. La conversione da numero a intero di tipo floating-point avviene tramite lo scarto dei decimali, non tramite arrotondamento, ad esempio:

    (int)23.7 == 23;        
    (int)-45.89f == -45

Conversione automatica di tipo

Deve essere soddisfatto che il numero di bit del tipo di dati prima della conversione sia inferiore al numero di bit del tipo di dati dopo la conversione, ad esempio: il numero di bit del tipo di dati short è 16 bit, quindi può essere convertito automaticamente in un tipo int di 32 bit, allo stesso modo, il tipo di dati float ha 32 bit e può essere convertito in un tipo double di 64 bit.

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char c1='a';//Definizione di un tipo char
            int i1 = c1;//Conversione automatica di tipo char a int
            System.out.println("Il valore ottenuto dalla conversione automatica di tipo char a int è uguale a"+i1);
            char c2 = 'A';//Definizione di un tipo char
            int i2 = c2+1;//Calcolo tra tipi char e int
            System.out.println("Il valore calcolato di tipo char e int è uguale a"+i2);
        }
}

Il risultato dell'esecuzione è:

Il valore ottenuto dalla conversione automatica di tipo char a int è uguale a 97
Il valore calcolato di tipo char e int è uguale a 66

Analisi:Il valore di c1 è il carattere a Ecco che, consultando la tabella ASCII, si può vedere che il valore di tipo int corrispondente è 97, mentre A corrisponde a 65, quindi i2=65+1=66.

Conversione di tipo forzato

  • 1. La condizione è che il tipo di dati da convertire deve essere compatibile.

  • 2. Formato: (type)value  type è il tipo di dati dopo la conversione forzata   Esempio:

    public class QiangZhiZhuanHuan{
        public static void main(String[] args){
            int i1 = 123;
            byte b = (byte)i1; // Conversione forzata di tipo
            System.out.println("Il valore dopo la conversione di tipo forzato di int a byte è uguale a " + b);
        }
    }

    Risultato dell'esecuzione:

    Il valore dopo la conversione di tipo forzato di int a byte è uguale a 123

Conversione implicita di tipo

  • 1. Il tipo predefinito degli interi è int.

  • 2. Non esiste questo problema perché è necessario aggiungere F o f alla fine del numero quando si definisce il tipo float.

Questa sezione spiega i tipi di dati di base di Java. La prossima sezione esplorerà diversi tipi di variabili e il loro uso.