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

Java Grund教程

Java Flusskontrolle

Java Array

Java objektorientiert (I)

Java objektorientiert (II)

Java objektorientiert (III)

Java Ausnahmebehandlung

Java Liste (Liste)

Java Queue (Warteschlange)

Java Map-Kollektion

Java Set-Kollektion

Java Ein- und Ausgabe(I/O)

Java Reader/Writer

Andere Themen von Java

Java Grundlegende Daten-Typen

Variable ist das Anfordern von Speicherplatz, um Werte zu speichern. Das bedeutet, dass beim Erstellen von Variablen Speicherplatz im Speicher angefordert werden muss.

Das Speichermanagement systematische Zuweisung von Speicherplatz für Variablen basierend auf dem Variablentyp, der zugewiesene Speicherplatz kann nur zum Speichern von Daten dieses Typs verwendet werden.

Daher können durch Definition verschiedener Variablentypen Ganzzahlen, Brüche oder Zeichen im Speicher gespeichert werden.

Die beiden großen Datentypen von Java:

  • Eingebauter Datentyp

  • Verweisdatentyp

Eingebauter Datentyp

Java bietet acht grundlegende Typen. Sechs Numeriktypen (vier Ganzzahltypen, zwei Fließkommatypen), ein Zeichentyp und einen logischen Typ.

byte:

  • Der Datentyp byte ist8Bitweise, signed, durch Zweierkomplement dargestellte Ganzzahlen;

  • 最小值是 -128(-2^7);

  • 最大值是 127(2^7-1);

  • 默认值是 0;

  • Der Typ byte wird in großen Arrays verwendet, um Speicherplatz zu sparen, hauptsächlich als Ersatz für Ganzzahlen, da ein byte-Variable nur ein Viertel des Speicherplatzes eines int-Typs beansprucht;

  • Beispiel: byte a = 100, byte b = -50。

short:

  •  short 数据类型是 16 位、有符号的以二进制补码表示的整数

  •  最小值是 -32768(-2^15);

  •  最大值是 32767(2^15 - 1);

  •  Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;

  •  默认值是 0;

  • 实例:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;

  • 最小值是 -2,147,483,648(-2^31);

  • 最大值是 2,147,483,647(2^31 - 1);

  • 一般地整型变量默认为 int 类型;

  • 默认值是 0 ;

  • 实例:int a = 100000, int b = -200000。

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;

  • 最小值是 -9,223,372,036,854,775,808(-2^63);

  • 最大值是 9,223,372,036,854,775,807(2^63 -1);

  • 这种类型主要使用在需要比较大整数的系统上;

  • 默认值是 0L;

  •  实例: long a = 100000L,Long b = -200000L。
    "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;

  • float 在储存大型浮点数组的时候可节省内存空间;

  •  默认值是 0.0f;

  •  浮点数不能用来表示精确的值,如货币;

  •  实例:float f1 = 234.5f。

double:

  • double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;

  •  浮点数的默认类型为double类型;

  •  double类型同样不能表示精确的值,如货币;

  •  默认值是 0.0d;

  •  实例:double d1 = 123.4.

boolean:

  •  boolean数据类型表示一位的信息;

  • 只有两个取值:true 和 false;

  •  这种类型只作为一种标志来记录 true/false 情况;

  •  默认值是 false;

  •  实例:boolean one = true。

char:

  •  char类型是一个单一的 16 位 Unicode 字符;

  •   最小值是 \u0000(即为0);

  •  最大值是 \uffff(即为65,535);

  •  char 数据类型可以储存任何字符;

  •  实例:char letter = 'A';。

Beispiel

对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的实例:

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("包装类:java.lang.Character");  
        // 将Character.MIN_VALUE以数值形式而不是字符形式输出到控制台  
        System.out.println("最小值:Character.MIN_VALUE=");  
                + (int) Character.MIN_VALUE);  
        // 将Character.MAX_VALUE以数值形式而不是字符形式输出到控制台  
        System.out.println("最大值:Character.MAX_VALUE=");  
                + (int) Character.MAX_VALUE);  
    }  
}

编译以上代码输出结果如下所示:

基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
基本类型:long 二进制位数:64
包装类:java.lang.Long
Minimalwert: Long.MIN_VALUE=-9223372036854775808
Maximalwert: Long.MAX_VALUE=9223372036854775807
Grundtyp: float Binärbitanzahl:32
Wrapperklasse: java.lang.Float
Minimalwert: Float.MIN_VALUE=1.4E-45
Maximalwert: Float.MAX_VALUE=3.4028235E38
Grundtyp: double Binärbitanzahl:64
Wrapperklasse: java.lang.Double
Minimalwert: Double.MIN_VALUE=4.9E-324
Maximalwert: Double.MAX_VALUE=1.7976931348623157E308
Grundtyp: char Binärbitanzahl:16
Wrapperklasse: java.lang.Character
Minimalwert: Character.MIN_VALUE=0
Maximalwert: Character.MAX_VALUE=65535

Die kleinsten und größten Werte von Float und Double werden in wissenschaftlicher Notation ausgegeben, und das "E" am Ende+Zahlen"bedeutet, dass die Zahl vor dem "E" multipliziert werden muss10mal so viel. Zum Beispiel3.14E3ist3.14 × 103 =3140,3.14E-3 ist 3.14 x 10-3 =0.00314.

Tatsächlich gibt es in Java auch eine weitere primitive Datenart void, die auch eine entsprechende Wrapperklasse java.lang.Void hat, aber wir können sie nicht direkt verarbeiten.

Standardwerte der Typen

Die Tabelle unten zeigt die Standardwerte aller Java-Typen:

DatenartStandardwert
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (oder jeder Objekt)null
booleanfalse

Online-Beispiel

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);
    }
}

Beispiel-Ausgabe:

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

 Referenztypen

  •  In Java sind Variablen von Referenztypen sehr ähnlich zu C/C++Zeiger. Referenztypen verweisen auf ein Objekt, und die Variablen, die auf das Objekt verweisen, sind Referenzvariablen. Diese Variablen werden bei der Deklaration mit einem bestimmten Typ angegeben, wie z.B. Employee, Puppy usw. Nach der Deklaration kann der Typ nicht mehr geändert werden.

  • Objekte und Arrays sind Referenzdatentypen.

  •  Der Standardwert aller Referenztypen ist null.

  •  Eine Referenzvariable kann verwendet werden, um auf jeden mit ihr kompatiblen Typen zu verweisen.

  •  Beispiel: Site site = new Site("w3codebox")

Java-Konstanten

Konstanten können während der Laufzeit des Programms nicht geändert werden.

In Java wird der Schlüsselwort "final" verwendet, um Konstanten zu modellieren, die Deklarationsweise ähnelt der von Variablen:

final double PI = 3.1415927;

Obwohl Konstantennamen auch in Kleinbuchstaben verwendet werden können, wird in der Regel ein Großbuchstabe verwendet, um Konstanten zu identifizieren.

Literals können an jede Variable eines eingebauten Typs zugewiesen werden. Zum Beispiel:

byte a = 68;
char a = 'A'

byte, int, long und short können in Zehner-,16Grundzahlen sowie8Grundzahlen darzustellen.

Wenn man Konstanten verwendet, bedeutet der Präfix 0 8 Grundzahlen, während der Präfix 0x bedeutet 16 Grundzahlen, zum Beispiel:

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

Wie in anderen Sprachen auch, enthalten Java-Zeichenkettenkonstanten eine Zeichensequenz zwischen zwei Anführungszeichen. Hier sind Beispiele für Zeichenkettenliterale:

"Hello World"
"two\nlines"
""This is in quotes""

Zeichenkettenkonstanten und Zeichensymbole können alle Unicode-Zeichen enthalten. Zum Beispiel:

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

Java unterstützt einige spezielle Escape-Sequenzen.

                        Zeichen                        Bedeutung des Zeichens
                        \n                        Zeilenwechsel (0x0a)
                        \r                        Eingabe (0x0d)
                        \f                        Seitenwechsel (0x0c)
                        \b                        Rücktaste (0x08)
                        \0                        Leeres Zeichen (0x0)
                        \s                        Leerzeichen (0x20)
                        \t                        Tabulator
                        \"                        Doppelte Anführungszeichen
                        \'                        Einzelne Anführungszeichen
                        \\                        Backslash
                        \ddd                        Oktal Zeichen (ddd)
                        \uxxxx                        16Ziffern Unicode Zeichen (xxxx)

Automatische Typ Konvertierung

Ganze Typen, Fließkommazahlen (Konstanten) und Zeichen können gemischt berechnet werden. Bei der Berechnung werden verschiedene Typen zuerst in denselben Typ konvertiert und dann berechnet.

Konvertierung von niedrigem Niveau zu hohem Niveau.

tief  ------------------------------------> hoch
byte, short, char -> int -> long -> float -> double

Die Daten Typen Konvertierung muss den folgenden Regeln entsprechen:

  • 1. Man kann keine Typenkonvertierung für boolean Typen durchführen.

  • 2. Man kann Objekt-Typen nicht in Objekte anderer nicht verwandter Klassen konvertieren.

  • 3. Bei der Konvertierung von Typen mit größerem Speicherbedarf in Typen mit kleinerem Speicherbedarf muss eine Zwangs-Typ-Konvertierung verwendet werden.

  • 4. Während des Konvertierungsprozesses kann es zu einem Überlauf oder einer Genauigkeitsverlust kommen, z.B.:

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

    weil der byte Typ ist 8 bits, der maximale Wert ist127daher wenn int in byte Typ gezwungen konvertiert wird, der Wert 128 kann zu einem Überlauf führen.

  • 5. Die Konvertierung von Fließkommazahlen in Ganzzahlen erfolgt durch Abtrennen der Nachkommastellen, nicht durch Runden, z.B.:

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

Automatische Typ Konvertierung

muss die Anzahl der Bits des Daten Typs vor der Konvertierung kleiner als die des Daten Typs nach der Konvertierung sein, z.B.:16bits, dann kann automatisch in32int Typ konvertiert werden, similarly die Anzahl der Bits für float Daten Typen ist32, kann automatisch in64bits double Typ.

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char c1='a';//Definiere einen char Typ
            int i1 = c1;//Automatische Konvertierung von char in int
            System.out.println("Wert von char nach automatischer Konvertierung in int gleich"+i1);
            char c2 = 'A';//Definiere einen char Typ
            int i2 = c2+1;//Berechnung von char und int Typen
            System.out.println("Wert von char und int berechnet gleich"+i2);
        }
}

Laufender Output ist:

Wert von char nach automatischer Konvertierung in int gleich97
Wert von char und int berechnet gleich66

Analyse:c1 Wert ist ein Zeichen a , die entsprechende int-Wert kann aus dem ASCII-Zeichentabellen bekannt werden 97, der Wert von A entspricht 65also i2=65+1=66.

Zwangslufige Typumwandlung

  • 1. Die Bedingung ist, dass der zu wandelnde Datentyp kompatibel sein muss.

  • 2. Format: (type)value, type ist der Typ, in den der Wert umgewandelt werden soll   Beispiel:

    public class QiangZhiZhuanHuan{
        public static void main(String[] args){
            int i1 = 123;
            byte b = (byte)i1;//Zwangslufige Typumwandlung
            System.out.println("int in byte umgewandelt, der Wert ist gleich "+b);
        }
    }

    Laufende Ergebnisse:

    Der Wert, der aus int in byte umgewandelt wird, ist gleich123

Implizite强制类型转换

  • 1. Der Standardtyp für Ganzzahlen ist int.

  • 2. Bei Fließkommazahlen gibt es dies nicht, da bei der Definition des float-Typs die F oder f am Zahlensatz folgen muss.

Dieser Abschnitt erläutert die grundlegenden Datentypen von Java. Der nächste Abschnitt wird verschiedene Variablentypen und ihre Verwendung untersuchen.