官术网_书友最值得收藏!

2.7 類型轉換

實際開發工作中,不同類型數據之間的轉換工作非常常見,這也是非常重要的操作。本節就討論幾種數據類型轉換的情況。

第一種類型轉換稱為隱式轉換。當把一個取值范圍小的類型轉換為取值范圍大的類型時,可以進行隱式轉換,就像將一小杯水裝進一個大杯子一樣,這種轉換是沒有任何問題的,如下面的代碼所示。

    int x = 100;
    long y = x;

代碼中,首先定義x變量為int類型(32位整數),定義y變量為long類型(64位整數)。然后,將x的值賦予y,由于long的取值范圍要比int類型大,因此這種賦值是沒有問題的。

此外,當不同類型的數據進行運算時,會將取值范圍小的類型轉換為取值范圍大的類型,這也是進行隱式轉換,前面的內容已經討論過這類情況。

第二種類型轉換的情況是將取值范圍大的類型轉換為取值范圍小的類型,如下面的代碼所示。

    long x = 100;
    int y = x;

運行代碼可以看到,它們是不能正確執行的。如果確實需要這種轉換操作,就必須使用強制轉換。此時,在需要轉換的數據前使用一對圓括號指定目標類型,如下面的代碼所示。

    long x = 100;
    int y = (int)x;

再次執行代碼就沒有問題了。不過,進行類型的強制轉換時需要注意,如果數據超出了目標類型的取值范圍,會進行截斷操作,數據內容也會改變,實際開發中,應避免這種情況的發生,如下面的代碼所示。

代碼會顯示-24,這是因為byte類型只能處理8位整數,取值范圍為-128~127,而1000顯然超出了這個范圍,轉換為byte類型后,數據只保留低位上的8位,于是它就變成了-24,這是怎么得來的呢?

1000的二進制形式為1111101000,只取后8位就是11101000,在byte類型中,第一位是1,說明這是一個負數,進行減1取反操作得到00011000,即24,這樣結果就是-24了。

前面討論的是整數類型之間的轉換,如果是整數和浮點數之間的轉換,同樣會有隱式轉換和強制轉換兩種情況。

從整數轉換為浮點數類型時,可以進行隱式轉換。但反過來,將浮點數轉換為整數時,就會丟失小數部分,如下面的代碼所示。

代碼中,變量x定義為double類型,其數據包含小數部分。然后,將x的數據轉換為int類型(y),可以看到,y的輸出是1000,即不包含小數部分。接下來,將double類型轉換為取值范圍更小的byte類型(z)時,數據會先截斷小數部分,再截斷整數部分,最終存放在byte類型的變量中。

主站蜘蛛池模板: 留坝县| 儋州市| SHOW| 宁陕县| 武威市| 科技| 高阳县| 徐水县| 砀山县| 卢氏县| 上杭县| 扶余县| 吴桥县| 离岛区| 仁怀市| 会同县| 丰顺县| 乡宁县| 灌云县| 无棣县| 海盐县| 读书| 百色市| 清原| 南部县| 如皋市| 宜君县| 大田县| 永宁县| 翁牛特旗| 玉门市| 仙游县| 巴南区| 苏尼特右旗| 东乡县| 新宾| 英超| 庆元县| 渝中区| 胶南市| 古交市|