JAVA學習記錄

weixin_38967820發表於2020-12-20

JAVA學習記錄第一階段

提示:


提示:以下是本篇文章正文內容,下面案例可供參考

〇、輸出一個helloworld之前的工作

1、DOS命令

cd 目標路徑;
cd …;返回上一目錄
cd \ ;返回根目錄
dir ;展示當前目錄下所有檔案
cls;清屏
exit;推出

2、JDK、JRE與JVM

JVM(Java Virtual Machine)

JVM就是一臺假想的執行Java程式的計算機,每個平臺不同,但你Java程式寫好後通過每個平臺各自的JVM都能跑;

JRE(Java Runtime Environment)

java的執行環境,包含JVM和JAVA的核心類庫,有它就能執行一個已經寫好的JAVA程式;

JDK(Java Development Kit)

包含JRE與一些開發工具(如編譯器);

一、輸出HelloWorld

java程式開發三步驟:編寫.java→編譯.class→執行
在這裡插入圖片描述

程式碼如下(示例):

public class Hello{
public static void main(String[] args){  //main是JAVA程式執行的起點
System.out.println("HelloJava");/*列印*/
}
}

Java的註釋://;/* */

二、JAVA的資料型別

1.關鍵字的概念與特徵

概念:有特殊含義的、被保留的字元
關鍵字的特點:
1.完全小寫的英文字母
2.有特殊顏色

2.識別符號的概念與規則

概念:程式中自己定義的內容
命名規則:26個英文字母(區分大小寫);0—9數字;$與下劃線 ;不能以數字開頭;不能使用關鍵字;_

3.常量

概念:程式執行期間,值不會發生改變的量

常量型別Value
字串常量雙引號內
整型常量數字
浮點型常量小數
字元常量單引號內的單個字元
布林型常量true和false
空常量null

4.基本資料型別(4類8種)

else:引用資料型別(如字串、陣列、類、介面、lambda等)

基本資料型別Value佔用記憶體(位元組)
整數型byte short int long1 2 4 8
浮點型float double4 8
字元型char2
布林型boolean1

在這裡插入圖片描述

5.變數

概念:程式執行期間可以改變的量,就是一個分配的記憶體空間,放相應型別的資料進去就行。
資料型別 變數名稱; 如float x;
資料型別 變數名稱=值; float x=100F;
使用變數的注意事項

6.資料型別轉換

不同資料型別發生運算時,將發生資料型別轉換

  • 自動型別轉換(隱式):
  1. 特點:程式碼不需要特殊處理,自動完成;
  2. 規則:資料範圍小的遷就大的(更精確優先);
  • 強制型別轉換(顯式):
    資料型別 變數名 = (資料型別)資料;
public class DAY2{
	public static void main(String[] args){
	int num1 = (int)100l;
	System.out.println(num1);
	}
}

注意事項:

  1. 不推薦使用,容易發生精度損失、資料溢位等;
  2. Java中的byte,short,char進行計算時都會提升為int型別(它們在底層都是二進位制數),且之後都成為int型;
  3. Boolean型別無法發生型別轉換;

7.ASCII碼

0-48;A-65;a-97;

三、運算子與方法

1.算數運算子

/*
運算子:進行特定操作的符號
表示式:運算子連線起來的式子
算數運算子:加+ 、減- 、乘*、 除/、 取餘% (僅限整數)、自加++、自減--
*/
public class DAY2{
	public static void main(String[] args){
	   int x = 10;
	   double y = x + 2;
	   System.out.println(y);	
	   }
}
/*
算數運算子+的三種用法:
1. 對於數值來說就是加法;
2. 對於char型來說就是轉換成int再做加法;
3. 對於字串String來說,就是把兩個字串相連;任何資料型別和字串+,結果都是字串;
*/
public class DAY2{
	public static void main(String[] args){
	   String str1 = "hello";
	   String str2 = "world";
	   System.out.println(str1 + str2);	
	   }
}

2.賦值運算子

賦值運算子:將右邊的值賦給左邊的變數

賦值運算子value
=等於
+=加等
-=減等
*=乘等
/=除等
%=取餘等

3.比較運算子

==;<;>;<=;>=;!=;

4.邏輯運算子

與或非:&& || !

5.三元運算子

/*
資料型別 變數名 = 條件判斷 ? 表示式1:表示式2;
判斷為ture則賦1,false則賦2
*/		
public class DAY1{
	public static void main(String[] args){
	   int a = 30,b = 20;
	   char zifu = a<b?'a':'b';
	   System.out.println(zifu);
	}
}

6.方法入門

方法的概念:把一個功能抽取出來,把程式碼單獨定義在一個大括號內,當我們需要這個功能的時候再去呼叫

//定義的格式:
修飾符 返回值型別 方法名(引數列表){
	程式碼
	return
}

方法命名的規則和變數名一樣:小駝峰式

注意事項:

  1. 方法定義的順序不影響;
  2. 方法不能相互巢狀;

方法的呼叫

方法名稱();

7.一些注意事項

  1. 對char\short\byte三種資料型別進行賦值時,若右側取值沒有超出其表示範圍,則javac將補全強制轉換型別(char)(short) (byte)(數字預設是Int);
  2. 若等號右邊都是常量沒有變數,則Javac將直接在編譯時用常量進行運算,不再等到程式執行時:再轉換成Int型再相加…

四、流程結構——順序、判斷、選擇、迴圈

1.順序結構

概念:按照程式碼順序執行

2.判斷語句(選擇結構)

  • 單If:
if(條件判斷?){
	語句體
}
  • if…else…
if(條件判斷){
	語句體1}else{
	語句體2}
  • if…else if…else if…
if(條件判斷1){
	語句體1}else if(條件判斷2){
		語句體2}...
		}else if(條件判斷n){
			語句體n;
			}
			else{
			語句體n+1;
			}

3.選擇語句

switch語句格式:

switch(表示式){
	case1:
		語句體1breakcase2:
		語句體2break....
	default:
		語句體;
}

最後一個break可以省略,但建議不省略

注意事項:

  1. 多個case後面的值不能重複;
  2. switch後的括號能只能放以下六種(四個基本兩種引用)資料型別:
    * 四種基本:byte\short\int\char
    * 兩種引用:String字串\enum列舉
  3. switch語句對case順序沒有嚴格要求,且break還可省略;

4.迴圈語句

  • for迴圈
    for(初始化表示式①;布林表示式②;步進表示式④){
    	迴圈體③;
    	}
    

*while迴圈

while(條件判斷①){
	迴圈體②;
	步進表示式③;
	}
  • do…while…迴圈
初始化語句;
do {
迴圈體;
步進語句;
}while(條件判斷);

5.條件控制語句

  1. break的兩種常見用法:
    *用在switch語句的case下面,一旦執行,整個switch結束;
    *用在迴圈語句中,一旦執行,整個迴圈語句立刻結束,打斷迴圈;

  2. continue:一旦執行,跳過當前迴圈的剩下部分,直接進入下一次迴圈;

關於迴圈的選擇:
*次數確定的用for,否則多用while

死迴圈標準格式:

while(ture){
	迴圈體;
	}

6.迴圈巢狀

/*
用迴圈巢狀輸出一個程式
*/
public class DAY1{
	public static void main(String[] args){
	   int h=0,m=0;
	   for(h=0;h<=12;h++){
		 for(m=0;m<=60;m++){
		    System.out.println(h+"點"+m+"分");
		}		
	   }	  
	}
}
/*
用記事本寫的,GBK編碼報錯,儲存時把編碼格式從utf-8改為ANSI就行了
*/

五、IntelliJ-IDEA

1.IntelliJ-IDEA的專案結構

每個模組內都由以下內容組成:
1. 一個src:所有原始碼都寫在這裡面

src下又可新建package,若以xxx.xx.x1的形式命名這個package,則建立的是一個三層的package。xxx.xx.x2與之在同一個第二層下。

2. 一個.iml檔案:Ide的配置檔案

當寫好的程式碼執行一次後,.java檔案會儲存在該package下,生成的.class檔案儲存在該專案資料夾的out資料夾下。

2.Idea的基本設定與常用快捷鍵

  • 字型的設定:file -> settings -> editor -> font
  • 自動補全: file -> settings -> keymap -> main menu -> code ->code completion(我設定為了alt+b)
快捷鍵功能
alt + enter匯入包,自動修正程式碼
ctrl + Y刪掉游標所在行
ctrl + D複製游標所在行
ctrl +alt +L格式化整理程式碼
ctrl + /單行註釋,再按取消註釋
ctrl + shitf +/選中註釋,多行註釋,再按取消註釋
alt + insert自動生成程式碼,toString,get,set方法
alt + shift +上下箭頭移動當前程式碼行

3.Module的匯入

file -> ProjectStructure ->Module -> + -> import…

Module不能刪除,只能從該專案中移除。

Module的三種操作:新建、移除、匯入;

六、方法的深入

/*以下是把一個列印矩陣的函式寫進方法中*/
public class Method {
    public static void main(String[] args) {
        printMethod();
    }
    public static void printMethod() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 20; j++) {
                System.out.print('*');
            }
            System.out.println( );
        }
    }
}

方法的定義只能手拉手,不能巢狀;
定義了一個方法之後必須呼叫

1.方法的定義

方法就是若干語句的功能集合;
一個方法必須要有:

  • 引數:原料
  • 返回值:產出物

定義方法的完整格式:
修飾符 返回值型別 方法名稱(引數型別 引數名稱,引數型別 引數名稱,…){
方法體;
return;
}
-------------------------
修飾符:公或私,靜或動;
返回值型別:方法最終產生的資料結果是什麼型別;
方法名稱:方法的名字,命名規則和變數一樣,小駝峰
引數型別:進入方法的資料型別
PS:若引數有多個,則用逗號隔開
方法體:方法需要做的事情
return:停止方法體,將返回資料還給呼叫處。其後返回值型別需要和定義方法處的返回值型別一樣

2.方法的呼叫

public class Method {
    public static void main(String[] args) {
        System.out.println(printAdd(3,4));//列印呼叫
        int d = printAdd(100,100);
        System.out.println("相加為:"+d);//賦值呼叫
    }

    public static int printAdd(int a, int b) {
        int c = a + b;
        return c;//java的void和int不一樣
    }
}

方法的三種呼叫方式:

  1. 直接呼叫
  2. 列印呼叫
  3. 賦值呼叫
    >PS:返回值為void的方法只能直接呼叫

3.有無引數與有無返回值的方法

有引數:該方法需要資料才能執行;
無引數:不需要任何資料條件自己就能執行,例如列印十次;

有返回值:需要“告訴”呼叫者(即呼叫它的那組程式碼)它做了什麼(返回值);
無返回值:不需要“告訴”呼叫者,直接完成功能;

4.方法的注意事項

  • 方法必須定義在類裡面,不能在方法裡再定義方法;
  • 方法定義的前後順序無所謂;
  • 方法定義之後不會自動執行,必須要呼叫 三種呼叫方法;
  • 如果方法有返回值,則必須“return 返回值;”;
  • return後的返回值必須和方法的返回值對應;
  • 對於一個void,不能有返回值,直接寫一個“return;”,且可省略;
  • 一個方法可以有多個return,但必須保證每次執行只能有一個被執行到;

5.方法的過載

對於功能相似、只是引數列表不同的方法,我們可以使用過載(OverLoad)

public class Method {
 public static void main(String[] args) {
   System.out.println(printAdd(1,2,3,6));
}
   public static int printAdd(int a, int b) {
    int sum = a + b;
  return sum;
}
public static int printAdd(int a, int b,int c) {
 int sum = a + b + c;
return sum;
}
public static int printAdd(int a, int b,int c,int d) {
 int sum = a + b +c +d;
return sum;
   }
}

相關文章