Java日報
部門:**大資料開發六部
姓名:cqmfx(阡陌飛絮)
日期:2020.10.26
備注:有些資料參考、轉自百度、菜鳥、CSDN,侵删!
大綱
一、練習項目(操作公司人員年齡)
二、IDEA安裝、設定、快捷鍵及快捷代碼
三、Debug的使用方法
四、Java 方法 和形參實參及關鍵字return的使用方法
總結練習
一、練習項目(操作公司人員年齡)
import java.util.Scanner;
public class XinZhiArge{
public static void main(String[] args){
/**
*1、scanner手動輸入數組的元素
*2、用switch
*功能 1.求其中年齡最大的 2.給年齡從小到大排序 3.插入一個元素 4.退出
* 要求能重複進行功能,然後控制退出
*/
Scanner scanner = new Scanner(System.in); //scanner函數
int [] users = new int[5];
System.out.println("請依次輸入員工的年齡:"); //錄入公司人員的年齡
for (int i = 0;i < users.length;i++){
System.out.print(" 輸入第"+ (i + 1) + "個員工的年齡:");
users[i] = scanner.nextInt();
}
boolean flag = true; //boolean函數用于控制while的開關
while (flag){ //為真,控制多次運作
System.out.println("請選擇要執行的操作:\n 1.得員工中最大的年齡 \n 2.将員工的年齡從小到大排列 \n 3.插入一個員工的年齡\n 4.退出");
int n = scanner.nextInt(); //錄入選擇case幾
System.out.println("已標明第" + n + "個選擇!");
switch (n){ //開關,是哪個就執行哪個case的語句
case 1: //比大小
int tempMax = users[0];
for (int i = 0;i < users.length;i++){
if(users[i] > tempMax){
tempMax = users[i];
}
}
System.out.println("公司最大的年齡是:"+tempMax);
System.out.println("——————————————————————————");
break;
case 2: //冒泡排序
int temp = users[0];
for (int i = 0; i <users.length - 1;i++){
for (int j = 0;j <users.length - i - 1;j++){
if (users[j] > users[j + 1]){
temp = users[j];
users[j] = users[j + 1];
users[j + 1] = temp;
}
}
}
break;
case 3: //插入元素
int[] user = new int[users.length + 1]; //定義一個比原數組長一位的新數組
for (int i = 0;i < users.length;i++){ //将原數組中的元素錄入新定義的數組中
user[i] = users[i];
}
System.out.print("請輸入需要插入的年齡:");
user[user.length-1] = scanner.nextInt(); //錄入需要插入的元素,且在在新數組的末尾插入
users = user; //将新數組指定原數組,使其為插入元素後的新數組
break;
case 4:
flag = false;
break;
default:
System.out.println("警告!!!沒有此選項!");
System.out.println("此時數組為:");
break;
}
for (int i = 0;i < users.length;i++){
System.out.println(users[i]);
}
}
}
}
二、IDEA安裝、設定、快捷鍵及快捷代碼
(1)安裝+破解
1.1、安裝
<1>點選安裝包
<2>選擇安裝路徑,一直點下一步
<3>選擇加載64位環境和 .java
<4>一直下一步,建議将IDEA安裝到c盤,使編譯運作得到速度提升
<5>最後來到讓你填郵件這個界面,安裝成功。
1.2、破解
<1>點第三個,表示先試用30天
<2>進入界面,建立一個project包
<3>将破解包拖進IDEA界面,彈出重新開機按鈕,進行重新開機
<4>重新開機時彈出安裝破解工具,預設确定就好,進去界面,安裝成功
(2)設定+插件
設定自己舒服的界面,Ctrl + Alt + s
(3)快捷鍵+快捷代碼
3.1、main方法
在類體中輸入 psvm ,回車。生成如下代碼。
public static void main(String[] args) {
}
3.2、列印輸出
在方法體中輸入 **sout ,**回車。生成如下代碼。
3.3、普通 for 循環
在方法體中輸入 **fori,**回車。生成如下代碼。
for (int i = 0; i < ; i++) {
}
3.4、增強 for 循環
一種主要用于數組的增強型 for 循環
for(聲明語句 : 表達式)
{
//代碼句子
}
在方法體中輸入 **foreach,**回車。生成如下代碼。
for ( : ) {
}
3.5、檢視更多快捷鍵
Ctrl + J
三、Debug的使用方法
(1)基本用法&快捷鍵
1.1、Debug調試的功能
> Show Execution Point (Alt + F10):如果你的光标在其它行或其它頁面,點選這個按鈕可跳轉到目前代碼執行的行。
> Step Over (F8):步過,一行一行地往下走,如果這一行上有方法不會進入方法。
> Step Into (F7):步入,如果目前行有方法,可以進入方法内部,一般用于進入自定義方法内,不會進入官方類庫的方法
> Force Step Into (Alt + Shift + F7):強制步入,能進入任何方法,檢視底層源碼的時候可以用這個進入官方類庫的方法。
> Step Out (Shift + F8):步出,從步入的方法内退出到方法調用處,此時方法已執行完畢,隻是還沒有完成指派。
> Drop Frame (預設無):回退斷點
> Run to Cursor (Alt + F9):運作到光标處,你可以将光标定位到你需要檢視的那一行,然後使用這個功能,代碼會運作至光标行,而不需要打斷點。
> Evaluate Expression (Alt + F8):計算表達式
1.2、第二組按鈕,共7個按鈕,從上到下依次如下:
> Rerun ‘xxxx’:重新運作程式,會關閉服務後重新啟動程式。
> Update ‘tech’ application (Ctrl + F5):更新程式,一般在你的代碼有改動後可執行這個功能。而這個功能對應的操作則是在服務配置裡
> Resume Program (F9):恢複程式,比如,你在第20行和25行有兩個斷點,目前運作至第20行,按F9,則運作到下一個斷點(即第25行),再按F9,則運作完整個流程,因為後面已經沒有斷點了。
> Pause Program:暫停程式,啟用Debug。目前沒發現具體用法。
> Stop ‘xxx’ (Ctrl + F2):連續按兩下,關閉程式。有時候你會發現關閉服務再啟動時,報端口被占用,這是因為沒完全關閉服務的原因,你就需要清除所有JVM程序了。
> View Breakpoints (Ctrl + Shift + F8):檢視所有斷點,後面章節會涉及到。
> Mute Breakpoints:啞的斷點,選擇這個後,所有斷點變為灰色,斷點失效,按F9則可以直接運作完程式。再次點選,斷點變為紅色,有效。如果隻想使某一個斷點失效,可以在斷點上右鍵取消Enabled,則該行斷點失效。
(2)簡單使用
① 以Debug模式啟動服務,左邊的一個按鈕則是以Run模式啟動。在開發中,我一般會直接啟動Debug模式,友善随時調試代碼
② 斷點:在左邊行号欄單擊左鍵,或者快捷鍵Ctrl+F8 打上/取消斷點,斷點行的顔色可自己去設定。
③ Debug視窗:通路請求到達第一個斷點後,會自動激活Debug視窗。如果沒有自動激活,可以去設定裡設定
④ 調試按鈕:一共有8個按鈕,調試的主要功能就對應着這幾個按鈕,滑鼠懸停在按鈕上可以檢視對應的快捷鍵。在菜單欄Run裡可以找到同樣的對應的功能
四、Java 方法 和形參實參及關鍵字return的使用方法
(0) System.out.println()
- println() 是一個方法。
- System 是系統類。
- out 是标準輸出對象。
這句話的用法是調用系統類 System 中的标準輸出對象 out 中的方法 println()。
(1)那麼什麼是方法呢?
Java方法是語句的集合,它們在一起執行一個功能。
- 方法是解決一類問題的步驟的有序組合
- 方法包含于類或對象中
- 方法在程式中被建立,在其他地方被引用
(2)方法的優點
- \1. 使程式變得更簡短而清晰。
- \2. 有利于程式維護。
- \3. 可以提高程式開發的效率。
- \4. 提高了代碼的重用性。
(3)方法的命名規則
- 1.方法的名字的第一個單詞應以小寫字母作為開頭,後面的單詞則用大寫字母開頭寫,不使用連接配接符。例如:addPerson。
- 2.下劃線可能出現在 JUnit 測試方法名稱中用以分隔名稱的邏輯元件。一個典型的模式是:
test<MethodUnderTest>_<state> 例如 testPop_emptyStack
(4)方法的定義
修飾符 傳回值類型 方法名(參數類型 參數名){
...
方法體
...
return 傳回值;
}
(5)方法語句的詳解
方法包含一個方法頭和一個方法體。下面是一個方法的所有部分:
- **修飾符:**修飾符,這是可選的,告訴編譯器如何調用該方法。定義了該方法的通路類型。
- 傳回值類型 :方法可能會傳回值。returnValueType 是方法傳回值的資料類型。有些方法執行所需的操作,但沒有傳回值。在這種情況下,returnValueType 是關鍵字void。
- **方法名:**是方法的實際名稱。方法名和參數表共同構成方法簽名。
- **參數類型:**參數像是一個占位符。當方法被調用時,傳遞值給參數。這個值被稱為實參或變量。參數清單是指方法的參數類型、順序和參數的個數。參數是可選的,方法可以不包含任何參數。
- **方法體:**方法體包含具體的語句,定義該方法的功能。
(6)方法調用
Java 支援兩種調用方法的方式,根據方法是否傳回值來選擇。
當程式調用一個方法時,程式的控制權交給了被調用的方法。當被調用方法的傳回語句執行或者到達方法體閉括号時候交還控制權給程式。
當方法傳回一個值的時候,方法調用通常被當做一個值。
四、Java 方法 和形參實參及關鍵字return的使用方法
(一)關鍵字return
1、return:必須放在方法中
2、1、如果一個方法有傳回值,那麼必須出現return,傳回方法指定類型值
2、一個方法的傳回值為void,也可以出現return,但是後面什麼也不可以寫,直接寫return ;
3、return 語句後面的内容都不在執行,這是與break不同的地方,二者雖然都可以跳出循環,但是break跳出循環,後面的額代碼還将繼續執行。
(二)形參和實參
1、形參和實參的主要功能
- 形參出現在函數定義中,在整個函數體内都可以使用,離開該函數則不能使用。
- 實參出現在主調函數中,進入被調函數後,實參變量也不能使用。
- 形參和實參的功能是作資料傳送。發生函數調用時,主調函數把實參的值傳送給被調函數的形參進而實作主調函數向被調函數的資料傳送。
2、形參和實參的差別
1.形參變量隻有在被調用時才配置設定記憶體單元,在調用結束時, 即刻釋放所配置設定的記憶體單元。是以,形參隻有在函數内部有效。 函數調用結束傳回主調函數後則不能再使用該形參變量。
2.實參可以是常量、變量、表達式、函數等, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有确定的值, 以便把這些值傳送給形參。 是以應預先用指派,輸入等辦法使實參獲得确定值。
3.實參和形參在數量上,類型上,順序上應嚴格一緻, 否則會發生“類型不比對”的錯誤。
4.函數調用中發生的資料傳送是單向的。 即隻能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 是以在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
5.當形參和實參不是指針類型時,在該函數運作時,形參和實參是不同的變量,他們在記憶體中位于不同的位置,形參将實參的内容複制一份,在該函數運作結束的時候形參被釋放,而實參内容不會改變。
如果函數的參數是指針類型變量,在調用該函數的過程中,傳給函數的是實參的位址,在函數體内部使用的
(三)用方法改寫項目
/**
* 2020/10/26
*
* @author 阡陌飛絮cqmfx
*/
import java.util.*;
public class NewSort {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] users = new int[5];
System.out.println("請依次輸入員工的年齡:");
for (int i = 0; i < users.length; i++) {
System.out.print(" 輸入第" + (i + 1) + "個員工的年齡:");
users[i] = scanner.nextInt();
}
boolean flag = true;
while (flag) {
System.out.println("請選擇要執行的操作:\n 1.得員工中最大的年齡 \n 2.将員工的年齡從小到大排列 \n 3.插入一個員工的年齡\n 4.退出");
int n = scanner.nextInt();
System.out.println("已標明第" + n + "個選擇!");
switch (n) {
case 1:
int tempMax = findMax(users);
System.out.println("公司最大的年齡是:" + tempMax);
System.out.println("——————————————————————————");
break;
case 2:
sort(users);
break;
case 3:
System.out.println("輸入新員工年齡:");
int temp = scanner.nextInt();
users = and(users,temp);
break;
case 4:
flag = false;
break;
default:
System.out.println("警告!!!沒有此選項!");
System.out.println("此時數組為:");
break;
}
for (int i = 0; i < users.length; i++) {
System.out.println(users[i]);
}
}
}
public static int findMax(int [] arr){
int tempMax = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > tempMax) {
tempMax = arr[i];
}
}
return tempMax;
}
public static void sort(int [] user){
int temp = user[0];
for (int i = 0; i < user.length - 1; i++) {
for (int j = 0; j < user.length - i - 1; j++) {
if (user [j] > user [j + 1]) {
temp = user[j];
user [j] = user [j + 1];
user [j + 1] = temp;
}
}
}
return;
}
public static int [] and (int [] js,int temp ){
int[] user = new int[js.length + 1];
for (int i = 0; i < js.length; i++) {
user[i] = js[i];
}
System.out.println("插入後的年齡為:");
user[user.length - 1] = temp;
return user;
}
}
er [j + 1] = temp;
}
}
}
return;
}
public static int [] and (int [] js,int temp ){
int[] user = new int[js.length + 1];
for (int i = 0; i < js.length; i++) {
user[i] = js[i];
}
System.out.println("插入後的年齡為:");
user[user.length - 1] = temp;
return user;
}
}
ps:運作結果參見前面的項目!!!