資料型別的運算與轉換

2021-10-08 22:26:34 字數 2614 閱讀 9876

class

demo

}

那麼:

一般來說,我們在運算的時候,要求參與運算的資料型別必須一致。

而對於不同的資料型別之間的運算,會有一種預設的轉換

預設轉換(從小到大的轉換):

byte b1=3,b2=4,b;

b=b1+b2;

b=3+4;

哪句是編譯失敗的呢?為什麼呢?

class

demo2

}

因此出錯的是b=b1+b2;

從大的資料型別到小的資料型別。

目標資料型別 變數 = (目標資料型別) (被轉換的資料);

class

demo2

}

注意:

不要隨意的去使用強制轉換,因為它隱含了精度損失問題。

看看下面兩個定義有沒有區別呢?

class

demo3

}

byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麼做?結果是多少呢?

/*

byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麼做?結果是多少呢?

*/class

demo4

}

為何會是這樣乙個結果?請看分析:

分析過程:

我們要想知道結果是什麼,就應該知道是如何進行計算的。

而我們又知道計算機中資料的運算都是補碼進行的。(值是以原始碼進行顯示的)

而要得到補碼,首先要計算出資料的二進位制。

a:獲取130這個資料的二進位制。

00000000 00000000 00000000 10000010

這是130的原碼,也是反碼,還是補碼。

b:做擷取操作,截成byte型別的了。

10000010

這個結果是補碼。

c:已知補碼求原碼。

符號位 數值位

補碼: 1 0000010

反碼: 1 0000001

原碼: 1 1111110 -> -126

class

demo5

}

通過字元和乙個整數相加,會按照字元編碼,ascii碼進行計算

我們給出一張表:ascii碼表

ascii碼

鍵盤ascii 碼

鍵盤ascii 碼

鍵盤ascii 碼

鍵盤27

esc32

space33!

34"35#

36$37%

38&39』

40(41)

42*43+

44』45-

46.47/

480491

502513

524535

546557

568579

58:59;

60<61=

62>63?

64@65a

66b67c

68d69e

70f71g

72h73i

74j75k

76l77m

78n79o

80p81q

82r83s

84t85u

86v87w

88x89y

90z91[

92\93]

94^95_

96`97a

98b99c

100d

101e

102f

103g

104h

105i

106j

107k

108l

109m

110n

111o

112p

113q

114r

115s

116t

117u

118v

119w

120x

121y

122z

123126

~

通過看完這張表以後,我們要記住三個值:

『a』 97

『a』 65

『0』 48

class

demo6

}

字串資料和其他資料做+,結果是字串型別。

這裡的+不是加法運算,而是字串連線符。

運算子與資料型別轉換

小白個人筆記 如有錯誤,請指正。1.算術運算子 一般來說就是加 減 乘 除 取餘 一般用於number型別的數字運算。注意 當 兩邊有乙個為spring型別,則執行拼接操作。例如 這裡c的值為100100 而不是200。算術運算子裡有一元運算子。或者 意思是自身 1或者 1。運算子前置後置對於變數本...

php資料型別轉換運算

php的資料型別轉換屬於強制轉換,允許轉換的php資料型別有 int integer 轉換成整形 float double real 轉換成浮點型 string 轉換成字串 bool boolean 轉換成布林型別 array 轉換成陣列 object 轉換成物件 php資料型別有三種轉換方式 在要...

資料型別與轉換

1.set 集合 特點 無序,自動去重,不可修改 無序導致無法定位修改的資料 定義語法 setvar 2.dict 字典 特點 無序,可獲取 通過定位鍵修改對應的值 定義語法 dictvar 3.字典的鍵 和 集合的值的資料型別要求 必須為不可變資料 可雜湊的資料型別 即number int,flo...