1. 程式人生 > >java基礎知識之變數與常量及java資料型別

java基礎知識之變數與常量及java資料型別

java中的變數於常量及資料型別

Java中的變數與常量

Java中的變數與常量

變數定義的注意事項

1.作用域問題:變數定義在哪一級大括號中,哪個大括號的範圍就是這個變數的作用域。相同的作用域中不能定義兩個同名變數。
2.初始化值問題:沒有初始化值不能直接使用。
3.在一行上建議只定義一個變數:可以定義多個,但是不建議。
4.定義long型別(一種資料型別,下面會提到)時要在數值後面加上L,否則數字超過int容量會報錯;定義float型別時要在數值後面加F,否則會發生報錯。這是因為如果未加會導致變數未被定義為我們想要的float或long型別,而是小數預設的double型別或整數預設的int型別。
舉個例子

class Demo_3 {
	public static void main(String[] args) {
		float a=3.14F;
		long  b=5611114865L;
		System.out.println(a);
		System.out.println(b);
	}
}

這裡先試一下不加F
這裡涉及到下面的資料型別
不加L效果如下:

在這裡插入圖片描述

java中的資料型別

java資料型別

自動型別提升

自動型別提升是指
1.byte,short,char在運算過程中會轉化為int型別;若含有long或double則會轉化為long或double
2.範圍較小的資料型別和範圍較大的資料型別同時操作時會轉化為較大的資料型別(byte在與short,char運算時會轉化為int)
這裡舉個例子:byte在運算過程中自動提升至int型別

class Demo_3 {
	public static void main(String[] args) {
		byte  a=2;
		byte  b=3;
		byte  c=a+b;
		System.out.println(b);
	}
}

這裡byte型別參與運算被轉化成了四個位元組的int型別,而byte只有一個位元組,強行將int存入byte中可能會導致出錯

強制型別轉化

有的時候你可能不希望你定義的byte,short或其他型別在運算過程中被轉化為int,long,或double型別,那麼你可以使用強制型別轉化來使其轉化為你想要的型別
就拿上免得那個例子來再試一次

強制型別轉化
但是這樣也有不好的地方,當運算的結果的大小超出你強制轉化的型別容量的話運算結果可能就會出錯,例如:
數值超過容量導致運算結果出錯
byte容量為一個位元組即 -128~127 所以127+2超過的他的容量,這時強行儲存進byte型別中,導致了錯誤的結果—127