1. 程式人生 > >關鍵字,識別符號,常量,變數,型別轉換

關鍵字,識別符號,常量,變數,型別轉換

關鍵字:

JAVA預定義的單詞,簡而言之,有特殊含義的單詞,能夠使得開發工具變顏色的單詞。

關鍵字的特點:

1.所有字母都是小寫組成。
2.關鍵字不能夠作為識別符號。
3.java中一共有50個關鍵字,注意 const goto也是關鍵字。
const goto在java中沒有特殊含義,作為保留使用,但也是關鍵字。

識別符號:

識別符號:
本質就是給JAVA中的包,類,介面,介面的實現類,變數,方法,常量取名字,需要滿足一定的規則和規範。
規範:
1.見名知意。
2.部分滿足駝峰命名法(類和介面滿足擡頭駱駝,變數和方法滿足低頭駱駝)。
3.可以使用中文命名,但不建議。
4.長度最好不要超過31個字元。


規則:
1.必須由字母/數字/下劃線_/美元符號$ 組成。
2.不能以數字開頭。
3.不能是java中的關鍵字。
4.java是區分大小寫的
提供一套命名規範
包:
1.一般都是公司域名反寫。
2.所有單詞使用.隔開。
3.每個單詞都是小寫字母組成。
eg:域名為www.sxt.com 命名為:com.sxt
類(滿足擡頭駱駝):
1.所有單詞首字母大寫,其他字母小寫。
eg:HelloWorld IdentifiedDemo
介面(滿足擡頭駱駝):
1.所有單詞首字母大寫,其他字母小寫。
2.一般會在第一個單詞的前面加上一個大寫的 I
eg:IStudent ITeacher
介面的實現類(滿足擡頭駱駝):

1.所有單詞首字母大寫,其他字母小寫。
2.一般會在最後一個單詞的後面加上 Impl
eg:StudentImpl
抽象類:
1.所有單詞首字母大寫,其餘字母小寫。
2.在單詞的開頭一般都會加上 Abs
eg:
變數(滿足低頭駱駝):
1.第一個單詞首字母小寫,其餘單詞首字母大寫。
2.一般都是名詞。
eg:studentName studentScore score
方法(滿足低頭駱駝):
1.第一個單詞首字母小寫,其餘單詞首字母大寫。
2.一般都是動詞。
eg:getTotalScore getAverageScore
常量:
1.所有單詞都是大寫。
2.每個單詞都用"_"隔開。
eg:MAX_VALUE MIN_VALUE

為什麼需要有常量?
PI 一週有7天 一年多少天
常量: 在程式的執行過程中,其值不會發生改變的量

常量的分類:
	整型常量
		二進位制 由0,1組成,由0b開頭 0101010101
		八進位制 由0~7組成,由0開頭
		十進位制 由0~9組成,預設就是十進位制
		十六進位制 由0~9,A,B,C,D,E,F 組成,由0x開頭
	小數常量
		0.2F float型別的小數常量
		0.2D double型別的小數常量
	布林常量
		只能取兩個值 
		true false
	字元常量
				  
		什麼是字元?字元的本質是什麼?數字 整數
		什麼是位元組?位元組本質是什麼? 資料傳輸的最基本單位 數字
		a 1 張 換行 製表符 都是字元 65535   
		
		字元在計算機中儲存本質還是數字
		
		1byte = 8bit   
		1kb = 1024byte
		1mb = 1024kb
		1gb = 1024mb
		1tb = 1024gb
		
		1bit 能夠表示多少種狀態 2種  0 1
		2bit 4  10 01 11 00
		3bit 8   
		8bit 256
		16bit 65536
		
		一般2個位元組表示一個漢字GBK
		
		1.字元常量由 '' 包裹
		2.裡面只能夠有一個字元
		3.轉義字元可以由兩個字元組成,第一個是\
		
		先記住常見的字元編碼:
			a 97
			A 65
			0 48
			
			\t 製表
			\n 換行
			\r\n 換行
			\'
			\\
			\"
			
	字串常量
		1.由雙引號包裹
		2.裡面可以有一個字元也可以有多個字元
		3.字串裡面可以是空串
	null常量
		表示的是引用型別的常量,會在後面講解面向物件的時候詳細講解
		
	自定義常量 後面講解面向物件的時候講解
	
注意:
	1.System.out.println();輸出的都是數值的十進位制
	2.預設整型常量預設是 int 型別
	3.預設小數型別就是 double 型別
	4.字元的數量不會超過65535
	5.windows系統的換行符是 \r\n \N \R 



public class ConstantDemo {

public static final int MAX_VALUE = 100;

public static void main(String[] args){
	System.out.println(0b1011);
	System.out.println(037);
	System.out.println(0x9AF);
	
	System.out.println(0.2); // double float
	System.out.println(0.2f);
	
	System.out.println(true);
	System.out.println(false);
	
	System.out.print('a');
	
	System.out.print('\t');
	
	System.out.print('b');
	
	System.out.print('\'');
	
	System.out.print('\n');
	
	System.out.print('\\');
	
	System.out.print('"');
	
	System.out.print((int)'0');
	
	System.out.println("\"");
	
	
	}
}

變數: 在程式的執行過程當中,其值可以發生改變的量,類似於數學的未知數X

變數的記憶體分配
int x = 10;
int x; // 1.宣告
x = 10; // 2.賦值
System.out.println(x); // 3.使用

資料型別: Java是一門強語言型別,Java對每一種資料都提供了對應的型別
		  比如JavaScript就是弱語言型別
		  int x = 10; double d = 20;
		  var x = 10; var d = 20.5;
		 
資料型別的分類 
	八大基本資料型別
		整數型別				位元組數				取值範圍
		byte						1				8bit = 256種狀態  -128~127
		short						2				00000000 00000000  -2^15 ~ 2^15-1
		int 						4				-2^31 ~ 2^31-1
		long						8				-2^63 ~ 2^63-1
		浮點型別
		float						4				-3.403E38 ~ 3.403E38
		double						8				-1.798E308 ~ 1.798E308
		注意:
			1.雖然小數表示的範圍很大,但是不能夠完全表示所有的小數,因為存在無限不迴圈小數
			2.同樣是8個位元組的long和double型別,為什麼double取值範圍會比long型別多很多? -- 儲存方式不一樣 
			3.在處理金融相關的專案的時候,不能使用float和double型別來計算,因為會出現精度丟失,後面學習BigDecimal類可以解決這個問題
		字元型別
		char						2				0 ~ 65535
		布林型別
		boolean						1				true false  
	引用資料型別 (之後學習面向物件的時候講解)
		類 class
		介面 interface
		陣列 [] int[]


變數的定義:
	變數的三要素:
		1.宣告
		2.賦值
		3.使用
	注意:
		1.變數一定要先宣告再賦值再使用
		2.變數不能夠重複定義
		3.變數不能夠連續定義 int a = b = c = 10; 

public class VariableDemo {
	public static void main(String[] args){
		int x;
		x = 10;
		System.out.println(x);
	
	// 1.變數一定要先宣告再賦值再使用
	int y;
	// System.out.println(y);
	
	// 2.變數不能夠重複定義
	// int x = 20;
	
	// 3.變數不能夠連續定義
	// int a = b = c = 10; 
	int a=10,b=20,c=30;
	
	int a1 = 10; 
	int a2 = 20; 
	int a3 = 30;
	
	// 定義一個整數
	byte by = 127;
	
	// 定義一個short
	short s = 32767;
	
	long l = 100;
	System.out.println(l);
	
	long ll = 10000000000000L; 
	
	float f = 2.5f;
	System.out.println(f);
	}
}

型別轉換

型別轉換的依據: 取決於資料的取值範圍,而不是位元組數
byte -> short -> int -> long -> float -> double 
		char  ->
注意: 
	1.char和byte/short有交集關係,而沒有子集關係
	2.其他的都滿足子集關係
	3.boolean不能參與型別轉換
	
1.自動型別轉換
	將小型別賦值給大型別,系統會自動將小型別轉換成大型別,不會出現任何問題

2.強制型別轉換
	將大型別賦值給小型別,可能會出現如下問題
	格式:強制型別轉換格式:目標型別 變數名=(目標型別)(被轉換的資料);
		a.精度的丟失
		b.資料的溢位
	
3.byte/short特例

4.byte/short 和 char 之間參與轉換,都需要強制型別轉換

5.表示式型別提升: 型別會自動向高型別轉換

6.byte short char 之間參與運算,底層都會轉換成int型別來計算

7.boolean型別不能夠參與型別轉換

8.字串和任何型別進行加法運算都是拼接操作,在JavaScript中可以進行其他運算

9.變數計算和常量計算問題
	a.常量計算,編譯器會自動幫我們計算結果
	b.變數計算,編譯器無法幫我們識別型別和結果

public class DataTypeConvertDemo {
	public static void main(String[] args){
	// 1.自動型別轉換
	float f = 25;
	
	// 2.強制型別轉換
	
	double d = 3.5;
	
	float ff = (float)2.5;
	System.out.println(ff);
	
	int i = (int)2.5;
	System.out.println(i);
	
	byte b = (byte)130;
	System.out.println(b);
	
	// 3.byte/short特例
	byte bb = 127;
	System.out.println(bb);
	
	short s = 32767;
	System.out.println(s);
	
	// 4.byte/short 和 char 之間參與轉換,都需要強制型別轉換
	char c = 'a';
	byte bbb = (byte)c;
	System.out.println(bbb);
	
	byte bbbb = 97;
	char ch = (char)bbbb;
	System.out.println(ch);
	
	char cc = 'b';
	int ii = cc;
	System.out.println(ii);
	
	// 5.表示式型別提升: 型別會自動向高型別轉換
	int iii = (int)(0.5f + 20);
	System.out.println(iii);
	
	// 6.byte short char 之間參與運算,底層都會轉換成int型別來計算
	byte b2 = 97;
	char ch2 = (char)(b2 + 1);
	System.out.println(ch2);
	
	byte b3 = 97;
	short s3 = 1;
	char ch3 = (char)(b3 + s3);
	System.out.println(ch3);
	
	char ch4 = 'c';
	short s4 = 1;
	char ch5 = (char)(ch4 + s4);
	System.out.println(ch5);
	
	// 8.字串和任何型別進行加法運算都是拼接操作,在JavaScript中可以進行其他運算
	System.out.println("abc" + 1);
	System.out.println(2 + 2 + "222" + 2 + 2); 
	
	/*
		9.變數計算和常量計算問題
		a.常量計算,編譯器會自動幫我們計算結果
		b.變數計算,編譯器無法幫我們識別型別和結果
	*/
	/*byte b4 = 10;
	short s5 = 20;
	short s6 = b4 + s5;
	System.out.println(s6);*/
	
	/*byte b5 = 126;
	int i6 = 1;
	byte b7= b5 + i6;
	System.out.println(b7);*/
	

	byte b8= 127;
	System.out.println(b8);
	
	}
}