JAVA語法細節(1)

1、變量的作用域

變量的作用域從變量定義的位置開始,到變量所在的那對大括號結束。變量定義內存開闢一塊空間用於該變量,變量到達作用域時,該變量從內存中消失。

2、變量的數據類型

變量基本數據類型:byte、short、int、long、float、double、char、boolean 

byte	b = 3;
short s = 4000;
int x = 12;
long l = 123l;         //定義的數據後需加‘l’代表定義的是long型變量
float f = 2.3f;        //定義的數據後需加‘f’代表定義的是float型變量
double d = 3.4;
char ch = '1';
boolean bl = true;
注意:Java中所有的常數默認都是int類型的數據,當定義byte  x=9;時,編譯器自動檢查所賦值是否超出定義的類型範圍,若沒超出範圍正常定義,若超出範圍,編譯器報錯,“可能會損失精度”。


變量的自動類型轉換:

byte x = 1, m = 2;     //定義了一個byte型數據x
int y = 2;             //定義了一個int型數據y
y = x+m;     //自動將x+m的類型轉換成int類型

變量的強制類型轉換:

short a = 23;
int b = 34;
b = (int)a;


3、使用變量時需注意一些情況

byte a = 1;
byte b = 2;
b = a+b;
這種情況下編譯器會報錯,“可能會損失精度”。
int a = 1;
int b = 2;
b = a+b;
這種情況,編譯器不會報錯,能正常運行。這是因爲在Java中兩個byte型的數據相加如果兩個數據比較大結果可能會超過buyte型變量的所屬範圍,編譯器會提示可能會損失精度。而兩個int型的數據相加,若超出範圍則向前進位,但只取低32位的有效數據,所以編譯器不會報錯。

4、運算符a++,++a,+=

(1) 當a++,和++a單獨存在時,這兩個運算語句的結果是相同的,都相當於a = a + 1;

(2)當a++或++a參與運算時,結果就不相同了

class VarDemo2 
{
	public static void main(String[] args) 
	{
		int a = 1, b, c;
		b = a++;
		c = ++a;
		System.out.println("a="+a+",b="+b+",c="+c);
	}
}
編譯、運行後輸出“a=3,b=1,c=3”,當a++參與運算時,b=a++這條語句執行時,內存中先開闢出一個臨時變量存儲a的值,然後運行a++,此時a的值爲2,然後將a++的值(即開闢的臨時變量的值)賦給b,運行c=++a;時,a自加一次,此時a的值爲3,將a的值賦給c。

(3)+=是一個賦值運算符,

byte a = 9;
a = a+1;


此時編譯器報錯,提示“可能會損失精度”,原因如上文所述。

byte a = 9;
a += 1;
此時編譯器不會報錯,能正常運行,“+=”是一個賦值運算符,在賦值前會自動檢查是否超出了作用範圍。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章