溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

一篇文章能夠看懂基礎(chǔ)源代碼之JAVA篇

發(fā)布時(shí)間:2020-05-19 11:20:32 來源:網(wǎng)絡(luò) 閱讀:419 作者:棲木之地 欄目:編程語言

java程序開發(fā)使用的工具類包:JDK(java development kit)
java程序運(yùn)行需要使用的虛擬機(jī):JVM,只需要安裝JRE (java runtime environment)
java源碼文件:后綴是.java
編譯后的字節(jié)碼文件:后綴是class
運(yùn)行class文件:源碼中必須有 public static void main(String[] args)方法,這樣才能啟動運(yùn)行。

把多個(gè)文件打包成一個(gè)模塊來運(yùn)行:jar文件,jar文件由多個(gè)class組成,可以有main入口運(yùn)行,也可以沒有。

需要運(yùn)行的jar包必須指定一個(gè)MainClass,里面必須有main方法

概念

  1. 代碼結(jié)束符:每行代碼必須以分號;作為結(jié)束符.
  2. 訪問修飾符:控制類或變量,或方法的訪問權(quán)限,public是外部能夠訪問,private只有內(nèi)部和同一個(gè)包的類能訪問,protected只有內(nèi)部和有繼承關(guān)系的能訪問
  3. 實(shí)例對象:每個(gè)類在內(nèi)存中實(shí)際運(yùn)行的內(nèi)容
  4. 類:一般情況下,一個(gè)源文件就是一個(gè)類,用類來劃分代碼結(jié)構(gòu),代碼內(nèi)容包含在類里面,以大括號包裹
    public class MyClass {}

  5. package:包,和文件夾的功能類似,用來對類進(jìn)行分組,在類文件的首行,例如
    package com.mypackagename.mysubpack;

  6. 導(dǎo)入類:一個(gè)類需要引用另外一個(gè)類的內(nèi)容時(shí)需要導(dǎo)入,例如:
    import com.mypack.MyClassB;
    導(dǎo)入靜態(tài)類:
    import static com.myPack.MyClassB.MyStaticClass;
    導(dǎo)入靜態(tài)類后可以直接使用靜態(tài)類里的靜態(tài)方法,例如可以
    myStaticMethod();
    如果沒有導(dǎo)入靜態(tài)類則需要,MyStaticClass.myStaticMethod();

  7. 構(gòu)造方法(或稱構(gòu)造函數(shù)),用來實(shí)例化類的方法,分為帶參和不帶參,默認(rèn)不帶參的為空構(gòu)造方法,可以省略,特殊情況下不能省略。名稱和類名一致。
    public MyClass(){}

  8. 方法:在類里面的一個(gè)執(zhí)行代碼塊,可以給外部或者內(nèi)部調(diào)用
    訪問修飾符 返回類型 方法名(參數(shù)){}
    public MyReturnType myMethod(String myParam){}

  9. 變量:

    1. 全局變量:在類里面聲明的變量,所有方法都能使用
      public class MyClass {
      private String myGlobalVar;
      }
    2. 局部變量:在方法或者代碼塊里面聲明的變量,只有方法和內(nèi)部代碼塊能使用,不能使用訪問修飾符:
      public String myMethod() {
      String myLocalVar = "";
      {

       Integer myLocalVar2 = 0;

      }
      }

    3. 參數(shù):聲明在方法里的變量,只能在方法體內(nèi)使用
      public String myMethod(String myParam){}
      可以在參數(shù)類型上使用...來表示多個(gè)參數(shù),使用時(shí)作為數(shù)組來使用
      public String myMethod(String... myParams){}
      myParams[0] myParams[1]
  10. 運(yùn)算符:算術(shù)運(yùn)算符,邏輯運(yùn)算符

  11. 注解:用來描述代碼的一些內(nèi)容信息,主要分為單行和多行注解,單行使用//即可,也可以使用/內(nèi)容/,多行使用/* 內(nèi)容/,每一行前都加一個(gè)*

/**

  • 這里是注釋

*/

下面以代碼示例進(jìn)行描述:

package com.kavy.test; //定義包名
import com.kavy.test.sub.SubLevelClass; //導(dǎo)入其他包的類
import java.util.ArrayList;
import java.util.List;

import static com.kavy.test.sub.SubLevelClass.MyStaticClass;//靜態(tài)類導(dǎo)入需要添加static
public class MyMain { //聲明一個(gè)MyMain的類
//聲明全局變量,在類內(nèi)部使用
private String myGlobalVar;
//聲明全局靜態(tài)變量,可以給外部直接使用
public static String myGlobalStaticVar;
//聲明不可修改的全局常量,final聲明的變量一旦賦值就不能更改,否則編譯時(shí)報(bào)錯(cuò)
private final String MY_FINAL_VAR = "FINAL";

//類的運(yùn)行入口,執(zhí)行這個(gè)class文件時(shí)會找到這個(gè)方法進(jìn)行調(diào)用
public static void main(String[] args) {
    new MyMain(); //實(shí)例化類,在內(nèi)存中創(chuàng)建一個(gè)MyMain對象
}

//無參構(gòu)造函數(shù)
public MyMain() {
    String myLocalVar = "";//聲明局部變量,只能在這個(gè)構(gòu)造函數(shù)方法體內(nèi)部使用
    {
        String myLocalVarTwo = "";//局部變量,只能在方法體{}內(nèi)使用
    }
    new SameLevelClass();//同一個(gè)包下的類可以不需要使用import導(dǎo)入可以直接使用
    new SubLevelClass();//不同包的類需要先導(dǎo)入才能使用
    MyStaticClass.myStaticMethod();
    SubLevelClass.MyStaticClass.myStaticMethod();
    //算術(shù)運(yùn)算符: + - * / % 加,減,乘,除,求余
    //邏輯運(yùn)算符:用作判斷 && 與, ||或  !非
    //三目運(yùn)算:myCondition ? a : b  如果條件為真則執(zhí)行a,為假則執(zhí)行b
    //自增運(yùn)算: ++ -- ,變量在左邊時(shí),先返回變量,然后再自增
    int a = 0;
    int b = a++;//等同于 int b = a; a = a + 1;
    int c = ++a; //等同于  a = a + 1; int c = a;
    //邏輯判斷
    if (true) {
    } else if (false) {
    } else {
    }
    //循環(huán):fori dowhile, while do
    for(int i = 0; i < 10; i++){} //(初始條件,判斷條件;增加值,用分號分隔
    String[] str = new String[10];//聲明一個(gè)數(shù)組,長度為10
    for(String o: str){}  //使用forin循環(huán)
    do {
    } while (a < 10); //do while循環(huán),無論while條件如何都會執(zhí)行一次do內(nèi)容
    while (a < 10) {};//while循環(huán),只有while條件符合才會執(zhí)行里面的內(nèi)容
    List<String> myList = new ArrayList<>();
    myList.forEach(item -> {}); //使用JDK1.8以后提供的stream和lambda表達(dá)式來簡化書寫
    //分支語句:
    switch (a) {
        case 1:   //a =1執(zhí)行一些內(nèi)容,執(zhí)行完末尾必須加上break,否則會
            break;
        case 2: //a =2執(zhí)行一些內(nèi)容
            break;
        default:   //上面的值都沒有時(shí)
            break;
    }

    //異常:分為運(yùn)行時(shí)異常和檢查時(shí)異常,finally為無論異常怎樣都會執(zhí)行
    try {
    } catch (Exception e) {
    } finally {
    }
}
//有參構(gòu)造函數(shù)
public MyMain(String myParam) {}

//有參,有返回值的,內(nèi)部和外部都可以調(diào)用的實(shí)例方法
public String myMethod(String... myParam){
    return "";
}
//方法重載:同名,同返回類型;參數(shù)類型,個(gè)數(shù)不一樣
public String myMethod(String paramA, Integer paramB) {
    return "";
}

//內(nèi)部類:在一個(gè)類內(nèi)部再聲明一個(gè)類
class MySub extends MyMain {  //繼承:使用extends繼承父類,擁有父類的除了private修飾的所有內(nèi)容
    //方法覆蓋:子類覆蓋父類的方法,名稱,返回類型,參數(shù)類型個(gè)數(shù)都一樣,只有方法體內(nèi)部的內(nèi)容不一樣
    public String myMethod(String paramA, Integer paramB) {
        return "son";
    }
}
//使用abstract聲明抽象類,一般類的方法都需要有方法體內(nèi)容,抽象類的抽象方法不需要有方法體內(nèi)容,方法體內(nèi)容交給繼承的子類實(shí)現(xiàn)
//含有抽象方法的類都是抽象類
abstract class MyAbstract{
    abstract void myAbstractMethod();
}
//聲明一個(gè)接口,接口里只有方法和變量,沒有實(shí)體內(nèi)容,方法體的內(nèi)容交給實(shí)現(xiàn)這個(gè)接口的類來做,和抽象類不同的就是抽象類可以有實(shí)體內(nèi)容
interface MyInterface {
    void myMethod();
}

}

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI