日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java什么是原生类_Java 基础 - 原生类型

發布時間:2023/12/15 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java什么是原生类_Java 基础 - 原生类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

更詳細的說明,請參考:?Java 原生類型與包裝器類型深度剖析,https://blog.csdn.net/justloveyou_/article/details/52651211

一. 原生類型與包裝器類型

1Byte = 8 Bits

二. 自動轉型與強制轉型

精度(低1-高5)

1

byte(1字節)

Byte

short(2字節)

Short

char(2字節)

Character

2

int(4字節)

Integer

3

long(8字節)

Long

4

float(4字節)

Float

5

double(8字節)

Double

NA

boolean(未定)

Boolean

1、 自動轉型

自動轉型總原則:byte,short,char(同級)-> int -> long -> float -> double?(由低精度到高精度)

1.1 由低精度到高精度的自動轉換

具體可分為以下兩種情形:

1)從位數低的類型向位數高的類型轉換

byte b = 1;char c = 1;short s = 1;int i = 1;

c= b; //Error,同級

c = s; //Error,同級

s = c; //Error,同級

i = c; //OK

2) 從整型向浮點型的轉換

int i = 1;long t = 1;float f = 1;double d = 1;

f= i; //Ok

f = t; //Ok

d = f; //Ok

1.2 運算符對基本類型的影響

具體可分為以下兩種情形:

1) 當使用 +、-、*、/、%、==、>、< 等 等運算符對基本類型進行運算時,遵循如下規則:

兩個操作數中,先考慮是否有一個是double類型的。如果有,另一個操作數和結果 將會被轉換成double類型。再依次考慮float,long。除此之外,兩個操作數(包括byte、short、int、char)都將會被轉換成int類型。

byte b1 = 10 ; //OK,會檢查發現10沒有超過byte類型的最大值

byte b2 = 12; //OK,會檢查發現12沒有超過byte類型的最大值

byte b = b1 + b2; //Error,byte類型在計算時會自動提升為int類型,此時就會報錯,因為b1+b2實際上是int類型,但是左側的變量為byte類型。

short s1=1; //OK,會檢查發現1沒有超過short類型的最大值

s1=s1+1; //Error,因為s1+1 結果int,但左側變量為 short,報錯

s1++; //OK,不會報錯,與s1=s1+1不同!!!,會檢查發現2沒有超過short類型的最大值

s1=1+1; //OK,1+1 是個編譯時可以確定的常量,'+'運算在編譯時就被執行了,而不是在程序執行的時候,這個語句的效果等同于s1=2

2) 當使用+=、-=、*=、/=、%=、i++、 ++i運算符對基本類型進行運算時,遵循如下規則:

運算符右邊的數值將首先被強制轉換成與運算符左邊數值相同的類型,然后再執行運算,且運算結果與運算符左邊數值類型相同。自增(減)運算也類似。

short s1=1; //OK,會檢查發現1沒有超過short類型的最大值

shorts2;

s1+=1; //OK,正確,1首先被強制轉換為short型,然后再參與運算,并且結果也是short類型

s2= ++s1; //OK,正確,s2的值為2

2、強制轉型

強制轉換的格式是在需要轉型的數據前加上 “( )”, 然后在括號內加入需要轉化的數據類型。主要發生于以下兩種情形:

由高精度向低精度轉換

一種類型到另一種類型轉換,則必須使用強制類型轉化(同級之間:byte,short,char)

byte b = 3;int i = 3;long t = 3;float f = 3;char c = 3;short s = 3;

i= (int) f; //OK,由高精度向低精度轉換

t = (long) f; //OK,由高精度向低精度轉換

b = (byte) i; //OK,由高精度向低精度轉換

i= b; //OK,由低精度向高精度轉換,自動轉型

System.out.println(c==s); //OK,true,c 和 s 自動轉型為int,然后比較

b= (byte) s; //OK,一種類型到另一種類型轉換

c = (char) b; //OK,一種類型到另一種類型轉換

c = (char) s; //OK,一種類型到另一種類型轉換

特別需要注意的是,強制轉換常常會導致二進制位的截取,甚至會導致意想不到的結果:

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

System.out.println(b);//-128(即-0)

---------------------

作者:書呆子Rico

來源:CSDN

原文:https://blog.csdn.net/justloveyou_/article/details/52651211

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的java什么是原生类_Java 基础 - 原生类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。