JavaSE學習總結(二)——Java語言基礎
目錄
- 一、Java程序預覽
- 1.1、Hello World
- 1.2、Eclipse使用
- 1.2.1、項目位置
- 1.2.2、重置窗口布局
- 1.2.3、設置字體
- 1.2.4、修改控制臺字體
- 1.2.4、項目的導入與保存
- 1.2.5、修改快捷鍵
- 1.2.6、重命名
- 1.2.7、編碼
- 1.2.8、設置JDK本地JavaDOC API路徑及源碼路徑
- 1.3、快捷鍵
- 1.3.1、Eclipse快捷鍵大全
- 1.4、調試(debug)
- 1.4.1、設置斷點
- 1.4.2、啟動調試
- 1.4.3、執行調試
- 二、類型
- 2.1、java中常用的類型
- 三、輸入與包
- 四、流程控制
- 4.0、if條件分支
- 4.1、for循環
- 4.2、while循環
- 4.3、do-while循環
- 4.4、if-else多條件分支
- 4.5、switch開關分支
- 五、包與註釋
- 六、數組
- 6.1、 一維數組
- 6.2、二維數組
- 6.2.1、二維數組的定義與使用基礎
- 6.2.2、二維數組賦值
- 6.2.3、二維數組應用
- 6.2.4、方法與排序
- 七、練習與筆記
- 八、推薦學習網站
- 八、示例與視頻
一、Java程序預覽
Java的語法與C非常類似,這裏先使用幾個非常簡單的程序以點帶面來區分C語Java的區分再細講每個知識點。該文僅針對有編程基礎的朋友參考。
1.1、Hello World
創建java項目
新建一個類
運行
1.2、Eclipse使用
1.2.1、項目位置
在項目上右鍵 ->properties ->location
在項目上alt+enter鍵也可以打開項目屬性
1.2.2、重置窗口布局
顯示窗口,如控制臺
選擇show view
1.2.3、設置字體
window->preferences
1.2.4、修改控制臺字體
1.2.4、項目的導入與保存
點擊選擇項目
完成
1.2.5、修改快捷鍵
默認快捷鍵為alt+/,可以修改為其它習慣的快捷鍵,如tab,tab
1.2.6、重命名
有時我們需要將類名或文件名修改,不能隨意的原因是因為一個類可能被其它的類所引用
1.2.7、編碼
Window -> Preferences -> General -> Workspace -> Text file encoding -> Other
萬國碼 unicode
utf-8 gb-2312-80 big5
Window -> Preferences -> Web -> JSP Files -> Text file encoding-> Other:
1.2.8、設置JDK本地JavaDOC API路徑及源碼路徑
還都生成的是無意義的變量名,這樣可能會對含有相同類型的變量參數的調用順序造成幹擾;
按Ctrl+點擊系統對象可以查看源代碼,源代碼位置:
這種問題,我們把JDK或者相應Jar包的源碼導入進去就能避免了:
Window -> Preferences -> Java -> Installed JREs -> Edit:
選中設置好的JRE目錄,編輯,然後全選 JRE system libraries 下的所有Jar包,點擊右邊的 Source Attachment;
External location 下,選中JDK安裝目錄下的src.zip 文件,一路OK 下來。
1.3、快捷鍵
1.3.1、Eclipse快捷鍵大全
Ctrl+1 快速修復(最經典的快捷鍵)
Ctrl+D: 刪除當前行
Ctrl+Alt+↓ 復制當前行到下一行(復制增加)
Ctrl+Alt+↑ 復制當前行到上一行(復制增加)
Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
Alt+↑ 當前行和上面一行交互位置(同上)
Alt+← 前一個編輯的頁面
Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
Alt+Enter 顯示當前選擇資源(工程,or 文件 or文件)的屬性
Shift+Enter 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置,不一定是最後)
Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
Ctrl+Q 定位到最後編輯的地方
Ctrl+L 定位在某行 (對於程序超過100的人就有福音了)
Ctrl+M 最大化當前的Edit或View (再按則反之)
Ctrl+/ 註釋當前行,再按則取消註釋
Ctrl+O 快速顯示 OutLine
Ctrl+T 快速顯示當前類的繼承結構
Ctrl+W 關閉當前Editer
Ctrl+K 參照選中的Word快速定位到下一個
Ctrl+E 快速顯示當前Editer的下拉列表(如果當前頁面沒有顯示的用黑體表示)
Ctrl+/(小鍵盤) 折疊當前類中的所有代碼
Ctrl+×(小鍵盤) 展開當前類中的所有代碼
Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)
Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J後,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)
Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從後往前查)
Ctrl+Shift+F4 關閉所有打開的Editer
Ctrl+Shift+X 把當前選中的文本全部變為小寫
Ctrl+Shift+Y 把當前選中的文本全部變為小寫
Ctrl+Shift+F 格式化當前代碼
Ctrl+Shift+P 定位到對於的匹配符(譬如{}) (從前面定位後面時,光標要在匹配符裏面,後面到前面,則反之)
下面的快捷鍵是重構裏面常用的,本人就自己喜歡且常用的整理一下(註:一般重構的快捷鍵都是Alt+Shift開頭的了)
Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變量和類的Rename,比手工方法能節省很多勞動力)
Alt+Shift+M 抽取方法 (這是重構裏面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定)
Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數字和字符串抽取成一個變量,尤其是多處調用的時候)
Alt+Shift+F 把Class中的local變量變為field變量 (比較實用的功能)
Alt+Shift+I 合並變量(可能這樣說有點不妥Inline)
Alt+Shift+V 移動函數和變量(不怎麽常用)
Alt+Shift+Z 重構的後悔藥(Undo)
1.3.2、
1.4、調試(debug)
1.4.1、設置斷點
當程序運行到該位置時將中斷,等待你的下一步指示。
在代碼前雙擊用於設置與取消斷點。
1.4.2、啟動調試
點擊工具欄中的“debug”按鈕可以啟動調試。
可以選擇切換視圖,切換後的效果:
1.4.3、執行調試
單步進入:一步一步執行到每一個細節
單步跳過:只計算當前結果不會進行細節
查看運行時的變量
在遇到邏輯錯誤時請調試。
二、類型
2.1、java中常用的類型
double 是64位package com.zhangguo.c139.chapter2; public class Demo1 { public static void main(String[] args) { //數字 //整型 int i1=100; //長整型 long i2=998877665544332211l; //短整型 short i3=235; //浮點型 double d1=3.5; //雙精度 double d2=3; float f1=(float)3.5; //單精度 float f2=3.5f; //單精度 //布爾類型 boolean true真/false假 boolean isPass=true; boolean isOk=false; boolean isBig=5>8; if(isPass){ System.out.println("通過了"); }else{ System.out.println("未通過"); } //單字符 char f=‘女‘; char m=‘男‘; //字符串 String s1="Hello 中文!"; String s2=1+""; //轉換成String } }
運行:
小轉大,類型匹配
double d=5;
String s="Hello"+9527
2.3、強制轉換
大轉小,類型適應(數字轉數字)
int i=(double)198.5;
2.4、不同類型間的強制轉換
String name = "9527"; int brother = Integer.parseInt(name) + 1; System.out.println(brother); double d = Double.parseDouble(name); Boolean.parseBoolean(name); float f = Float.parseFloat(name);
輸出:
三、輸入與包
package com.zhangguo.chapter1; //導入包,同一個包不用導入直接使用,不同的包需導入 import java.util.Scanner; import com.zhangguo.chapter1.Math1; /** * 輸入 * @author Administrator * */ public class Math2 { public static void main(String[] args) { //定義掃描器 Scanner input=new Scanner(System.in); //定義變量 int n=input.nextInt(); //等待輸入 //String name=input.next(); //輸入字符 //float mark=input.nextFloat(); //輸入單精度數字 //double pi=input.nextDouble(); //輸入雙精度數字 //條件 判斷 if(n==0){ System.out.println("零"); }else if(n%2==1){ //如果一個數與2求余為1 System.out.println("奇數"); }else{ System.out.println("偶數"); } } }
輸出3位數到指定數之間的中能同時被3或5整除的數
package com.zhangguo.c139.chapter2; //包 //導包 import java.util.Scanner; public class InputDemo { public static void main(String[] args) { //創建掃描器對象 Scanner input=new Scanner(System.in); // 輸出3位數到指定數之間的中能同時被3或5整除的數 System.out.print("請輸入n:"); //從鍵盤輸入 int n = input.nextInt(); for (int i = 100; i <= n; i++) { if(i%3==0&&i%5==0){ System.out.println(i); } } } }
a)、導入包,導入類
同一個包中的類可以直接引用
不同包中的類型需要導入,使用import,import java.util.Scanner;
如需使用某個包下的所有類,則使用*號,如import java.util.*;
b)、輸入
定義掃描器
使用掃描器對象的next*()方法
package com.zhangguo.chapter1; //導入包,同一個包不用導入直接使用,不同的包需導入 import java.util.Scanner;/** * 輸入 * @author Administrator * */ public class Math2 { public static void main(String[] args) { //定義掃描器 Scanner input=new Scanner(System.in); System.out.print("請輸入一個數:"); //定義變量 int n=input.nextInt(); //等待輸入 //String name=input.next(); //輸入字符 //float mark=input.nextFloat(); //輸入單精度數字 //double pi=input.nextDouble(); //輸入雙精度數字 //條件 判斷 if(n==0){ System.out.println("零"); }else if(n%2==1){ //如果一個數與2求余為1 System.out.println("奇\t數"); }else{ System.out.println("偶數"); } } }
四、流程控制
4.0、if條件分支
判斷一個數是奇數還是偶數
package com.zhangguo.chapter1; /** * 判斷一個數是奇數還是偶數 * @author Administrator * */ public class Math1 { public static void main(String[] args) { //定義變量 int n=0; //條件 判斷 if(n==0){ System.out.println("零"); }else if(n%2==1){ //如果一個數與2求余為1 System.out.println("奇數"); }else{ System.out.println("偶數"); } } }
4.1、for循環
for循環計算1到該數間能被3和5同時整除的數之和
package com.zhangguo.chapter1; //導入包,同一個包不用導入直接使用,不同的包需導入 import java.util.Scanner; /** * 計算1到該數間能被3和5同時整除的數之和 * * @author Administrator * */ public class Math3 { public static void main(String[] args) { // 定義掃描器 Scanner input = new Scanner(System.in); // 默認的提示 alt+/ // 提示輸入 System.out.print("請輸入一個數:"); // 執行輸入 int n = input.nextInt(); int sum = 0; // 循環 for (int i = 1; i <= n; i++) { // 判斷,邏輯運算,與C一樣,&&與,||或,!非 if (i % 3 == 0 && i % 5 == 0) { // 累加 sum = sum + i; } } System.out.println("總和是:" + sum); } }
運行結果:
4.2、while循環
while循環計算1到該數間能被3和5同時整除的數之和
package com.zhangguo.chapter1; import java.util.Scanner; /** * while循環計算1到該數間能被3和5同時整除的數之和 * */ public class Math6 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("請輸入一個數:"); int n=input.nextInt(); int i=1,sum=0; while(i<=n){ if(i%3==0&&i%5==0){ sum=sum+i; } i++; } System.out.println("總和是:"+sum); } }
break:結束當前循環
package com.zhangguo.chapter1; import java.util.Scanner; /** * while循環計算1到該數間能被3和5同時整除的數之和 * */ public class Math6 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("請輸入一個數:"); int n=input.nextInt(); int i=1,sum=0; while(i<=n){ if(i%3==0&&i%5==0){ sum=sum+i; System.out.println(i); break; } i++; } System.out.println("總和是:"+sum); System.out.println("i的值:"+i); } }
continue:結束當次循環,繼續下一次循環
package com.zhangguo.chapter1; import java.util.Scanner; /** * while循環計算1到該數間能被3和5同時整除的數之和 * */ public class Math7 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("請輸入一個數:"); int n=input.nextInt(); int i=1,sum=0; while(i<=n){ if(i%3==0&&i%5==0){ sum=sum+i; } i++; if(i<=15) {continue;} System.out.println(i); } System.out.println("總和是:"+sum); System.out.println("i的值:"+i); } }
4.3、do-while循環
do-while 輸入年齡,介於1-100之間
package com.zhangguo.chapter1; import java.util.Scanner; /** * do-while 輸入年齡,介於1-100之間 * */ public class Math8 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int age = 0; do { System.out.print("請輸入年齡:"); age = input.nextInt(); } while (age < 1 || age > 100); //條件為真,循環繼續 System.out.println("年齡是:" + age); } }
4.4、if-else多條件分支
if-else 輸入購物金額,完成商場打折功能
0-99 打9折
100-500 打8折
500以上打7折
package com.zhangguo.chapter1; import java.util.Scanner; /** * do-while 輸入年齡,介於1-100之間 * */ public class Math8 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int age = 0; String range = ""; do { System.out.print("請輸入年齡:"); age = input.nextInt(); } while (age < 1 || age > 100); // 條件為真,循環繼續 System.out.println("年齡是:" + age); if (age >= 0 && age <= 30) { range = "青年"; } else if (age >= 31 && age <= 60) { range = "中年"; } else if (age >= 61 && age <= 90) { range = "老年"; } else { range = "晚年"; } System.out.println("年齡段是:" + range); } // 0-30 青年 // 31-60 中年 // 61-90 老年 // 晚年 }
4.5、switch開關分支
switch 輸入1-7 輸出星期一到星期天
等值比較
package com.zhangguo.chapter1; import java.util.Scanner; public class Math9 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int week = 0; System.out.print("請輸入周:"); week = input.nextInt(); switch (week) { //char int case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期天"); break; default: System.out.println("輸入錯誤"); break; } } }
五、包與註釋
a)、指定包名,相當於文件夾,一般使用倒置的域名如(com.baidu.項目名)
整理代碼
避免沖,如一個項目中有多個同名的類,可以處在不同的包中間
類可以不在任何包中,一個包中也可以有0-N個類
包與文件夾一一對應
包的聲明要放在第一行
b)、類型名,首字母大小
c)、代碼中自動插入:public static void main(String[] args)
//包名,1單行註釋 package com.zhangguo.chapter1; /** * 判斷一個數是奇數還是偶數 * @author 張果 *2文檔註釋 */ public class Demo1 { /* * 主方法,程序的入口 * 3多行註釋 */ public static void main(String[] args) { //語句 System.out.println("Hello World!"); } }
e)、註意java中有3種類型的註釋
六、數組
Java 語言中提供的數組是用來存儲固定大小的同類型元素。你可以聲明一個數組變量,如 numbers[100] 來代替直接聲明 100 個獨立變量 number0,number1,....,number99
6.1、 一維數組
a)、計算5位同學的平均成績
package com.zhangguo.chapter1; public class Math91 { public static void main(String[] args) { int[] a=new int[10]; for (int i = 0; i < a.length; i++) { a[i]=i*i; } for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }
輸出:
求平均成績與總分
package com.zhangguo.chapter2; import java.util.Scanner; public class Array2 { public static void main(String[] args) { //統計平均成績 //實例化(創建)長度為5的數組 int[] scores=new int[5]; int sum=0; //int[] scores2={20,30,50,90,100,99,19,78}; //int[] scores3=new int[]{20,30,50,90,100,99,19,78}; //int[] scores2=new int[8]; //scores2[0]=20; //scores2[1]=30; //... //輸入器 Scanner input=new Scanner(System.in); //scores.length 數組的長度 for (int i = 0; i <scores.length; i++) { scores[i]=input.nextInt(); } //遍歷數組 for (int i = 0; i < scores.length; i++) { sum=sum+scores[i]; } System.out.println("總分是:"+sum+",平均分:"+(sum/scores.length)); } }
package com.zhangguo.chapter2; import java.util.Scanner; public class Array2_2 { public static void main(String[] args) { //統計平均成績 //實例化(創建)行為3的數組,列為2的數組 double[][] scores=new double[3][2]; double sum=0; int n=0; //個數,輸入 //輸入器 Scanner input=new Scanner(System.in); //scores.length 數組的長度 for (int i = 0; i <scores.length; i++) { for (int j = 0; j < scores[i].length; j++) { scores[i][j]=input.nextDouble(); n++; } } //遍歷數組 for (int i = 0; i <scores.length; i++) { for (int j = 0; j < scores[i].length; j++) { sum+=scores[i][j]; //sum=sum+scores[i][j]; } } System.out.println("總分是:"+sum+",平均分:"+(sum/n)); } }
6.2、二維數組
6.2.1、二維數組的定義與使用基礎
定義數組並賦初值:
package zhangsan; public class C1 { public static void main(String[] args) { System.out.println("Hello"); int[][] a = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; System.out.println(a[0][2]); for (int i = 0; i < a.length; i++) { //行 for (int j = 0; j < a[i].length; j++) { //列 System.out.print(a[i][j]+" "); } System.out.println(); } } }
輸出:
6.2.2、二維數組賦值
定義數組並賦值
package zhangsan; import java.util.Scanner; public class C2 { public static void main(String[] args) { int sum=0; Scanner input=new Scanner(System.in); int[][] a = new int[3][2]; //a[0][0]=98; //a[0][1]=89; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.err.print("請輸入a["+i+"]["+j+"]="); a[i][j]=input.nextInt(); } } for (int i = 0; i < a.length; i++) { //行 for (int j = 0; j < a[i].length; j++) { //列 sum+=a[i][j]; } } System.out.println(sum); } }
輸出:
6.2.3、二維數組應用
有3名同學,每名同學有語文與數學考試成績,求平均分與總分?
package com.zhangguo.chapter2; import java.util.Scanner; public class Array2_2 { public static void main(String[] args) { //統計平均成績 //實例化(創建)行為3的數組,列為2的數組 double[][] scores=new double[3][2]; double sum=0; int n=0; //個數,輸入 //輸入器 Scanner input=new Scanner(System.in); //scores.length 數組的長度 for (int i = 0; i <scores.length; i++) { for (int j = 0; j < scores[i].length; j++) { scores[i][j]=input.nextDouble(); n++; } } //遍歷數組 for (int i = 0; i <scores.length; i++) { for (int j = 0; j < scores[i].length; j++) { sum+=scores[i][j]; //sum=sum+scores[i][j]; } } System.out.println("總分是:"+sum+",平均分:"+(sum/n)); } }
運行結果:
6.2.4、方法與排序
java中內置了非常多的工具方法如Math類、Arrays類等,使用sort可以實現給數組排序:
package com.zhangguo.chapter2; import java.util.Arrays; public class Method { public static void main(String[] args) { int a=1,b=2; int max=a>b?a:b; //三目 System.out.println(max); //算術 System.out.println(Math.max(9, 10)); int[] a1={8,9,1,3,4,5,0,-1}; //排序 Arrays.sort(a1); for (int i = a1.length-1; i>=0; i--) { System.out.print(a1[i]+" "); } //字符,字符串比較只能用equals, == String x="abc"; System.out.println(x.equals("abc")); System.out.println("abc"==x); } }
?:表達式的作用是如果表達式1為真則返回或執行第2個表達式,如果表達式為假則執行或返回第3個表達式
表達式1?表達式2:表達式3
如:int min=a<b?a:b;
七、練習與筆記
請說出下面程序的運行結果?
package a.b.c.d; public class Test { public static void main(String[] args) { for (int i = 1; i <=10; i++) { if(i%2==0){ System.out.print("a"); }else if(i%3==0){ System.out.print("b"); }else { System.out.print("c"); } } } }
cabacacaba
break在程序中的作用是什麽?他能用在那些結構中?
package a.b.c.d; public class Test2 { public static void main(String[] args) { for (int i = 0; i <10; i++) { if(i%2==0){ System.out.print("a"); }else if(i%7==0){ System.out.print("b"); break; }else { System.out.print("c"); } } } }
acacacab
continue在程序中的作用是什麽?他能用在那些結構中?
當輸入0、2、7時程序分別輸出什麽?
package a.b.c.d; import java.util.Scanner; public class TestC { public static void main(String[] args) { Scanner input=new Scanner(System.in); String[] weeks={"天","一","二","三","四","五","六"}; int index=input.nextInt(); System.out.println("星期"+weeks[index]); } }
上機練習,用戶註冊示例
package com.zhangguo.chapter2; import java.util.Scanner; /** * 註冊 * */ public class Math9 { public static void main(String[] args) { Scanner input = new Scanner(System.in); String uid,pwd; String flag; do { System.out.print("請輸入帳號:"); uid = input.next(); System.out.print("請輸入密碼:"); pwd = input.next(); System.out.println("註冊成功,您的用戶為:"+uid+"\t密碼:"+pwd); System.out.print("是否繼續(y/n):"); flag=input.next(); } while (flag.equals("y")); //條件為真,循環繼續 } }
運行結果:
八、推薦學習網站
http://www.maiziedu.com/
http://www.imooc.com/
http://www.jikexueyuan.com/
https://ke.qq.com/
http://www.chuanke.com/
八、示例與視頻
第一次視頻:http://pan.baidu.com/s/1bp7pTjL
JDK8下載:http://pan.baidu.com/s/1nuSuIKT
Eclipse下載:http://pan.baidu.com/s/1c2koakg
第三次視頻:http://pan.baidu.com/s/1mhAfWSg (JavaSE_第2章第3次_數組,方法,復習流控)
上課示例:http://files.cnblogs.com/files/best/JavaSE02.7z
作業:
在這裏找 http://www.cnblogs.com/best/p/5991771.html 5個題
在這裏找 http://www.cnblogs.com/best/p/5991751.html 5個題
所有課後練習,包含預習,簡答,編程 All
JavaSE學習總結(二)——Java語言基礎