hyperjava
日歷
<
2008年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
統(tǒng)計(jì)
隨筆 - 0
文章 - 2
評(píng)論 - 2
引用 - 0
導(dǎo)航
BlogJava
首頁(yè)
發(fā)新隨筆
發(fā)新文章
聯(lián)系
聚合
管理
留言簿
給我留言
查看公開(kāi)留言
查看私人留言
文章檔案
2008年11月 (2)
搜索
最新評(píng)論
1.?re: java表達(dá)式類型的自動(dòng)提升
回樓上的,是啊
--hyperjava
2.?re: java表達(dá)式類型的自動(dòng)提升
樓主這篇文章有些眼熟啊,是不是參考李剛的《瘋狂java講義》的啊?
--nexstone
java表達(dá)式類型的自動(dòng)提升
當(dāng)一個(gè)java算術(shù)表達(dá)式中包含多個(gè)基本類型的值時(shí),整個(gè)算術(shù)表達(dá)式的數(shù)據(jù)類型將發(fā)生自動(dòng)提升。Java定義如下的自動(dòng)提升規(guī)則:
1. 所有byte型、short型和char型將被提升到int型。
2. 整個(gè)算術(shù)表達(dá)式的數(shù)據(jù)類型自動(dòng)提升到與表達(dá)式中最高等級(jí)操作數(shù)同樣的類型。操作數(shù)的等級(jí)排列如下圖所示,位于箭頭右邊類型的等級(jí)高于位于箭頭左邊類型的等級(jí)。
下面程序示范了一個(gè)典型的錯(cuò)誤:
//
定義一個(gè)short類型變量
short
sValue
=
5
;
//
表達(dá)式中的sValue將自動(dòng)提升到int類型,則右邊的表達(dá)式類型為int
//
將一個(gè)int類型賦給short類型的變量將發(fā)生錯(cuò)誤。
sValue
=
sValue
-
2
;
上面中的
sValue -2
表達(dá)式的類型將被提升到
int
類型,這樣就是把右邊的
int
型值賦給左邊的
short
型變量,從而引起錯(cuò)誤。
下面代碼是表達(dá)式類型自動(dòng)提升的正確示例代碼(程序清單同上):
byte
b
=
40
;
char
c
=
'
a
'
;
int
i
=
23
;
double
d
=
.
314
;
//
右邊表達(dá)式中在最高等級(jí)操作數(shù)為d(double型)
//
則右邊表達(dá)式的類型為double型,故賦給一個(gè)double型變量
double
result
=
b
+
c
+
i
*
d;
//
將輸出144.222
System.out.println(result);
必須指出的,表達(dá)式的類型將嚴(yán)格保持和表達(dá)式中最高等級(jí)操作數(shù)相同的類型,下面代碼中兩個(gè)int整數(shù)進(jìn)行除法運(yùn)算,即使無(wú)法除盡,也將得到一個(gè)int結(jié)果(程序清單同上):
int
val
=
3
;
//
右邊表達(dá)式中2個(gè)操作數(shù)都是int,故右邊表達(dá)式的類型為int
//
因此,雖然23/3不能除盡,依然得到一個(gè)int整數(shù)
int
intResult
=
23
/
val;
//
將輸出7
System.out.println(intResult);
從上面程序中可以看出,當(dāng)兩個(gè)整數(shù)進(jìn)行除法運(yùn)算時(shí),如果不能整數(shù),得到結(jié)果將是把小數(shù)部分截?cái)嗳≌蟮恼麛?shù)。
如果表達(dá)式中包含了字符串,則又是另一番情形了:因?yàn)榘鸭犹?hào)(+)放在字符串和基本類型值之間時(shí),這個(gè)加號(hào)是一個(gè)字符串連接運(yùn)算符,而不是進(jìn)行加法運(yùn)算。看如下代碼:
//
輸出字符串Hello!a7
System.out.println(
"
Hello!
"
+
'
a
'
+
7
);
//
輸出字符串104Hello!
System.out.println(
'
a
'
+
7
+
"
Hello!
"
);
對(duì)于第一個(gè)表達(dá)式"Hello!" + 'a' + 7,先進(jìn)行"Hello!" + 'a'的運(yùn)算,將把'a'轉(zhuǎn)換成字符串,將拼接成字符串Hello!a,接著進(jìn)行"Hello!a" + 7的運(yùn)算,這也是一個(gè)字符串連接運(yùn)算,得到結(jié)果是Hello!a7。對(duì)于第二個(gè)表達(dá)式,先進(jìn)行'a' + 7加法運(yùn)算,其中'a'自動(dòng)提升到int型,變成a對(duì)應(yīng)的ASCII值:97,從97 + 7將得到104,然后進(jìn)行104 + "Hello!",104會(huì)自動(dòng)轉(zhuǎn)換成字符串,將變成兩個(gè)字符串的連接運(yùn)算,從而得到104Hello!。
posted on 2008-11-21 13:04
hyperjava
閱讀(3597)
評(píng)論(2)
編輯
收藏
評(píng)論:
#
re: java表達(dá)式類型的自動(dòng)提升
nexstone
Posted @ 2008-11-25 17:07
樓主這篇文章有些眼熟啊,是不是參考李剛的《瘋狂java講義》的啊?
回復(fù)
更多評(píng)論
#
re: java表達(dá)式類型的自動(dòng)提升
hyperjava
Posted @ 2008-11-28 17:47
回樓上的,是啊
回復(fù)
更多評(píng)論
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
Copyright © hyperjava
Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
一级毛片在线完整免费观看
|
亚洲码欧美码一区二区三区
|
eeuss草民免费
|
青青青国产色视频在线观看国产亚洲欧洲国产综合
|
精品久久亚洲一级α
|
国产一精品一AV一免费孕妇
|
亚洲人成网站18禁止久久影院
|
午夜男人一级毛片免费
|
亚洲a级在线观看
|
欧美a级在线现免费观看
|
亚洲中文字幕久在线
|
久久久久久国产精品免费免费
|
亚洲AV无码久久久久网站蜜桃
|
久久电影网午夜鲁丝片免费
|
亚洲熟妇成人精品一区
|
国产成人涩涩涩视频在线观看免费
|
国产成人亚洲精品无码AV大片
|
一级毛片直播亚洲
|
中文成人久久久久影院免费观看
|
久久精品国产亚洲AV果冻传媒
|
亚洲欧美国产国产综合一区
|
免费看无码自慰一区二区
|
亚洲AV成人一区二区三区AV
|
亚洲电影在线免费观看
|
亚洲大尺度无码专区尤物
|
无码人妻AV免费一区二区三区
|
亚洲午夜激情视频
|
在线涩涩免费观看国产精品
|
亚洲福利一区二区三区
|
韩国欧洲一级毛片免费
|
国产久爱免费精品视频
|
激情内射亚洲一区二区三区
|
亚洲日本久久久午夜精品
|
日韩欧美一区二区三区免费观看
|
精品无码国产污污污免费网站
|
亚洲欧美日韩国产成人
|
四虎1515hm免费国产
|
免费国产成人α片
|
亚洲中文无码mv
|
亚洲精品乱码久久久久久自慰
|
很黄很黄的网站免费的
|