java強制類型轉換,Java強制類型轉換int轉float數值怎麼算

本文目錄一覽:

JAVA如何進行強制類型轉換?

如果這2種類型是兼容的,那麼Java 將自動地進行轉換。

如果這2種類型是兼容的,那麼Java 將自動地進行轉換。例如,把int 類型的值賦給long類型的變數,總是可行的。

然而,不是所有的類型都是兼容的。因此,不是所有的類型轉換都是可以隱式實現的。例如,沒有將double 型轉換為byte 型的定義。

幸好,獲得不兼容的類型之間的轉換仍然是可能的。要達到這個目的,你必須使用一個強制類型轉換,它能完成兩個不兼容的類型之間的顯式變換。讓我們看看自動類型轉換和強制類型轉換。

java 強制類型轉換的規則是什麼?

1、執行算術運算時,低類型(短位元組)可以轉換為高類型(長位元組);例如:int型轉換成double型,char型轉換成int型等等;

2、賦值表達式中,等號右邊表達式的值的類型自動隱式地轉換為左邊變數的類型,並賦值給它;

3、函數調用時,將實參的值傳遞給形參,系統首先會自動隱式地把實參的值的類型轉換為形參的類型,然後再賦值給形參;

4、函數有返回值時,系統首先會自動隱式地將返回表達式的值的類型轉換為函數的返回類型,然後再賦值給調用函數返回。

擴展資料

C++中強制類型轉換函數有4個:

1、const_cast(用於去除const屬性)。

2、static_cast(用於基本類型的強制轉換)。

3、dynamic_cast(用於多態類型之間的類型轉換)。

4、reinterpreter_cast(用於不同類型之間的指針之間的轉換,最常用的就是不同類型之間函數指針的轉換)。

隱式類型轉換髮生在賦值表達式和有返回值的函數調用表達式中。

在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變數。

在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回。

參考資料

百度百科-強制類型轉換

Java強制數據類型轉換

規則可不少,挺亂的其實:

強制數據類型轉換: int nowC = (int)c;

還可以這樣,使用intValue方法,返回一個int值:

Double d = 5 / 9.0 * (f – 32);

int nowC = d.intValue();

Double類是基本數據類型double所對應的包裝類。

基本數據類型轉換的規則:

Java中基本數據類型共有8種,其中boolean類型不能轉換為其它類型,其它類型也不能轉換為boolean型

除了boolean類型,還有7種,按照它們的容量(也就是表數範圍,就是能表示的數的大小範圍,比如char是0——65535)的大小,從小到大,排序依次為:

byte short char int long float double

1.容量小的向容量大的轉換,可以自動轉換,比如可以直接將一個int類型賦值給double:

double d = 34;

2.容量大的向容量小的轉換,必須強制類型轉換,就是你上面的那種形式,比如:

double c = 5/9.0 *(f – 32);

int nowC = (int)c;

3.整數類型常量默認為int類型,比如17

4.浮點類型常量默認為double類型,比如3.14

5.在多種數據類型混合運算時,容量小的自動轉換為整個表達式中容量最大的,然後再進行計算,比如:

int i = 9; float f = 4f; double d = 3.14; double dd = i+f+d;

此時,i和f都各自先轉換成double,在進行+運算。

6.在多種數據類型混合運算時,byte short char 3者不會互相轉換,他們各自轉換為int再進行計算

7.在有些時候,容量小的會自動提升為容量大的,比如方法重載傳參數時候,

但是byte 和 short 不會自動提升為char,其它類型按照我上面所述的順序提升。

差不多就這些,不明白補充,另外需要注意的是強轉雖然編譯沒問題,但是運行時,有可能會數據溢出,損失精度

JAVA如何進行強制類型轉換

轉型有兩種: 向上轉型和向下轉型(強制轉型)

兩種分別如下:

一種是向上轉型

對於基礎數據類型 , 可以自動轉型 ,比如:

int a = 10;

long b = a;

這裡就是把int型轉成了long型 , 因為 long範圍比int大 , 這樣的轉型不會有任何影響 , 所以可以自動轉型

又比如 A a = new B();

其中 A 是B 的父類 , 這也是多態 , 就是父類的對象指向子類的引用 , 你調用a對象 , 實際上是B的類  , 但是B繼承A , 擁有A的一切屬性和方法 (不談複寫)

第二種是向下轉型 , 也就是強制

這種需要強轉 , 比如

long a = 10 ;

int b = (int) a;

通過 (int)可以強制轉型 , 但是這樣會丟失精度 , 比如a如果超過了b的範圍 , 那麼強轉成int型, 只會等於int的最大值

又比如 :

B b = new A(); 這樣是不行的 , 需要有中間途徑 , 比如

A a = new A();    Object obj = a;     B b = (A) a;

而這種強轉 , 又有要求 , 必須是同類型 , 也就是說  A 就是B , 不然會報錯.

不同類型之間如果要轉型 , 需要通過中間途徑 , 比如JSON , 將A轉成JSON串 , 然後再轉換為B

原創文章,作者:BDLUF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/318171.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BDLUF的頭像BDLUF
上一篇 2025-01-11 16:28
下一篇 2025-01-11 16:28

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論