1. 程式人生 > 實用技巧 >java學習之基礎(1)

java學習之基礎(1)

java 學習之路

0x00 前言

學習java也有段時間了,寫篇文章來記錄一下學習內容。

0x01 java載入機制

說到java不得不提的是java的類載入機制,java是一個依賴於jvm(也就是java的虛擬機器)實現跨平臺的一個開發語言,java所有的程式碼都會在jvm裡面執行,java在執行中xx.java的原始檔會被編譯成class字尾檔案(位元組碼檔案)才能執行。java類初始化的時候呼叫java.lang.ClassLoader載入位元組碼檔案。
下面來看一下jdk和jre、jvm的關係示意圖。

0x02 第一個程式

這裡直接來複制一段程式碼

public class test {
    public static void main(String[] args) {
        System.out.println("Hello wrorld!");
    }

}

先來從第一段程式碼往下看

public class test {}

這裡定義了一個類,這裡的類名必須和檔案的名字一致,否則會報錯

public static void main(String[] args) {}

第二行程式碼表示是他的主函式,在程式裡面的入口點都是main。

System.out.println("Hello wrorld!");

第三行程式碼則是呼叫System.out.println的方法對螢幕進行列印東西。

0x03 資料型別

資料型別分類

java的資料型別分為兩大類:

基本資料型別:包括整數、浮點數、字元、布林

引用資料型別: 包括類、陣列、介面

基本資料型別

資料型別 關鍵字
位元組型 byte
短整型 short
整型 int
長整型 long
單精度浮點型 float
雙精度浮點型 double
字元型 char
布林型別 boolean

java裡面預設型別:整數是int、浮點數是double。

0x04 變數定義

變數定義的格式包括三要素:資料型別、變數名、資料值。

格式:

資料型別 變數名 = 資料值;

public class test1 {
    public static void main(String[] args) {
        int a = 1;
        float b= 5.5F;
        double c = 5.5;
        boolean d = true;
        char e ='A';
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
    }
}

long型別資料加上L表示。

float加上f表示。

定義的變數不賦值則無法使用。

0x04 型別轉換

自動型別轉換

public static void main(String[] args) {
        int a =1;
        byte b = 2;
        int c =a+b;
        System.out.println(c);
    }

執行成功,執行結果輸出3

這可以執行成功是因為在內部進行了自動的型別轉換,把b變數的byte型別自動轉換成了int型別

強制型別轉換

轉換格式:

資料型別 變數名 = (轉換的資料型別) 被轉換的變數

int i = (int)1.5

強制型別轉換會導致資料精度損失

0x04 賦值運算子

賦值運算子

賦值運算子 解釋
= 賦值
+= 加等於
-= 減等於
*= 乘等於
/= 除等於
%= 取模等於

比較運算子

比較運算子 解釋
== 等比兩邊變數的值
< 對比左邊的值是否小於右邊的值
> 對比左邊的值是否大於右邊的值
>= 對比左邊的值是否大於或等於右邊的值
<= 對比左邊的值是否小於或等於右邊的值
!= 如果兩邊的資料不相等結果為true

對於比較運算子結果只會是false或者是ture

邏輯運算子

邏輯運算子 解釋
&& 兩邊結果為ture結果則才tue
|| 只要一方結果為true,結果都是true
!true 結果為false,!flase結果為true

至於運算子就不做多的講解,記錄一下,需要用到的時候看看就行。

0x05 方法定義

方法定義格式:

修飾符 返回值型別 方法名(引數列表){
程式碼
}

返回值型別:void型別為無型別,所以如果定義返回值型別為void,reurn不需要填寫

方法名:為我們定義的方法起名,滿足識別符號的規範,用來呼叫方法。
引數列表: 可填寫傳入引數 引數前面必須攜帶引數變數型別。

return:方法結束。返回值型別是void,如果在返回值定義其他型別,return返回的結果也必須是返回值型別所填寫的型別

public static void main(String[] args) {
       show(); 
    }
    public static void show(){
        System.out.println("方法");
    }

定義完方法後,方法是會預設載入的,我們還需要在main方法裡面去呼叫該方法。

定義方法注意事項

方法必須定義在一類中方法外

方法不能定義在另一個方法的裡面

0x06 流程控制語句

一個程式裡面必不可少的就是流程控制,流程控制無非就是判斷和迴圈。首先先來看看判斷語句。

if判斷

語法:

if (關係表示式){
    語句體;
}else{
    語句體;
}
執行流程

首先會判斷該表示式結果為true還是flase,如果是true就執行語句體,如果是false則執行else裡面的內容。

public static void main(String[] args) {
    int a = 1;
    if (a==1){
        System.out.println("a:"+a);

    }else{
        System.out.println("a!=1");
    }

    }

switch——選擇語句

switch 語句格式:

switch(表示式) {
case 常量值1:
語句體1;
break;
case 常量值2:
語句體2;
break;
...
default:
語句體n+1;
break;
}

執行流程:

首先計算出表示式的值,然後和case依次比較,如果有對應的值,則執行相應的語句,執行完成時遇到break結束。最後如果所有的case值都不匹配就會執行default裡面的語句。


public static void main(String[] args) {

int weekday = 6;

switch(weekday) {
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;
}
}

迴圈語句-for

迴圈語句可以滿足在迴圈條件的情況下,反覆執行一段程式碼。當在達成某個條件的時候必須把迴圈條件改為flase,讓他結束迴圈,否則就會出現死迴圈,一直執行下去。

for迴圈語句格式:

for(初始化表示式;布林表示式;步進表示式){
    迴圈體;
}

執行流程:

首先初始化一個變數,定義一個表示式和步進表示式,然後迴圈體執行,如果不滿足則繼續迴圈,直到滿足布林表示式的條件則退出迴圈。

public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            System.out.println("Hello World");
        }
    }

這裡列印了20次,也就是說這迴圈了20次,迴圈條件為i小於20,每次執行i就會加1,加到20次就滿足了布林表示式的條件,退出迴圈。
在這裡步進表示式必須要寫,否則會陷入死迴圈。

迴圈語句2——while

while迴圈語句格式:

初始化表示式
while(布林表示式){
迴圈體
步進表示式
}
public static void main(String[] args) {
//while迴圈實現列印10次HelloWorld
//定義初始化變數
int i = 1;
//迴圈條件<=10
while(i<=10){
System.out.println("HelloWorld");
//步進
i++;
}
}

迴圈語句3 do-while

do-while和while很類似,可以說基本用法都是一樣的,但唯一不同的是while如果表示式滿足的話就直接不會執行了,而do-while是先執行一遍裡面的迴圈體再判斷表示式滿不滿足條件。

do...while格式:

初始化表示式
do{
迴圈體
步進表示式
}while(布林表示式);
public static void main(String[] args) {
int x=1;
do {
System.out.println("HelloWorld");
x++;
}while(x<=10);
}

do...while迴圈的特點:無條件執行一次迴圈體,即使我們將迴圈條件直接寫成false,也依然會迴圈一次。

這裡再來說說for迴圈和while的區別。

控制條件語句所控制的那個變數,在for迴圈結束後,就不能再被訪問到了,而while迴圈結束還可以繼
續使用,如果想繼續使用,就用while,否則推薦使用for。原因是for迴圈結束,該變數就從記憶體中消
失,能夠提高記憶體的使用效率。

在已知迴圈次數的時候使用推薦使用for,迴圈次數未知的時推薦使用while。

跳出迴圈語句

break

使用場景:
終結迴圈或者是選擇結構switch

continue

使用場景:結束本次迴圈,繼續下一次的迴圈

0x07 結尾

文章持續更新中。。。