軟件即一系列按照特定順序組織的計算機數據和指令的集合。有系統軟件和應用軟件之分。java
》圖形化界面(簡稱GUI)是指採用圖形方式顯示的計算機操做用戶界面。編程
》命令行界面(簡稱CLI)是用戶經過鍵盤輸入指令,計算機獲得指令後,予以執行。數組
dir : 列出當前目錄下的文件以及文件夾
md : 建立目錄
rd : 刪除目錄
cd : 進入指定的目錄
cd.. : 退回到上一級目錄
cd : 退回到根目錄
del : 刪除文件
exit : 退出DOS命令窗口
第一代語言:機器語言,指令是以二進制代碼形式存在。app
第二代語言:彙編語言,使用助記符表示一條機器指令。編程語言
第三代語言:高級語言,是種獨立於機器,面向對象或者對象的語言。模塊化
1991年 Green項目,開發語言最初命名爲Oak (橡樹)工具
1994年,開發組意識到Oak 很是適合於互聯網開發工具
1996年,發佈JDK 1.0,約8.3萬個網頁應用Java技術來製做編碼
1997年,發佈JDK 1.1,JavaOne會議召開,創當時全球同類會議規模之最spa
1998年,發佈JDK 1.2,同年發佈企業平臺J2EE
1999年,Java分紅J2SE、J2EE和J2ME,JSP/Servlet技術誕生
2004年,發佈里程碑式版本:JDK 1.5,爲突出此版本的重要性,改名爲JDK 5.0
2005年,J2SE -> JavaSE,J2EE -> JavaEE,J2ME -> JavaME
2009年,Oracle公司收購SUN,交易價格74億美圓
2011年,發佈JDK 7.0
2014年,發佈JDK 8.0,是繼JDK 5.0以來變化最大的版本
2017年,發佈JDK 9.0,最大限度實現模塊化
2018年3月,發佈JDK 10.0,版本號也稱爲18.3
2018年9月,發佈JDK 11.0,版本號也稱爲18.9
1.1編寫
//建立一個後綴名爲.java的文件:HelloWorld.java public class HelloWorld{ public static void main(String[]args){ System.out.println("HelloWorld"); } }
1.2編譯
javac HelloWolrd.java 會生成一個後綴名爲.class的字節碼文件
1.3運行
java HelloWorld 注意要去掉.class後綴名
1.4小結
2.常見的Bug及解決方法
1.單行註釋 格式: //註釋文字 2.多行註釋 格式:/*註釋文字*/ 單行和多行註釋,不會被JVM解釋執行,多行註釋不容許嵌套。 3.文檔註釋 格式/**註釋文字*/ 文檔註釋能夠被JDK提供的工具javadoc所解析,生成網頁形式的說明文檔
被Java語言賦予了特殊含義,用作專門用途的字符串,關鍵字全部的字母小寫。
現有Java版本還沒有使用,但之後版本可能會做爲關鍵字使用。(goto、const)
Java對各類變量、方法和類等要素命名時使用的字符序列爲標識符。(本身起名字的地方都叫標識符)
1.由26個英文字母大小寫,0-9,_或$組成 2.數字不可開頭 3.不可使用關鍵字和保留字,但能包含關鍵字和保留字 4.Java中嚴格區分大小寫,長度無限制 5.標識符中不能夠包含空格
聲明變量 語法: <數據類型><變量名稱>; int test; 變量的賦值 語法: <變量名稱> = <值>; test = 10; 聲明和賦值變量 語法:<數據類型><變量名稱> = <值>;; int test = 10;
類型 儲存空間 範圍 (1)整數 byte 1字節 -128~127 short 2字節 正負3萬多 int 4字節 正負21億 整數默認的類型是int類型 long 8字節 19位數字 表示long類型數據後面須要加L/l (2)浮點數 float 4字節 表示float類型數據後面須要加F/f,取值範圍大於8字節的long double 8字節 浮點數默認是double類型 (3)字符 char 2字節 (4)布爾 boolean 1字節 取值爲true或者false
public class Type{ public static void main(String[]args){ //1.整數類型定義byte、short、int、long byte a = 10; short b = 11; int c = 12; long d = 1000L;//long類型要加上L/l //2.浮點數定義 float f = 1.23F;//float類型要加上F/f double e = 2.6; //3.char類型 char r = 'A'; //char類型中只能放一個字符 不可爲空 //4.布爾類型 boolean lean = true;//取值只有true/false } }
int + int int + long ==> long + long (把int轉換成long: 從小到大,自動類型轉換) 例子1: int i = 1; byte b = 2; int c = i + b; i是int型,b是byte型,二者運算自動類型轉換爲int型
轉後類型 變量名稱 = (轉後類型)轉前數據或者變量; long類型(8個字節)的數字10: long num = 10L; long類型強制類型轉換成int類型(4個字節): int a = (int)num;//把num中的數據強制類型轉換成int類型,並把結果賦值給int變量a
進制的概念:逢幾進一就叫作幾進制 進制的分類: 十進制: 逢十進一 每位的數字0-9 二進制: 逢二進一 每位的數字0-1 八進制: 逢八進一 每位的數字0-7 十六進制: 逢十六進一 每位的數字0-9,10(A/a),11(B/b),12(C/c),13(D/d),14(E/e),15(F/f)
1.二進制轉十進制(8421編碼): (二進制數字的每一位(從右向左 )上隱藏了一個2的多少次方,第1位是2的0次方,第2位是2的1次方...): 1101 = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 = 1*1 + 0*2 + 1*4 + 1*8 = 1 + 0 + 4 + 8 = 13 1111 = 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 = 1*1 + 1*2 + 1*4 + 1*8 = 1 + 2 + 4 + 8 = 15 2.十進制轉二進制: 除以2取餘數,倒過來寫 十進制的13轉換成二進制: 1101 十進制的75轉換成二進制: 1001011
算術運算符: + - + - * / % (前)++ (後)++ (前)-- (後)-- +
【經典代碼】
//除號:/ int num1 = 12; int num2 = 5; int result1 = num1 / num2; System.out.println(result1);//2 // %:取餘運算 //結果的符號與被模數的符號相同 //開發中,常用%來判斷可否被除盡的狀況。 int m1 = 12; int n1 = 5; System.out.println("m1 % n1 = " + m1 % n1); int m2 = -12; int n2 = 5; System.out.println("m2 % n2 = " + m2 % n2); int m3 = 12; int n3 = -5; System.out.println("m3 % n3 = " + m3 % n3); int m4 = -12; int n4 = -5; System.out.println("m4 % n4 = " + m4 % n4); //(前)++ :先自增1,後運算 //(後)++ :先運算,後自增1 int a1 = 10; int b1 = ++a1; System.out.println("a1 = " + a1 + ",b1 = " + b1); int a2 = 10; int b2 = a2++; System.out.println("a2 = " + a2 + ",b2 = " + b2); int a3 = 10; ++a3;//a3++; int b3 = a3; //(前)-- :先自減1,後運算 //(後)-- :先運算,後自減1 int a4 = 10; int b4 = a4--;//int b4 = --a4; System.out.println("a4 = " + a4 + ",b4 = " + b4);
【特別說明】
(後)++ :先運算,後自增1
(後)-- :先運算,後自減1
賦值運算符:= += -= *= /= %=
【經典代碼】
int i2,j2; //連續賦值 i2 = j2 = 10; //*************** int i3 = 10,j3 = 20; int num1 = 10; num1 += 2;//num1 = num1 + 2; System.out.println(num1);//12 int num2 = 12; num2 %= 5;//num2 = num2 % 5; System.out.println(num2); short s1 = 10; //s1 = s1 + 2;//編譯失敗 s1 += 2;//結論:不會改變變量自己的數據類型 System.out.println(s1);
運算的結果不會改變變量自己的數據類型
比較運算符(關係運算符): == != > < >= <= instanceof
【經典代碼】
int i = 10; int j = 20; System.out.println(i == j);//false System.out.println(i = j);//20 boolean b1 = true; boolean b2 = false; System.out.println(b2 == b1);//false System.out.println(b2 = b1);//true
邏輯運算符:& && | || ! ^
【經典代碼】
boolean b1 = true; b1 = false; int num1 = 10; if(b1 & (num1++ > 0)){ System.out.println("我如今在北京"); }else{ System.out.println("我如今在南京"); } System.out.println("num1 = " + num1); & && 的區別:當符號左邊是false時,&繼續執行符號右邊的運算,&&再也不執行符號右邊的運算。 | ||同理↑
位運算符:<< >> >>> & | ^ ~
【經典代碼】
int i = 21; i = -21; System.out.println("i << 2 :" + (i << 2)); System.out.println("i << 3 :" + (i << 3)); System.out.println("i << 27 :" + (i << 27)); int m = 12; int n = 5; System.out.println("m & n :" + (m & n)); System.out.println("m | n :" + (m | n)); System.out.println("m ^ n :" + (m ^ n));
格式:(條件運算符)?表達式1 : 表達式2
【經典代碼】
1.獲取兩個整數的最大值
int a = 5; int b = 6; int max = (a > b) ? a : b;
2.獲取三個數的最大值
int a = 1; int b = 2; int c = 3; int temp = (a > b) ? a : b; //先判斷兩個數的值賦值給一個變量temp int max = (temp > c) ? temp : c; //再判斷temp與c的大小
若是表達式爲true,則執行表達式1。
若是表達式爲false,則執行表達式2。
1.1 if-else條件判斷結構
書寫方法:
結構1: if(條件表達式){ 執行表達式 } 結構2:(2選1) if(條件表達式){ 執行表達式1 }else{ 執行表達式2 } 結構3:(n選1) if(條件表達式1){ 執行表達式1 }else if(條件表達式2){ ... }else{ 執行表達式n }
針對於條件表達式:
1.2 switch-case選擇結構
switch(表達式){ case 常量1: 執行語句1; //break; case 常量2: 執行語句2; //break; ... default: 執行語句n; //break; }
根據switch表達式中的值,依次匹配各個case中的常量。一旦匹配成功,則進入相應case結構中,調用其執行語句。
補充:
2.1. 循環結構的四要素
① 初始化條件 ② 循環條件 --->是boolean類型 ③ 循環體 ④ 迭代條件 說明:一般狀況下,循環結束都是由於②中循環條件返回false了。
2.2三種循環結構
for循環結構
for(①;②;④){ ③ } 執行過程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②
while循環結構
① while(②){ ③; ④; } 執行過程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②
for和while循環總結:
do - while循環結構
① do{ ③ ④ }while(②)
說明:
3. 「無限循環」結構: while(true) 或 for(;;)
如何結束一個循環結構?
4.嵌套循環
嵌套循環:將一個循環結構A聲明在另外一個循環結構B的循環體中,就構成了嵌套循環 內層循環:循環結構A 外層循環:循環結構B
說明: ① 內層循環結構遍歷一遍,只至關於外層循環循環體執行了一次 ② 假設外層循環須要執行m次,內層循環須要執行n次。此時內層循環的循環體一共執行了m * n次 ③ 外層循環控制行數,內層循環控制列數
/* ****** ****** ****** ****** */ for(int j = 1;j <= 4;j++ ){ for(int i = 1;i <= 6;i++){ System.out.print('*'); } System.out.println(); } //練習二: /* i(行號) j(*的個數) * 1 1 ** 2 2 *** 3 3 **** 4 4 ***** 5 5 */ for(int i = 1;i <= 5;i++){//控制行數 for(int j = 1;j <= i;j++){//控制列數 System.out.print("*"); } System.out.println(); }
break和continue關鍵字的使用
使用範圍 | 循環中的做用(不一樣點) | 相同點 | |
---|---|---|---|
break | swiltch-case循環結構中 | 結束當前循環 | 關鍵字後面不能聲明執行語句 |
continue | 循環結構中 | 結束當前循環 | 關鍵字後面不能聲明執行語句 |
補充:帶標籤的break和continue的使用
如何從鍵盤獲取不一樣類型的變量:須要使用Scanner類
具體實現步驟:
注意: 須要根據相應的方法,來輸入指定類型的值。若是輸入的數據類型與要求的類型不匹配時,會報異常:InputMisMatchException致使程序終止
*/ //1.導包:import java.util.Scanner; import java.util.Scanner; class ScannerTest{ public static void main(String[] args){ //2.Scanner的實例化 Scanner scan = new Scanner(System.in); //3.調用Scanner類的相關方法 System.out.println("請輸入你的姓名:"); String name = scan.next(); System.out.println(name); System.out.println("請輸入你的芳齡:"); int age = scan.nextInt(); System.out.println(age); System.out.println("請輸入你的體重:"); double weight = scan.nextDouble(); System.out.println(weight); System.out.println("你是否相中我了呢?(true/false)"); boolean isLove = scan.nextBoolean(); System.out.println(isLove); //對於char型的獲取,Scanner沒有提供相關的方法。只能獲取一個字符串 System.out.println("請輸入你的性別:(男/女)"); String gender = scan.next();//"男" char genderChar = gender.charAt(0);//獲取索引爲0位置上的字符 System.out.println(genderChar); } }