學習java---變量

一個好的開發人員,多思
編織最重要編程思想,突破束縛,舉一反三,去想想背後事情,擴散思維
系統分析師(業務分析,系統設計)

1) 怎麼實現junit單元測試?

a) Junit第三方開發工具類,只有jdk(jre)才能直接使用,必須導入jar(eclipse很好支持,需要時,它就可以直接導入import)
b) 類中所需要的類戴上一個帽子,是一個註解@Test
注意:單元測試執行一個類多個方法時,不按順序執行,亂序。因爲實際開發中測試不需要區分先後順序。都測試正常就行了。

2) junit怎麼實現3個方法?

3) Junit怎麼實現運行指定的方法?
鼠標雙擊要運行方法名,右鍵菜單運行junit test,就只執行這一個方法。
擴展:如何運行2個方法?
軟件不是萬能的,有些不能實現。Junit不能去指定多個方法。要麼全部,要麼一個!

寫代碼一板一眼,每個單詞都是敲出來。
Eclipse有很豐富快捷方式,快速完成代碼
1) main
a) 創建類時就指定

b) main+ Alt+/(自動補全代碼)
2) syso+Alt+/

今天任務:java基礎,開發語言,語法
1) 關鍵字,java中定義很多有特殊含義名字,每一個都代表含義,要在固定地方使用。叫做關鍵字。
Eclipse支持高亮,關鍵字以紫色來顯示,java提供50+

學習方法:在每個地方都較真,不是好的學習方法,要知道學習重點。
比如:以關鍵字來舉例,51還是52?制定規範專家,學習,小學生,這50多個是什麼,每個作用是什麼,我會用幾個?
必須抓大放小。捨得。不代表全部都掌握,一定要掌握核心。

對普通開發人員,啞巴英語,只要記住他們,有些用的很多,用多了自然就記住了(class),有些非常生僻strictfp沒有用過。

思考:上面這些關鍵字是java定義,不讓我們用,我們能定義自己名稱嗎?
顯然可以,java把自己定義這麼名字標識符
類名:HelloWorld,方法名稱:aaa,hello()

標識符:

不能用數字開頭,但是可以數字來結尾aaa123
特殊字符中可以使用&和下劃線,其他特殊字符儘量不要使用
這些規矩不用死記,這樣錯誤,eclipse就會提示,進行修改就可以

2) 變量和常量
a) 變量,變化的量,在代碼中可以再次賦值x=10,x=20,x就稱爲變量。

b) 常量,只能一次賦值,之後不能再次設置,如果設置報錯,在開發中固定寫死值,必然:PI=3.14。6.18固定值。
final float PI = 3.14f;
The final(最終類型) local variable(局部變量) PI cannot be assigned. (訪問)
It must be blank and not using a compound assignment

package test;
public class World {
public static void main(String[] args) {
	//變量
	int x = 10;		//定義一次,定義類型爲整形
	System.out.println(x);
	
	x = 20;				//再次賦值
	System.out.println(x);
	
	//常量,常量變量名全大小,多個單詞之間用下劃線連接
	final float PI = 3.14f;
	System.out.println(PI);
	
	//PI = 5;	常量不能再次賦值
}}

3) java怎麼表達數據,每個數據有它特點
在計算機中非常可憐,只有二進制,只有0和1
人類習慣下面表達方式,可計算機只有0和1,計算機如何處理下面這些情況呢?
數字,10,20,數字可以累積10+20=30
浮點數,3.14
字符,鍵盤a,b,c
高級開發語言要做其中轉換,把日常人類習慣表達數據類型,自動轉換成計算機能識別0和1。

表達生活中各種類型數據呢?
Java提供8中數據基本類型,表達萬物。

字節空間是這個對應類型在內存空間存儲長度。
思考?
存儲字節越少好處?佔用內存空間小
存儲字節越多好處?佔用內存空間大(壞處),表達數值範圍更大
使用這些類型是,如果能存下,使用大的好呢?還是小的好呢?
儘量要下,內存是固定大小,4g/8g/16g不管怎麼說內存都是緊俏,有限資源,你佔的越少,其他程序就可以多點內存使用。

變量創建完成,都放在內存中,內存是一個物理介質。
計算機怎麼去表達人類定義數據類型?

通過上面表達,人類定義類型,都可以轉換爲計算機能識別0和1,從而計算機就可以處理我們的數據。
計算機單位:bit,就是0或者1
八種基本類型,一般都是2的倍數
A) byte,1個字節=8bit,8位
B) short,2個字節=16bit,
C) int,4個字節
D) long,8個字節
E) float,4個字節
F) double,8個字節
G) char,2個字節
H) boolean,1個字節
總結:使用基本8種類型時,儘量使用佔內存空間較小的類型

	package test;
	public class World {
	public static void main(String[] args) {
		//八種基本類型,字母都小寫
		byte b = 125;
		short s = 100;
		int i = 10000;
		long l = 10000000;
		
		float f = 3.14f;
		double d = 3.14;		//寫個帶小數點的,默認是double
		
		char c = 'a';			//字母,字符類型使用單撇括起來
		//String s1 = "abc";	//字符串使用雙引號括起來,字符串不是基本類型
		boolean n = true;		
		
	}}


> 看看基本類型最小值和最大值,也就是它的存儲範圍


	package test;
	public class World {
	public static void main(String[] args) {
		//八種基本類型,字母都小寫
		byte b = 125;
		short s = 100;
		int i = 10000;
		long l = 10000000;
		
		float f = 3.14f;
		double d = 3.14;		//寫個帶小數點的,默認是double
		
		char c = 'a';			//字母,字符類型使用單撇括起來
		//String s1 = "abc";	//字符串使用雙引號括起來,字符串不是基本類型
		boolean n = true;		
		
		//每種數據類型存儲範圍:
		System.out.println("字節byte類型:" + Byte.MIN_VALUE + "," + Byte.MAX_VALUE);
		System.out.println("短整型short類型:" + Short.MIN_VALUE + "," + Short.MAX_VALUE);
		System.out.println("整型int類型:" + Integer.MIN_VALUE + "," + Integer.MAX_VALUE);		//21億,用的最多
		System.out.println("長整型long類型:" + Long.MIN_VALUE + "," +Long.MAX_VALUE);
		
		//一般開發使用不多,計算機計算整數更快
		System.out.println("單精度浮點數float類型:" + Float.MIN_VALUE + "," + Float.MAX_VALUE);
		System.out.println("雙精度浮點數double類型:" + Double.MIN_VALUE +","+ Double.MAX_VALUE);
		
		//它們特殊,一般沒有範圍概念char:a~z,包括特殊字符:-_,%&
		System.out.println("字符char類型:" + Character.MIN_VALUE + "," + Character.MAX_VALUE);
		System.out.println("布爾boolean類型:"+ Boolean.FALSE + "," + Boolean.TRUE);
	}}

問題:
1)字面量null,true,fasle
學習問題,到底是字面量還是關鍵字,不要去過分較真。
學習英語最重要的是什麼?交流,人和人的交流,而不是糾結語法。

如果作爲一個專家,引經據典,這是應該糾結的!!!,但是我們是普通開發者,要把東西做出來纔是我們應該乾的!!!

1)不是我們培優要乾的事情,java就業,它一點一來講。5個月時間,纔講了我們1/3的內容。Java培優學習重點在互聯網架構知識。不在java基礎。
2)這些東西后面你要寫數萬遍,main老師寫
多寫,去體悟。

回顧:
1) java關鍵字,再強調,你學習重點在哪裏?不是去糾結它是字面量還是關鍵字,null幹什麼的?true、false幹什麼的?特別作爲一個初學者關注應用。在開發中不能使用這些名稱。包括:java不能使用,main不能使用。都可能造成錯誤。
2) 標識符,開發人員自己定義名字,隨便起,有一定規則,不能數字開頭。Eclipse你寫出來,如果不符合規範,報錯。學知識不用死記,現在知識體系太龐大了。都記記不住。找核心的東西死記。
3) 變量(變化的量,可以重新賦值)、常量(第一次賦值後不能再次賦值)。這些東西不用去死記,寫多了,自然找到標準。當你不知道如何寫,抄老師的。
4) 八種基本變量類型
a) byte,字節,1個字節=8bit位,比特:0或1
b) short,短整形,-128~127
c) int,整形,-3w~3w
d) long,長整形,-21億~21億
e) float,單精度浮點數,表示小數,3.14,6.18
f) double,雙精度浮點數,
g) char,字符’a’,’b’;a~z不是一個範圍,所有打印是有東西,只是大家看不見
h) boolean,布爾類型:true真,false假
5) 基本類型佔用空間最小,其中儘量在使用最短的數據類型,不浪費內存
6) char最大值最小值是特殊字符,無法展現
char c1 = ‘b’; //b字符,在內存中存儲是它的ascii碼
System.out.println(c1);
char c2 = 98; //98就是b字符串ascii碼
System.out.println(c2);
char c3 = 0; //ascii碼0
System.out.println("="+c3+"=");
7)java提供8種基本類型,它不是面向對象的,不是對象。
Java是一種面嚮對象語言,它會給對象有很多額外好處。這些基本變量是沒有的。
Java就推出每個對應包裝類型(對象)
Java事件中數據類型有兩類:基本數據類型,引用類型
包裝類都是引用類型
a) byte,Byte
b) short,Shrot
c) int,Integer
d) long,Long
e) float,Float
f) double,Double
g) char,Character
h) boolean,Boolean
8)基本變量和包裝類型變量有什麼不同呢?
基礎變量,佔用內存空間小。沒有什麼額外功能。
包裝類型(引用類型),佔用存儲空間大,額外提供很多工具轉換等等方法,這些是基本變量沒有的。開發中更加方便。

裝箱和拆箱

總結:
1) 裝箱,就是把基本類型封裝成包裝類型
2) 拆箱,就是把包裝的類型獲取它的基本類型值
這兩個過程都是java自身自動完成。我們大家只要知道這個概念存在即可。
因爲基本類型運算速度快,引用類型(包裝類型)它有更多方法,更方便我們來開發,引申,這樣變量就形成對象,java叫面向對象開發語言,和相關後面知識就統一

強調:裝箱、拆箱概念不好理解,不管他,知道就行。實際開發爲什麼能這樣寫,知道原因即可。

類型轉換:
不同類型之間轉換

自動轉換:從小的類型轉換成大的類型。例如:byte的數據轉換int類型,自動轉換
強制轉換:從大的類型轉換成小的類型。例如:int類型的數據轉成byte類型,必須強制

package test;
public class Trans {
public static void main(String[] args) {
	//小轉大,自動
	byte b1 = 100;
	int i1 = b1;//i1整數,b1是字節,自動從字節類型轉換整數類型,java自動		 
	System.out.println(b1);
	System.out.println(i1);
	
	//大轉小,強制
	int i2 = 100;			
	//byte b2 = i2;	//報錯,Type mismatch 類型不匹配: cannot convert from int to byte 不能轉換int類型到byte類型

	//提示有風險,但是開發者知道,byte中可以存下100值
	//強制轉換
	byte b2 = (byte)i2;		//(類型)強制把i2轉成byte類型
	
	System.out.println(i2);
	System.out.println(b2);
}}

記住:強制轉換寫法就夠了
byte b = (byte) i2

java提供運算符

1)%,取餘,偶數和奇數,redis分佈式底層工作原理hash一致性算法,取餘

package test;

public class TestArea {
	public static void main(String[] args) {
		//憑什麼說它是一個偶數=2的倍數,整除沒有餘數就是偶數,如果有餘數就是奇數
		

	//取餘
	int i = 11;		
	if(i % 2 == 0) {			//判斷語句if(條件),分支語句
		//條件真,執行這裏的代碼
		System.out.println(i+"是偶數");
	}else {
		//條件假,執行這裏的代碼
		System.out.println(i+"是奇數");
	}
	}
}

2)++自加,--自減,java特色

```java
package test;

public class TestArea {
	public static void main(String[] args) {
		int i = 10;
		int j = i -1;
		System.out.println(j);
		
		int x = 10;
		x = x - 1;
		int y = x;
		System.out.println(y);
		
		int a = 10;
		a--;		//a = a-1;  a--就是這句話縮寫
		System.out.println(a);
		
		a++;	//a = a+1; 	a++就是這句話縮寫
		System.out.println(a);
		
	}
}
package test;

public class TestArea {
	public static void main(String[] args) {
		int count = 5;
		System.out.println(++count);	//6,當前值:5+1=6, count=6,print 6
		System.out.println(count++);	//6,當前值:6,print 6,6+1=count=7  
		
		System.out.println(--count);		//6,當前值:7,7-1=6,count=6,print 6
		System.out.println(count--);		//6,當前值:6,print 6,count=6-1,當前count=5
		
		System.out.println(count);
		
		//++x 在先執行++操作,在打印
		//x++,先打印,後執行++操作		
	}
}

這段程序比較燒腦,程序不是老師講你立刻就能懂,課下再次去一步步分析解決,把每一步過程推演過來。通過打印結果驗證推演過程。
如果推演出錯,亂了,從頭重新推演。

課後反覆練習

3) 三目運算符
Java中唯一一個三目運算符
z=x+y兩目運算,第一目x,第二目y
z=(x>y)?x:y 注意語法

1) 判斷小括號中條件(判斷表達式:true/fase,布爾結果)
2) 如果判斷結果爲true,執行第二目內容,返回x
3) 如果判斷結果爲false,執行第三目內容,返回y
簡單快捷,一句話表達if判斷語句,替代5行if語句,簡寫。

小結:
1) 包裝類型,基本類型都有對應
a) Byte字節(byte)、Short短整型(short)、Integer整型(int)、Long長整型(long)
b) Float單精度浮點數(float)、Double雙精度浮點數(double)
c) Character字符(char)、Boolean布爾(boolean)
2) 什麼時候使用基本類型,什麼時候使用包裝類型(先記住原則)
a) 在方法中儘量使用基本類型
b) 在對象傳遞時,pojo
我不知道,在哪裏使用呢?看別人代碼。老師案例。
3) 裝箱,拆箱
a) 裝箱,Integer i = 10;,把整型(默認寫一個數字)自動放入到包裝類型中,過程叫做裝箱。Integer i = new Integer(10);
b) 拆箱,int j = i;,把i是Integer包裝類型,利用包裝類型額外提供方法intValue(),獲取i對象的真正整數值10,把10給j整數類型變量。
c) 裝箱、拆箱它把基礎類型和包裝類型之間轉換,自動實現。開發者無需寫代碼,開發起來更加簡潔。
4) 類型之間轉換
a) byte b = 120; int i = b;,120是一個字節類型,i是整數類型,自動轉換(小的可以放入大的容器中:小轉大)

b) int i =100; byte b= (byte)i;

強制轉換就把前面3個字節的內容砍掉了,就留下最後一個字節的內容,這樣就可以放入到字節類型變量中。(大轉小,強制轉換)
問題:大轉小時,可能造成數據丟失。開發者一定要清晰,是否可以丟失!!,切記!!!
5) 運算符。其他簡單運算符後面開發中都會遇到,
a) 取餘%
5%2=1
2%2=0
b) 自加++,自減—(燒腦,多演算、推演,看操作結果,來驗證思路是否正確,比較難)後期編程使用很多,用多了非常熟悉
i++,先執行i,在i=i+1
i–,先執行i,在i=i-1
++i,先i=i+1,在執行結果
–i,先i=i-1,在執行結果
c) 三目運算符,java唯一一個,非常特殊,固定結構:(判斷條件)? 結果1 : 結果2,類似一個if判斷語句
int r = (x>y)?x:y 如果x>y是成立的,結果true真,返回r=x;如果x>y不成立,結果false假,返回r=y。

問題:

“字符串”直接在控制檯中展現
+叫做字符串連接符,把加號兩邊內容連接起來
q是一個變量,就會翻譯成它的當前值

a是一個變量,就會翻譯成它的當前值,a=10,結果10
控制檯:q=10,a=10

Ascii,美國計算機規定英文26個字母,a~z,還有特殊符號,#$%^,還有製表符,tab鍵。。不可見字符。放在表中,ascii碼錶。
計算機只有0和1,ascii碼錶出現就可以把鍵盤字符,對應一個整數,最後整數可以翻譯成0和1一串數字,翻譯過來計算機就可以識別。
就像我現在在敲鍵盤字母,會被翻譯中文字。是一樣道理。
百度。

我按下鍵盤a小寫,操作系統鍵盤接收到a,查詢ascii碼錶,整數97,在查詢二進制
0110001,計算機就可以識別這個二進制,存儲到內存中。內存(只有0和1)

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