java 的分类_java的基本类型(转)
java的基本類型
java的基本類型可以分為三類,字符類型char,布爾類型boolean以及數值類型byte、short、int、long、float、double。數值類型又可以分為整數類型byte、short、int、long和浮點數類型float、double。JAVA中的數值類型不存在無符號的,它們的取值范圍是固定的,不會隨著機器硬件環境或者操作系統的改變而改變。
需要記住的結論:
未帶有字符后綴標識的整數默認為int類型;未帶有字符后綴標識的浮點數默認為double類型。
如果一個整數的值超出了int類型能夠表示的范圍,則必須增加后綴“L”(不區分大小寫,建議用大寫,因為小寫的L與阿拉伯數字1很容易混淆),表示為long型。
帶有“F”(不區分大小寫)后綴的整數和浮點數都是float類型的;帶有“D”(不區分大小寫)后綴的整數和浮點數都是double類型的。
編譯器會在編譯期對byte、short、int、long、float、double、char型變量的值進行檢查,如果超出了它們的取值范圍就會報錯。
int型值可以賦給所有數值類型的變量;long型值可以賦給long、float、double類型的變量;float型值可以賦給float、double類型的變量;double型值只能賦給double類型變量。
運算符對基本類型的影響:當使用+、-、*、/、%運算符對基本類型進行運算時,遵循如下規則:
只要兩個操作數中有一個是double類型的,另一個將會被轉換成double類型,并且結果也是double類型;
否則,只要兩個操作數中有一個是float類型的,另一個將會被轉換成float類型,并且結果也是float類型;
否則,只要兩個操作數中有一個是long類型的,另一個將會被轉換成long類型,并且結果也是long類型;
否則,兩個操作數(包括byte、short、int、char)都將會被轉換成int類型,并且結果也是int類型。
當使用+=、-=、*=、/=、%=、運算符對基本類型進行運算時,遵循如下規則:
運算符右邊的數值將首先被強制轉換成與運算符左邊數值相同的類型,然后再執行運算,且運算結果與運算符左邊數值類型相同。
題目: short s1=1;s1=s1+1;有什么錯?short s1=1;s1+=1;有什么錯?代碼:
public?class?PrimitiveTypeTest {
public?static?void?main(String[] args) {
short?s1 = 1;
// 這一行代碼會報編譯錯誤
// s1 = s1 + 1;
// 這一行代碼沒有報錯
s1 = 1 + 1;
// 這一行代碼也沒有報錯
s1 += 1;
}
}
從例子中我們可以看出結果了。利用上面列舉的規律,也很容易解釋。在s1=s1+1;中,s1+1運算的結果是int型,把它賦值給一個short型變量s1,所以會報錯;而在s1+=1;中,由于是s1是short類型的,所以1首先被強制轉換為short型,然后再參與運算,并且結果也是short類型的,因此不會報錯。那么,s1=1+1;為什么不報錯呢?這是因為1+1是個編譯時可以確定的常量,“+”運算在編譯時就被執行了,而不是在程序執行的時候,這個語句的效果等同于s1=2,所以不會報錯。前面講過了,對基本類型執行強制類型轉換可能得出錯誤的結果,因此在使用+=、-=、*=、/=、%=等運算符時,要多加注意。
當使用“==”運算符在基本類型和其包裝類對象之間比較時,遵循如下規則:
只要兩個操作數中有一個是基本類型,就是比較它們的數值是否相等。
否則,就是判斷這兩個對象的內存地址是否相等,即是否是同一個對象。
switch語句使用情況的總結?:
byte、char、short、int四種基本類型以及它們的包裝類(需要Java5.0/1.5以上版本支持)都可以用于switch語句。
long、float、double、boolean四種基本類型以及它們的包裝類(在Java所有版本中)都不能用于switch語句。
enum類型,即枚舉類型可以用于switch語句,但是要在Java5.0(1.5)版本以上才支持。
所有類型的對象(包括String類,但在Java5.0/1.5以上版本中,該項要排除byte、char、short、int四種基本類型對應的包裝類)都不能用于switch語句。
(文章內容來源:作者:臧圩人(zangweiren)網址:http://zangweiren.javaeye.com )
總結
以上是生活随笔為你收集整理的java 的分类_java的基本类型(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3dmax怎么制作网游中胖胖的海盗效果图
- 下一篇: fastcgi java_FastCGI