首頁  >  文章  >  Java  >  Java 中的型別轉換

Java 中的型別轉換

PHPz
PHPz原創
2024-08-30 15:12:18691瀏覽

一旦將各種類型的變數和常數放在一個表達式中,它們就可以更改為相似的類型。這種將一種預先定義型別轉換為另一種類型的技術在 Java 中稱為型別轉換。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

型別轉換

我們在程式語言中使用兩種不同類型的轉換。

Java 中的型別轉換

1.隱式型別轉換

如果型別轉換是在沒有程式設計師參與的情況下透過編譯器立即進行的,則這種型別轉換稱為隱式型別轉換。編譯器從根本上鼓勵每個操作數都轉向最大操作數的資料類型。在整個資料轉換過程中不會發生資料遺失。轉換過程中不會拋出異常,因此被稱為型別安全。較小數量的轉換或較大數量的轉換可以是隱式轉換。整數型別資料轉換為浮點數。

float i=0;
int j=10;
i=j;

// 這可以是隱式轉換,因為浮點數可以大於整數,因此不會缺少數據,也不例外。

2.明確型別轉換

可以透過程式設計師強制執行的型別轉換稱為顯式型別轉換。從根本上講,程式設計師使表達式成為特定類型。顯式類型轉換可以稱為型別轉換。資料轉換期間可能會也可能不會發生資料遺失。因此存在細節遺失的可能性。如果它嘗試在不進行類型轉換的情況下執行,它可能會拋出錯誤。較大數字到較小數字的轉換可以是明確轉換。

float k=123.456
int i= (int) k

// 這可以是明確轉換以及 (int) 是型別轉換、運算子。此時,我們可能會設法逃脫異常,但您可以發現明顯的資料遺失。即 i=123

// .456 可以在轉換過程中刪除

Java 中的型別轉換

與其他程式語言一樣,java 中有兩種類型的轉換:

隱式型別轉換

  • 這些通常是我們所說的加寬轉換,而這些可以自動完成,因為我們正在轉向更廣泛的資料類型。因此,如果我們有一個 32 位元整數,並且想要轉換為 64 位元整數,那麼它會更寬。因此可以安全地移動該值,以便可以隱式地完成該操作。編譯器必須決定如何進行這些轉換,而且規則非常簡單。
  • 如果我們有一個包含多個(混合)整數大小的表達式,如果我們有短整數和長整數,無論最大整數大小是什麼,都會將其轉換為。因此,如果我們對一個short和一個long進行操作,short將被隱式轉換為long。
  • 如果我們執行混合浮點大小的運算,因此我們有一個 float 和一個 double,它們將始終轉到 double,因為 double 是最大的浮點大小。
  • 然後,如果我們有一個使用混合整數類型和浮點類型的操作,編譯器將轉換為方程式中最大的浮點數。因此,如果我們對 long 和 afloat 進行操作,long 將被轉換為 afloat。
  • 如果我們對 long 和 double 進行運算,那麼 long 將被轉換為 double。

明確型別轉換

  • 使用此轉換操作時,我們在程式碼中明確執行。當我們這樣做時,我們就要對因這種類型的轉換而發生的任何事情負責。因此,我們可以執行加寬轉換和縮小轉換。它從 32 位加寬到 64 位,從 64 位縮小到 32 位。我們應該只是想知道我們知道可能會發生什麼。
  • 如果我們從浮點數明確轉換為整數,那麼浮點數可以有小數部分,而整數則不能,因此當我們將該浮點數轉換為整數時,任何小數部分都會被刪除。
  • 執行縮小轉換時要小心。如果我們有一個 64 位元整數,它能夠保存太大而無法放入 32 位元整數的值。
  • 因此,如果我們將 64 位轉換為 32 位,程式實際上會執行此操作,但如果該值太大而無法放入 32 位,您會從中獲得一些奇怪的結果。所以你要確保當你進行縮小投射時,你知道你正在做的事情是安全的。
  • 最後一個是你在從整數轉換為浮點數時要小心,因為如果你有一個具有大量有效數字的整數,由於浮點數的存儲方式,你可以丟失一些有效數字。

型別轉換範例

下面詳細提到的型別轉換範例:

代碼:

Java 中的型別轉換

我們這裡有一個簡單的程序,頂部有一些聲明,float、double、byte、short 和 long,並且每個變數都有命名以幫助識別它們的類型,例如 float 是 floatVal,

代碼:

Java 中的型別轉換

長就是長Val

代碼:

Java 中的型別轉換

如果程式運行,它只會列印出成功訊息。

Java 中的型別轉換

所以讓我們看看一些類型轉換是如何發揮作用的。首先,讓我們繼續創建一個變數。我們有短路,我們就稱之為結果。

事實上,我們將其命名為 result1。讓我們來做一個簡單的作業。首先,我們將 byteVal 分配給它。現在,正如我們所期望的,如果我們繼續運行它,那麼就會成功運行。

代碼:

Java 中的型別轉換

輸出:

Java 中的型別轉換

我們知道這是一個有效的分配,因為一個位元組可以被分配為一個短整型,因為這是一個擴大轉換。

但是,如果我們採用這個byteVal,並將其設為longVal,那麼現在它實際上是一個long;如果我們運行這個,我們會在這裡收到一條錯誤訊息,指出類型不相容,可能會丟失從長到短的轉換。

代碼:

Java 中的型別轉換

Java 中的型別轉換

所以我們在這裡可以做的是我們可以進行明確強制轉換。我們先簡單介紹一下。現在它是有效的,所以我們可以運行它。

代碼:

Java 中的型別轉換

當然,它確實有效。因為多頭不能轉為空頭,因為那是縮小轉換。

輸出:

Java 中的型別轉換

但是透過將明確強制轉換放在它前面,現在它是有效的。如果我們願意,我們可以非常明確地放置一個強制轉換符號,並說你知道,我們知道雖然字節轉換是合法的,但我們想通過將短強制轉換放在那裡來明確表明我們正在強制轉換它,我們可以這樣做那個,而且這是完全合法的。

代碼:

Java 中的型別轉換

輸出:

Java 中的型別轉換

現在,讓我們來看看另一個場景。我們將建立另一個變量,我們稱之為 result2, 並且 result2 也很短。我們在這裡要做的就是取出 byteVal,然後減去 longVal。現在我們知道這是不合法的,因為表達式的結果將是其中最大整數的大小,即長度。

代碼:

Java 中的型別轉換

因此,如果我們執行此命令,我們會收到一條錯誤訊息,指出將長整型轉換為短整型無效。

Java 中的型別轉換

但是假設我們想要繼續並保持結果盡可能短。我們需要進行演員陣容。但我們想將這次轉換為整個結果的值。所以我們要做的就是把短演員表放在它前面。

將短演員表放在此。並將整個內容括在括號中。並運行它。

代碼:

Java 中的型別轉換

它將成功運作。

輸出:

Java 中的型別轉換

現在宣告另一個名為 result3 的變量,但將其宣告為 long。所以得到結果 3,我們在這裡要做的就是分配我們的 longVal – floatVal。所以我們運行它,從 float 轉換為 long 時會出現錯誤,因為每當我們有整數類型和任何浮點類型時,結果都會是浮點類型。

代碼:

Java 中的型別轉換

Java 中的型別轉換

所以讓我們繼續將結果轉換為浮點數。因此,透過將其設為浮動,我們應該能夠繼續運行它。並成功運行。

代碼:

Java 中的型別轉換

輸出:

Java 中的型別轉換

但是現在,如果我們在這裡獲取floatVal 並將其轉換為doubleVal,並且如果我們嘗試運行它,我們會收到錯誤,因為它表示結果將是double,因為當您執行整數時和浮點數,它是方程式中最大浮點數的大小。

代碼:

Java 中的型別轉換

Java 中的型別轉換

所以讓我們繼續將結果加倍,這樣現在我們就可以運行它了。

代碼:

Java 中的型別轉換

輸出:

Java 中的型別轉換

結論

1. Java 中的變數是強型別
2. 原始型

  • 整數型、浮點型、char型、布林型

3.型別轉換

  • 我們經常必須在不同類型之間移動,因為隨著我們的程式變得越來越複雜,可能會涉及多種資料類型。
  • 編譯器可以處理擴大的類型轉換,從一種類型轉換為可以容納更大值的另一種類型,
  • 但是您也可以使用強制轉換來明確執行編譯器無法自動執行的那些類型的轉換。

以上是Java 中的型別轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn