第一章開發(fā)工具 IntelliJ IDEA
1.1 開發(fā)工具概述
IDEA是—個專門針對Java的集成開發(fā)工具(IDE), 由Java語言編寫恩沛。所以祈搜,需要有JRE運行環(huán)境并配置好環(huán)境變量。 它可以極大地提升我們的開發(fā)效率笼痛∪骨铮可以自動編譯琅拌,檢查錯誤。在公司中摘刑,使用的就是IDEA進行開發(fā)进宝。
1.2 IDEA軟件安裝
此軟件集成了32位和64位,雙擊ideaIU-2017.3.2.exe進入安裝枷恕。
- 歡迎界面
- 選擇安裝路徑
- 配置安裝選項
- 開始菜單
- 安裝完畢
IDEA開發(fā)工具安裝完成
1.3 IDEA首次驅(qū)動
- 選擇不導入任何設(shè)置党晋,點擊OK
- 先擇 Create New Project
3.點擊new按鈕,配置安裝的JDK9版本
選擇JDK9目錄徐块,點擊確定
- 不使用模板
- 為工程起名字demo ,并存儲到d:\ideawork\demo目錄下未玻,如果d盤沒有這個目錄,會自動創(chuàng)建胡控。
首次新建項目時扳剿,默認的Project Location路徑有問題,如c:\xxx昼激,正確寫法為c:\xxx庇绽。更改后不會再 出現(xiàn)此類問題。
- 打開一個每日一帖對話框橙困,勾掉每次啟動顯示瞧掺,點擊close
- IDEA的工作界面,我們的項目已經(jīng)創(chuàng)建好了纷宇,如果再新建項目夸盟,點擊File->new->Project
1.4 創(chuàng)建包和類
- 展開創(chuàng)建的工程,在源代碼目錄src上像捶,鼠標右鍵上陕,選擇new->package ,鍵入包名com.itheima.demo 拓春, 點擊確定释簿。
右鍵點擊com.itheima.demo ,選擇Show in Explorer ,會發(fā)現(xiàn)創(chuàng)建包的目錄結(jié)構(gòu)。
可見com.itheima.demo ,表示創(chuàng)建了多級的文件夾硼莽。
小貼士:所謂包庶溶,就是文件夾,用來對類文件進行管理懂鸵。
- 在創(chuàng)建好的包上偏螺,鼠標右鍵,選擇new->class創(chuàng)建類匆光,鍵入類名套像。
- 在代碼編輯區(qū),鍵入主方法终息,并輸出HelloWorld夺巩。
- 運行程序贞让,在代碼編輯區(qū)鼠標右鍵,選擇Run HelloWorld即可柳譬,或在菜單中選擇Run->Run HelloWorld喳张。
1.5 字體設(shè)置
IDEA工具的默認字體非常小,代碼編輯器和控制臺的輸出字體都需要進行調(diào)整美澳。
- 點擊菜單欄上的File-->Settings-->Editor-->Font修改字體销部。
1.6 IDEA的項目目錄
-
我們創(chuàng)建的項目,在d:\ideawork目錄的demo下
.idea目錄和demo.iml和我們開發(fā)無關(guān)制跟,是IDEA工具自己使用的
out目錄是存儲編譯后的.class文件
-
src目錄是存儲我們編寫的.java源文件
1.7 IDEA常用快捷鍵
快捷鍵 | 功能 |
---|---|
Alt+Enter | 導入包柴墩,自動修正代碼 |
Ctrl+Y | 刪除光標所在行 |
Ctrl+D | 復制光標所在行的內(nèi)容,插入光標位置下面 |
Ctrl+Alt+L | 格式化代碼 |
Ctrl+/ | 單行注釋 |
Ctrl+Shift+/ | 選中代碼注釋凫岖,多行注釋,再按取消注釋 |
Alt+Ins | 自動生成代碼逢净,toString哥放,get,set等方法 |
Alt+Shift+上下箭頭 | 移動當前代碼行 |
1.8 IDEA修改快捷鍵
在IDEA工具中爹土,ctrl+空格的快捷鍵甥雕,可以幫助我們補全代碼,但是這個快捷鍵和Windows中的輸入法切換快捷鍵沖突胀茵,需要修改IDEA中的快捷鍵社露。
File->Settings->keymap->Main menu->code->Completion->Basic
雙擊 Basic-->remove-->Ctrl+空格
再次雙擊 Basic-->Add Keyboard-->鍵入 Alt+/-->點擊OK
1.9 IDEA導入和關(guān)閉項目
關(guān)閉IDEA中已經(jīng)存在的項目,File-->Close Project
File->Close Project這時IDEA回到了剛啟動界面琼娘,點擊項目上的X峭弟,IDEA中就沒有這個項目了
在IDEA的啟動界面上,點擊OPEN 脱拼,選擇項目目錄即可
小貼士:
若想通過IDEA同時開啟多個項目瞒瘸,點擊OPEN打開項目時,點擊New Window按鈕
第二章 方法
2.1 回顧--方法的定義和調(diào)用
前面的課程中熄浓,使用過嵌套循環(huán)輸出矩形情臭,控制臺打印出矩形就可以了,因此將方法定義為void ,沒有返回值赌蔑。 在主方法main中直接被調(diào)用俯在。
public class Method_Demo1 {
public static void main(String[] args) {
print();
}
private static void print() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 8; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
print方法被main方法調(diào)用后直接輸出結(jié)果,而main方法并不需要print方法的執(zhí)行結(jié)果娃惯,所以被定義為void跷乐。
2.2 定義方法的格式詳解
修飾符 返回值類型 方法名 ( 參數(shù)列表 ){
// 代碼省略 ...
return 結(jié)果 ;
}
修飾符:public static固定寫法
返回值類型:表示方法運行的結(jié)果的數(shù)據(jù)類型,方法執(zhí)行后將結(jié)果返回到調(diào)用者
參數(shù)列表:方法在運算過程中的未知數(shù)據(jù)石景,調(diào)用者調(diào)用方法時傳遞
return:將方法執(zhí)行后的結(jié)果帶給調(diào)用者劈猿,方法執(zhí)行到return ,整體方法運行結(jié)束
小貼士: return 結(jié)果; 這里的"結(jié)果"在開發(fā)中拙吉,我們正確的叫法成為方法的返回值
2.3 定義方法的兩個明確
-
需求:定義方法實現(xiàn)兩個整數(shù)的求和計算。
明確返回值類型:方法計算的是整數(shù)的求和揪荣,結(jié)果也必然是個整數(shù)筷黔,返回值類型定義為int類型。
明確參數(shù)列表:計算哪兩個整數(shù)的和仗颈,并不清楚佛舱,但可以確定是整數(shù),參數(shù)列表可以定義兩個int類型的 變量挨决,由調(diào)用者調(diào)用方法時傳遞
public class Method_Demo2 {
public static void main(String[] args) {
// 調(diào)用方法 getSum 请祖,傳遞兩個整數(shù),這里傳遞的實際數(shù)據(jù)又稱為實際參數(shù)
// 并接收方法計算后的結(jié)果脖祈,返回值
int sum = getSum(5, 6);
System.out.println(sum);
}
/* 定義計算兩個整數(shù)和的方法
返回值類型肆捕,計算結(jié)果是 int
參數(shù):不確定數(shù)據(jù)求和,定義int 參數(shù).參數(shù)又稱為形式參數(shù) */
public static int getSum(int a, int b) {
return a + b;
}
}
程序執(zhí)行盖高,主方法main調(diào)用get Sum方法慎陵,傳遞了實際數(shù)據(jù)5和6,兩個變量a和b接收到的就是實際參數(shù)喻奥,并 將計算后的結(jié)果返回席纽,主方法main中的變量sum接收的就是方法的返回值。
2.4 調(diào)用方法的流程圖解
2.5 定義方法練習
練習一
比較兩個整數(shù)是否相同
-
分析:定義方法實現(xiàn)功能撞蚕,需要有兩個明確润梯,即返回值和參數(shù)列表。
明確返回值:比較整數(shù)甥厦,比較的結(jié)果只有兩種可能纺铭,相同或不同,因此結(jié)果是布爾類型刀疙,比較的結(jié)果相同為true彤蔽。
明確參數(shù)列表:比較的兩個整數(shù)不確定,所以默認定義兩個int類型的參數(shù)庙洼。
public class Method_Demo3 {
public static void main(String[] args) {
//調(diào)用方法compare顿痪,傳遞兩個整數(shù)
//并接收方法計算后的結(jié)果,布爾值
boolean bool = compare(3, 8);
System.out.println(bool);
}
/*
定義比較兩個整數(shù)是否相同的方法
返回值類型油够,比較的結(jié)果布爾類型
參數(shù):不確定參與比較的兩個整數(shù)
*/
public static boolean compare(int a, int b) {
if (a == b) {
return true;
} else {
return false;
}
}
}
練習二
計算1+2+3...+100的和
-
分析:定義方法實現(xiàn)功能蚁袭,需要有兩個明確,即返回值和參數(shù)石咬。
- 明確返回值:1~100的求和揩悄,計算后必然還是整數(shù),返回值類型是int
- 明確參數(shù):需求中已知到計算的數(shù)據(jù)鬼悠,沒有未知的數(shù)據(jù)删性,不定義參數(shù)
public class Method_Demo4 {
public static void main(String[] args) {
//調(diào)用方法ge tSum
//并接收方法計算后的結(jié)果亏娜,整數(shù)
int sum = getSum();
System.out.println(sum);
}
/*
定義計算 1~100 的求和方法
返回值類型,計算結(jié)果整數(shù)int
參數(shù):沒有不確定數(shù)據(jù)
*/
public static int getSum() {
//定義變量保存求和
int sum = 0;
//從1開始循環(huán)蹬挺,到100結(jié)束
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
return sum;
}
}
練習三
實現(xiàn)不定次數(shù)打印
-
分析:定義方法實現(xiàn)功能维贺,需要有兩個明確,即返回值和參數(shù)巴帮。
明確返回值:方法中打印出HelloWorld即可溯泣,沒有計算結(jié)果,返回值類型void榕茧。
明確參數(shù):打印幾次不清楚垃沦,參數(shù)定義一個整型參數(shù)
public class Method_Demo5 {
public static void main(String[] args) {
//調(diào)用方法printHelloWorld,傳遞整數(shù)
printHelloWorld(9);
}
/*
定義打印HelloWorld方法
返回值類型用押,計算沒有結(jié)果
void 參數(shù):不確定打印幾次
*/
public static void printHelloWorld(int n) {
for (int i = 0; i < n; i++) {
System.out.println("HelloWorld");
}
}
}
2.6 定義方法的注意事項
- 定義位置肢簿,類中方法外面。
- 返回值類型蜻拨,必須要和 return 語句返回的類型相同译仗,否則編譯失敗。
//返回值類型要求是in t
public static int getSum() {
return 5;// 正確官觅,int 類型
return 1.2;// 錯誤,類型不匹配
return true;// 錯誤阐污,類型不匹配
}
- 不能在return后面寫代碼休涤,return意味著方法結(jié)束,所有后面的代碼永遠不會執(zhí)行笛辟,屬于無效代碼功氨。
public static int getSum(int a,int b) {
return a + b;
System.out.println("Hello");//錯誤,re turn已經(jīng)結(jié)束手幢,這里不會執(zhí)行捷凄,無效代碼
}
2.7 調(diào)用方法的三種形式
- 直接調(diào)用:直接寫方法名調(diào)用
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("方法被調(diào)用");
}
- 賦值調(diào)用:調(diào)用方法围来,在方法前面定義變量跺涤,接收方法返回值
public static void main(String[] args) {
int sum = getSum(5,6);
System.out.println(sum);
}
public static int getSum(int a,int b) {
return a + b;
}
-
輸出語句調(diào)用:
- 在輸出語句中調(diào)用方法System.out.println(方法名())。
public static void main(String[] args) {
System.out.println(getSum(5,6));
}
public static int getSum(int a,int b) {
return a + b;
}
- 不能用輸出語句調(diào)用void類型的方法监透。因為方法執(zhí)行后沒有結(jié)果桶错,也就打印不出任何內(nèi)容。
public static void main(String[] args) {
System.out.println(printHello());//錯誤胀蛮,不能輸出語句調(diào)用void類型方法
}
public static void printHello() {
System.out.println("Hello");
}
2.8 方法重載
方法重載:指在同一個類中院刁,允許存在一個以上的同名方法,只要它們的參數(shù)列表不同即可粪狼,與修飾符和返 回值類型無關(guān)退腥。
參數(shù)列表:個數(shù)不同任岸,數(shù)據(jù)類型不同,順序不同狡刘。
重載方法調(diào)用:JVM通過方法的參數(shù)列表享潜,調(diào)用不同的方法。
2.9 方法重載練習
練習一
比較兩個數(shù)據(jù)是否相等颓帝。參數(shù)類型分別為兩個byte類型米碰,兩個short類型,兩個int類型购城,兩個long類型吕座,并在main方法中進行測試。
public class Method_Demo6 {
public static void main(String[] args) {
// 定義不同數(shù)據(jù)類型的變量
byte a = 10;
byte b = 20;
short c = 10;
short d = 20;
int e = 10;
int f = 10;
long g = 10;
long h = 20;
// 調(diào)用
System.out.println(compare(a, b));
System.out.println(compare(c, d));
System.out.println(compare(e, f));
System.out.println(compare(g, h));
}
// 兩個 byte 類型的
public static boolean compare(byte a, byte b) {
System.out.println("byte");
return a == b;
}
// 兩個 short 類型的
public static boolean compare(short a, short b) {
System.out.println("short");
return a == b;
}
// 兩個 int 類型的
public static boolean compare(int a, int b) {
System.out.println("int");
return a == b;
}
// 兩個 long 類型的
public static boolean compare(long a, long b) {
System.out.println("long");
return a == b;
}
}
練習二
判斷哪些方法是重載關(guān)系瘪板。
public static void open(){}
public static void open(int a){}
static void open(int a,int b){}
public static void open(double a,int b){}
public static void open(int a,double b){}
public void open(int i,double d){}
public static void OPEN(){}
public static void open(int i,int j){}
練習三
模擬輸出語句中的println方法效果吴趴,傳遞什么類型的數(shù)據(jù)就輸出什么類型的數(shù)據(jù),只允許定義一個方法名 println侮攀。
public class Method_Demo7 {
public static void println(byte a) {
System.out.println(a);
}
public static void println(short a) {
System.out.println(a);
}
public static void println(int a) {
System.out.println(a);
}
public static void println(long a) {
System.out.println(a);
}
public static void println(float a) {
System.out.println(a);
}
public static void println(double a){
System.out.println(a);
}
public static void println(char a) {
System.out.println(a);
}
public static void println(boolean a) {
System.out.println(a);
}
public static void println(String a) {
System.out.println(a);
}
}