Java數(shù)據(jù)類(lèi)型和變量
Java 是一種流行的編程語(yǔ)言,以其強(qiáng)類(lèi)型系統(tǒng)而聞名,這意味著每個(gè)變量都必須有一個(gè)聲明的類(lèi)型。Java提供了多種數(shù)據(jù)類(lèi)型來(lái)適應(yīng)各種數(shù)據(jù)和操作。
在本文中,我將帶您了解 Java 的數(shù)據(jù)類(lèi)型并解釋它們的工作原理。
Java 中有兩種數(shù)據(jù)類(lèi)型——原始數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型。讓我們深入了解每一個(gè)。
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點(diǎn) c0m)
原始數(shù)據(jù)類(lèi)型和參考數(shù)據(jù)類(lèi)型之間的差異
在 Java 中,引用數(shù)據(jù)類(lèi)型和原始數(shù)據(jù)類(lèi)型之間存在重要區(qū)別。
原始數(shù)據(jù)類(lèi)型將實(shí)際值直接存儲(chǔ)在內(nèi)存中,而引用數(shù)據(jù)類(lèi)型存儲(chǔ)指向存儲(chǔ)對(duì)象位置的引用或內(nèi)存地址。
如果未顯式初始化,原始數(shù)據(jù)類(lèi)型具有默認(rèn)值,而引用數(shù)據(jù)類(lèi)型默認(rèn)為null.
原始數(shù)據(jù)類(lèi)型具有由語(yǔ)言定義的固定大小,而引用數(shù)據(jù)類(lèi)型具有固定大小,無(wú)論它們引用的對(duì)象如何。
對(duì)原始數(shù)據(jù)類(lèi)型的操作可以直接進(jìn)行,而對(duì)引用數(shù)據(jù)類(lèi)型的操作只能通過(guò)對(duì)象提供的方法進(jìn)行。
原始數(shù)據(jù)類(lèi)型有相應(yīng)的包裝類(lèi),而引用數(shù)據(jù)類(lèi)型則沒(méi)有。
當(dāng)傳遞基本數(shù)據(jù)類(lèi)型作為方法參數(shù)時(shí),會(huì)傳遞值的副本,而傳遞引用數(shù)據(jù)類(lèi)型時(shí)會(huì)按值傳遞引用。
這些差異顯示了引用數(shù)據(jù)類(lèi)型和原始數(shù)據(jù)類(lèi)型之間的存儲(chǔ)、默認(rèn)值、大小、操作和按值傳遞語(yǔ)義在 Java 中的重要性。
Java 中的原始數(shù)據(jù)類(lèi)型
Java 有八種基本數(shù)據(jù)類(lèi)型,它們是存儲(chǔ)數(shù)據(jù)的最基本的構(gòu)建塊。這些類(lèi)型充當(dāng) Java 中數(shù)據(jù)操作的構(gòu)建塊。
原始數(shù)據(jù)類(lèi)型僅用于一個(gè)目的——包含某種純粹、簡(jiǎn)單的值。它們是 Java 中的保留關(guān)鍵字。因?yàn)樗鼈兪顷P(guān)鍵字,所以不能用作變量名。它們包括以下內(nèi)容:
byte
想象一下您有一個(gè)可以容納數(shù)字的小盒子。這個(gè)盒子可以容納從-128到127的數(shù)字。它就像一個(gè)玩具盒,只能容納特定范圍的玩具,從-128到127。你可以在盒子里放入這個(gè)范圍內(nèi)的任何數(shù)字。
數(shù)據(jù)byte類(lèi)型是一個(gè) 8 位有符號(hào)整數(shù),可以保存從 -128 到 127 的值。當(dāng)需要考慮內(nèi)存空間時(shí)通常使用它。讓我們創(chuàng)建一個(gè)類(lèi)型的變量byte:
?byte myByte = 100;
?System.out.println("byte: " + myByte);
?Output
?byte: 100
short
現(xiàn)在,想象你有一個(gè)更大的盒子。該框可以保存short16 位有符號(hào)整數(shù)的數(shù)據(jù)類(lèi)型,可以保存從 -32,768 到 32,767 的值。它對(duì)于存儲(chǔ)比數(shù)據(jù)類(lèi)型更大的整數(shù)值非常有用byte。
?short myShort = 30000;
?System.out.println("short: " + myShort);
?Output:
?short: 30000
int
現(xiàn)在,讓我們考慮一個(gè)更大的存儲(chǔ)容器。Box 是一種int數(shù)據(jù)類(lèi)型,是 32 位有符號(hào)整數(shù),可以容納從 -2,147,483,648 到 2,147,483,647 的數(shù)字。它就像一個(gè)大寶箱,可以容納各種各樣的數(shù)字,包括正數(shù)和負(fù)數(shù)。它是 Java 中最常用的表示整數(shù)的數(shù)據(jù)類(lèi)型。
?int myInt = 2000000000;
?System.out.println("int: " + myInt);
?Output::
?int: 2000000000
long
好吧,現(xiàn)在我們有一個(gè)巨大的儲(chǔ)藏室了。該房間可容納的號(hào)碼范圍為 -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807。這就像擁有一個(gè)可以存儲(chǔ)大量數(shù)字的大型倉(cāng)庫(kù)。當(dāng)需要更大范圍的整數(shù)值時(shí)使用它。
?long myLong = 9,223,372,036,854,775,807;
?System.out.println("long: " + myLong);
?Output::
?long: 9,223,372,036,854,775,807
Float
想象一下您有一個(gè)可以容納十進(jìn)制數(shù)字的特殊盒子。該框可以保存中等精度的十進(jìn)制數(shù)。它就像一個(gè)可以以合理的精度盛水的容器。
數(shù)據(jù)float類(lèi)型是單精度32位浮點(diǎn)數(shù)。它對(duì)于表示具有中等精度的十進(jìn)制數(shù)很有用。
?float myFloat = 9,223,372,036,854,775,807;
?System.out.println("float: " + myFloat);
?Output::
?float: 9,223,372,036,854,775,807
Double
數(shù)據(jù)double類(lèi)型是雙精度64位浮點(diǎn)數(shù)。它提供比浮點(diǎn)更高的精度,通常用于涉及十進(jìn)制數(shù)的計(jì)算。
?double myDouble = 129.7;
?System.out.println("double: " + mydouble);
?Output::
?double: 129.7
布爾值
數(shù)據(jù)boolean類(lèi)型表示一個(gè)boolean值,可以是 true 或 false。它用于邏輯運(yùn)算和控制流。
?boolean isJavaFun = true;
?boolean isProgrammingFun = false;
?
?System.out.println(isJavaFun); ? ?
?System.out.println(isProgrammingFun);
?Output::
?true
?false
Char
該char數(shù)據(jù)類(lèi)型表示單個(gè) Unicode 字符,大小為 16 位。它可以存儲(chǔ) Unicode 字符集中的任何字符。
?char johnGrade = 'B';
?System.out.println(johnGrade);
?Output::
?B
Java 中的參考數(shù)據(jù)類(lèi)型
除了原始數(shù)據(jù)類(lèi)型之外,引用數(shù)據(jù)類(lèi)型還用于存儲(chǔ)指向內(nèi)存中存儲(chǔ)的對(duì)象的引用或內(nèi)存地址。
這些數(shù)據(jù)類(lèi)型實(shí)際上并不存儲(chǔ)數(shù)據(jù)本身,而是對(duì)存儲(chǔ)數(shù)據(jù)的內(nèi)存位置的引用。現(xiàn)在讓我們看一下幾種流行的參考數(shù)據(jù)類(lèi)型。
字符串
該類(lèi)String表示字符序列。它廣泛用于操作和存儲(chǔ)文本數(shù)據(jù)。
?String name = "John Doe";
?System.out.println("Name: " + name);
?Output::
?Name: John Doe
數(shù)組
Arrays用于存儲(chǔ)相同類(lèi)型元素的集合。它們提供了一種處理相關(guān)值組的便捷方法。
?int[] numbers = {1, 2, 3, 4, 5};
?System.out.println("Numbers: " + java.util.Arrays.toString(numbers));
?Output::
?Numbers: 12345
Class
數(shù)據(jù)類(lèi)型在Java中class表示a 。class它用于創(chuàng)建對(duì)象并定義它們的行為。
為了了解類(lèi)在 Java 中的工作原理,我們將創(chuàng)建一個(gè)類(lèi)示例并在主類(lèi)中實(shí)現(xiàn)該類(lèi)。
在下面的示例中,我們將創(chuàng)建一個(gè)Car類(lèi)來(lái)表示具有顏色和速度屬性的汽車(chē)。我們將有一個(gè)構(gòu)造函數(shù)來(lái)初始化顏色,并且速度默認(rèn)設(shè)置為 0。該課程還將包括加速汽車(chē)和制動(dòng)汽車(chē)的方法。
這是一個(gè)例子:
?public class ClassCarExample {
? ? ?// Instance variables or fields
? ? ?String color;
? ? ?int speed;
?
? //Method start that gets the car started
? ? ?public void start() {
? ? ? ? ?System.out.println("The car has started.");
? ? ?}
?
? ? ?//Method accelerate that increases the speed of the car by 10 km/h
? ? ? ?public void accelerate() {
? ? ? ? ?speed += 10;
? ? ? ? ?System.out.println("The car is accelerating. Current speed: " + ? speed + " km/h");
? ? ?}
?
? ? ?//Method brake that reduces the speed of the car by 5 each time the ? ?method is called
? ? ?
? ? ?public void brake() {
? ? ? ? ?speed -= 5;
? ? ? ? ?System.out.println("The car is braking. Current speed: " + ? ?speed + " km/h");
? ? ?}
?}
現(xiàn)在,我們將創(chuàng)建主要方法,我們將在其中運(yùn)行我們的類(lèi)并讓我們的汽車(chē)移動(dòng)、加速和制動(dòng)。
?public class Main {
? ? ?public static void main(String[] args) {
? ? ? ? ?// Create an instance of ClassCarExample
? ? ? ? ?ClassCarExample car = new ClassCarExample();
?
? ? ? ? ?// Start the car
? ? ? ? ?car.start();
? ? ? ? ?
?
? ? ? ? ?// Accelerate the car
? ? ? ? ?car.accelerate();
? ? ? ?
?
? ? ? ? ?// Brake the car
? ? ? ? ?car.brake();
? ? ? ? ?}
? ? ?}
?}
?Output:
?The car has started.
?The car is accelerating. Current speed: 10 km/h
?The car is braking. Current speed: 5 km/h
接口
該interface關(guān)鍵字用于聲明interface提供了 .Total 抽象(隱藏),這意味著 an 中的所有方法interface都使用空主體聲明,并且所有字段默認(rèn)為public、static和final。
在 an 中聲明的所有方法都interface必須由class實(shí)現(xiàn) 的a 來(lái)實(shí)現(xiàn)interface。
為了更好地理解接口的工作原理,我們將創(chuàng)建一個(gè)名為 的接口類(lèi)MyInterfaceClass,它聲明了三個(gè)方法:methodExampleOne() methodExampleTwo()、 和methodExampleThree():
?// The interface class
?interface MyInterfaceClass {
? ? ?void methodExampleOne();
? ? ?void methodExampleTwo();
? ? ?void methodExampleThree();
?}
現(xiàn)在我們需要一個(gè)實(shí)現(xiàn)接口類(lèi)的類(lèi)。我們將創(chuàng)建一個(gè)MyClass實(shí)現(xiàn)接口的類(lèi)MyInterfaceClass,并為上面創(chuàng)建的所有三個(gè)方法提供實(shí)現(xiàn)。
?// Implement the interface in a class
?class MyClass implements MyInterfaceClass {
? ? ?public void methodExampleOne() {
? ? ? ? ?System.out.println("Implementing methodExampleOne");
? ? ?}
?
? ? ?public void methodExampleTwo() {
? ? ? ? ?System.out.println("Implementing methodExampleTwo");
? ? ?}
?
? ? ?public void methodExampleThree() {
? ? ? ? ?System.out.println("Implementing methodExampleThree");
? ? ?}
?}
為了更好地理解這一點(diǎn),讓我們創(chuàng)建一個(gè) main 方法,在該方法中我們可以創(chuàng)建我們的對(duì)象,并在我們將創(chuàng)建和運(yùn)行 Java 程序的對(duì)象myClass上調(diào)用我們的方法。myObj
?// Main class to test the implementation
?public class Main {
? ? ?public static void main(String[] args) {
? ? ?
? ? ? ? ?//create myObj from MyClass
? ? ? ? ?MyClass myObj = new MyClass();
?
? ? ? ? ?// Call the implemented methods on the object we created.
? ? ? ? ?myObj.methodExampleOne();
? ? ? ? ?myObj.methodExampleTwo();
? ? ? ? ?myObj.methodExampleThree();
? ? ?}
?}
當(dāng)我們運(yùn)行該類(lèi)時(shí)Main,我們將看到以下輸出:
?Output:
?Implementing methodExampleOne
?Implementing methodExampleTwo
?Implementing methodExampleThree
枚舉
數(shù)據(jù)Enum類(lèi)型表示枚舉(列表)類(lèi)型。它用于定義一組固定的命名值,例如一周中的幾天或顏色。
?class EnumClassExample { ?
? //defining the enum inside the class ?
?public enum Weekdays {
? ? ?SUNDAY,MONDAY,TUESDAY,WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
? ?} ?
? //main method ?
?public static void main(String[] args) { ?
?
? //loop throught the enum ?
?
? for (Weekdays w : Weekdays.values()) ?
? ? ?System.out.println(w); ?
? }
?} ?
?Output::
?SUNDAY
?MONDAY
?TUESDAY
?WEDNESDAY
?THURSDAY
?FRIDAY
?SATURDAY
包起來(lái)
了解 Java 數(shù)據(jù)類(lèi)型對(duì)于有效地進(jìn)行 Java 編程至關(guān)重要。無(wú)論是用于基本值存儲(chǔ)的原始數(shù)據(jù)類(lèi)型還是用于復(fù)雜對(duì)象和行為的引用數(shù)據(jù)類(lèi)型,每種數(shù)據(jù)類(lèi)型都有特定的用途。
通過(guò)利用適當(dāng)?shù)臄?shù)據(jù)類(lèi)型,軟件工程師可以用 Java 編寫(xiě)更高效、可靠且可維護(hù)的代碼。