iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
自我挑戰組

Java SE系列 第 2

Day02:先生先生,請問你裝了什麼進去?

  • 分享至 

  • xImage
  •  

Java,我相信如果去查維基百科,「物件導向」這4個字一定會在敘述的第一行。
換言之,在Java的世界中,幾乎所有的東西都以「物件」這個概念來運作,不過既然用到幾乎這兩個字,就肯定有例外啦。
那就是八大基本型別(Primitive Type):

  • byte 整數,1byte
  • short 整數,2byte
  • int 整數,4byte
  • long 整數,8byte
  • float 浮點數,4byte
  • double 浮點數,8byte
  • boolean 布林值,true / false
  • char 字元,2byte

型別就好像是容器,這些容器有大有小,也有各種形狀材質,當我們要宣告一個變數來裝東西的時候,Java就是比較龜毛一點,要寫的人先規定這個變數之後要裝的東西是什麼種類,宣告後這個變數就只能裝進同一種的東西了。這種語言風格被稱為強型別
再來說說我在後面寫的"xxbyte"是什麼意思,這就是容器大小的意思了,在程式的世界中,我們所用的大小單位叫做位元組(byte),下面放張圖來解釋一下位元組是什麼概念:

whatByteIs

所以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呀?

嘿嘿......突然發現要講下去又要扯出一拖拉庫了,我想今天就先這樣吧!太好了明天有題目可以寫了哈哈哈~


上一篇
Day01:美其名為序實則為消耗掉一天的好東西
下一篇
Day03:小姐,妳手上那是什麼?
系列文
Java SE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言