Java,我相信如果去查維基百科,「物件導向」這4個字一定會在敘述的第一行。
換言之,在Java的世界中,幾乎所有的東西都以「物件」這個概念來運作,不過既然用到幾乎這兩個字,就肯定有例外啦。
那就是八大基本型別(Primitive Type):
型別就好像是容器,這些容器有大有小,也有各種形狀材質,當我們要宣告一個變數來裝東西的時候,Java就是比較龜毛一點,要寫的人先規定這個變數之後要裝的東西是什麼種類,宣告後這個變數就只能裝進同一種的東西了。這種語言風格被稱為強型別。
再來說說我在後面寫的"xxbyte"是什麼意思,這就是容器大小的意思了,在程式的世界中,我們所用的大小單位叫做位元組(byte),下面放張圖來解釋一下位元組是什麼概念:
所以byte型別的總容量就是2 ^ 8 = 256,然後又有正負數之分,所以byte型別可以裝進去的整數範圍是-128 ~ 127;而int型別的總容量就是2 ^ 32 = 4,294,967,296,正負切分後範圍是-2,147,483,648 ~ 2,147,483,647,所以若在程式中這樣指派:
int num = 2147483648;
那就會發生編譯錯誤,錯誤訊息為「The literal 2147483648 of type int is out of range」。
好的,差不多仁至義盡了,總之以上這些型別在Java中可以不使用物件的型態來裝進變數:
int integer = 10;
double floatNumber = 10.1;
boolean flag = true;
char word = 'A';
所以就只有這8種基本型別的變數可以直接裝進字面常量(literal constant)。需要注意的是:
String sentence = "Hello Vegetable Chicken. Just kidding~";
雖然字串看似也是直接指派了字面常量給變數,但實際上字串不是基本型別而是類別型別!這個特例需要死記一下(看來字串也可以獨立寫一篇,讚讚)。還記得當初要找第一份軟體工程師工作時,面試被問了不少次呢。
那今天就到這邊囉,大家掰掰
哎基本型別原本其實也就這些東西而已,但是因為我的目的是要考證照,必須再多說一些。
在一開始有提到型別就像是一個容器的種類,有大小之分,那如果我們把很大的東西要裝進很小的容器時,會發生什麼事情?
byte num = 128;
如果你是用eclipse之類的IDE,這時候在"128"的底下就會出現紅底線,並告訴你:「Type mismatch: cannot convert from int to byte」
WTF? 什麼int? 我懂我故意要放一個會讓byte型別爆掉的128(為什麼128會爆掉?想想看),但我沒有要放int呀?
嘿嘿......突然發現要講下去又要扯出一拖拉庫了,我想今天就先這樣吧!太好了明天有題目可以寫了哈哈哈~