iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

Java 語言可以分成兩種資料型態

1. 基本資料型態 primitive data type

2. 參考資料型態 reference data type

基本資料型態是 boolean、char、byte、short、int、long、float、double,這8種。

參考資料型態是『除了那8種以外的所有資料型態』

如:

  1. 自定義的類別 (class)
  2. 陣列 (Array)
  3. 介面 (interface)
  4. 列舉 (enum)

基本資料型態

https://ithelp.ithome.com.tw/upload/images/20230918/20163139sKT06K29we.png

布林 boolean

boolean 只有兩個值,true 或 false。使用此資料型態可以簡單的表示真(true)或假(false)的狀態,

方便做條件判斷使用。boolean型態表示著一位元的0或1的資料,但他的型態大小沒有被精確的定義。

字元 char

用來儲存字元,一個單位的字元佔16-bits大小,Java的字元採用Unicode編碼(前128字元與ASCII相容)。表示範圍為'\u0000' (0) 到 '\uffff' (65,535),在Java中一個英文字元或符號或中文字元或XX文字元都是一個char,而字元的本質其實就是數字,所以也有與整數型態相同的特性,可以做算數運算。以下有3種表示式:

  1. 直接通過單個字元來指定字元型值,如:'a',表示字元 a。
  2. 通過跳脫字元表示特殊字元值,如:'\n' 、 '\t'等。
  3. 直接使用Unicode值來表示字元型值,格式是'\uXXXX' ,其中XXXX代表十六進位的整數
    https://ithelp.ithome.com.tw/upload/images/20230919/20163139nKV9vco2n5.png

整數 byte, short, int ,long

用來儲存整數,有正負號。依所佔的記憶體大小可以在細分成位元組(byte, 8-bits)、短整數(short, 16-bits)、整數(int, 32-bits)與長整數(long, 64-bits),在記憶體佔有越多的空間所可以表示的範圍也就越大。

int 是最常使用的整數類型,通常情況下,直接給出一個整數值預設就是int類型,以下有兩種情形必須指出:

  1. 如果將一個較小的整數值(byte或short類型的數值範圍內)賦予一個byte 或short變數,系統會自動把這個整數值當成byte或short 類型來處理
  2. 如果使用一個巨大的整數值(超出int數值類型範圍時),Java 不會自動把這個整數值當成long 類型來處理!!!所以如果希望把整數值當成long類型處理要在整數值加上l 或L當後綴(比較推薦用L因為l容易與1搞混)

整數值有4種表示方式:十進位、二進位(0b or 0B)、八進位(0開頭)、十六進位(0x or 0X 10~15分別以a~f表示不分大小寫)

浮點數 float, double

只有整數的運算很明顯不能滿足現實的需求,浮點數代表著有小數點的數。依所佔記憶體大小分為單精度浮點數(float, 32-bits)與雙精度浮點數(double, 64-bits)

Java 有浮點數有兩種表示形式:

  1. 十進位,如 5.12、512.0、.512 浮點數必須包含一個小數點,否則會被當成int處理
  2. 科學計數法,如 5.12e2 、 5.12E2 (都是5.12 * 102)

浮點數類型預設是double類型 希望當成float 處理要在浮點數後緊跟 f 或 F ,當然也可以在浮點數後加上d 或D 指定是double類型 ,但通常沒必要

小提醒:

在java 7 之後 為了解決數值位數特別多時,會看得眼花瞭亂的問題,數值之間可以用底線分隔,而不是用逗號喔!https://ithelp.ithome.com.tw/upload/images/20230918/20163139wGMB0qkevm.png

如:double pi = 3.14_15_92_65_36;

基本類型轉換

有兩種轉換方式: 自動類型轉換和 強制類型轉換

  1. 自動類型轉換

    數值範圍小的向數值範圍大的轉換,也叫做「擴大轉換」。

    圖1:
    https://ithelp.ithome.com.tw/upload/images/20230918/20163139gbiBBHT0bu.png
    箭頭左邊的類型可以自動類型轉換成箭頭右邊的數值類型

public class AutoConversion {
	
	public static void main(String[] args) {
		
		int a = 6;
		//int 類型可以自動轉換為float類型
		float f = a;
		//下面將輸出6.0
		System.out.println( f);
		
		byte b = 9;
		//下面程式將出錯,byte類型不能自動類型轉換成char
		char c = b;
		
		double d = b;
		//下面將輸出9.0
		System.out.println(d);
	}
}
  1. 強制類型轉換

    如果要將圖1右邊的類型轉成左邊的類型必須進行強制類型轉換

    語法格式:

    (欲轉換的資料型態)變數名稱 ;
    

    進行強制類型轉換時,就像是把一個大瓶子裡的水倒入一個小瓶子,如果大瓶子水不多就還好,如果大瓶子裡的水很多,將溢出來,從而造成資料遺失,這種轉換也叫做「縮小轉換」

        public class NarrowConversion {
    
        public static void main(String[] args) {
    
            int i = 233;
            //強制把一個int類型的值轉換成byte類型的值
            byte b = (byte)i;
            //將輸出-23
            System.out.println(b);
        }
    }
    

    基本資料型態的宣告及給值: (int為例)

    int value ;
    value = 10;
    

    記憶體配置圖:
    https://ithelp.ithome.com.tw/upload/images/20230918/20163139jtZLM1g3Jh.png
    說明一下上面兩行程式碼是怎麼運行的
    程式剛開始執行,記憶體沒有變數,

    int value; 執行的時候會在stack區切一塊int大小的空間,Java會初始化為0 (區域變數local variable不會自動初始化,要使用該變數前需要指定其值),

    value = 10; 指定整數10給變數value。

    今天就先介紹到基本型態,明天繼續介紹參考型態囉!


上一篇
Day3 - Java 程式的基本規則
下一篇
Day5-資料類型II
系列文
玩轉Java:從基礎打造你的程式超能力30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言