天天看點

Java學習筆記-day01

JAVA:語言+開發環境+應用環境+部署環境

    語言

        關鍵字+文法要求

    環境

        jdk: 開發

        jre: 運作 JVM+類庫

        api:程式接口,封裝好的東西在jre裡面放着。而api提供給你了java開發者已經封裝好的包的用法

    JAVA檔案介紹    

        bin:放着運作程式的指令

        db:自帶的小型資料庫

        include:java中使用C語言寫的那一部分

        jre:自己運作需要的環境

            jre-lib-中有個rt.jar 用java指令打出的壓縮包,java所有源碼以字尾class的形式存在,這也是java可以運作的原因

        lib:所依賴的包

        src:java中jdk的源碼--對應api中的内容

    JAVA不同的三個運作平台:

        JavaSE 基礎Java,提供最基本文法和關鍵字,以及API

        JavaME 移動端開發。但界面是弱勢,鬼鬼,這也太醜了!!!

        JavaEE 企業級應用開發。也叫做JavaWEB開發,在基礎文法上加上了一些網絡工具,內建了更多的API

        作用方向不同,但語言相同

JDK:

    安裝:

        1.windows 輕按兩下安裝即可

                  之後配置路徑:

                    JAVA_HOME: 安裝路徑 #現在暫時用不着,等安裝tomcat之後會預設尋找JAVA_HOME

                    PATH: 安裝路徑、bin

                        PATH = blahblahblah\bin ;

        2.linux:

            JAVA_HOME=/opt/java/jdk1.8..

            PATH=$JAVA_HOME/bin"$PATH

            CLASSPATH

    jvm:Java虛拟機

        XXXX.class 這個檔案計算機都不認識,是以利用JVM将其翻譯成相應的機器語言進行識别

        隻要有JVM,class檔案就可以運作

        每個作業系統的JVM不同,是以是class跨平台,不是JVM

    垃圾資源回收筒GC:專門用來管理記憶體,清理掉沒有引用的記憶體節點

        C語言用完記憶體需要手動釋放記憶體,如果忘記記憶體就會一直停留

        Java有了垃圾資源回收筒,使用記憶體時隻需要用new申請就可以

        利用系統級的線程來控制,專門的算法計算哪個空間不需要,如果計算出不需要的就會自動回收

    安全檢查機制:

        将class交給虛拟機,會先進行檢測

書寫第一個Java程式

    1.建立一個字尾名為.java的檔案Hello.java,

    2.vim Hello.java

    3.class name

        {

                程式内容

        }

    4.将源檔案編譯轉換成.class 位元組碼檔案

    5.運作

    編譯:javac -X XXXX.java

    運作:java XXXX(沒有.class)

    編寫時注意中英文符号

類加載器:

    ***PS: “ . ”代表目前路徑

    将需要運作的程式從他原本所在的位置加載到虛拟器記憶體執行

    采用雙親委托機制(推卸責任!)進行加載

        三個加載器都可以進行加載,也都會執行

            編譯時先交給本地類加載器,但是本地類不想加載,就把加載任務交給擴充類加載器,擴充類在推卸給啟動類,啟動類也不想加載,是以就去能加載的目錄中尋找XXX.jar

            但是找不到,就下面傳遞給擴充類,擴充類去對應找,如果還找不見就去本地類,此時本地類才會去CLASSPATH查找

    有很多分類,将自己可以加載的東西都加載到記憶體

        1.啟動類加載器    隻加載jre--lib--rt.jar中的内容

        2.擴充類加載器    隻加載jre--lib--ext中的jar包

        3.本地類加載器    隻加載CLASS所指定的位置,有時候找不到或者無法加載主類,就是因為CLASSPATH指向錯誤

            java -cp XXXX CLASSPATH臨時指向某一目錄

            也可以将Hello.class打成一個jar包

            Jar -cvf XXX.jar XXX.class

                但是需要手動打開jar包,然後手動添加主函數的路徑

                    打開壓縮包,然後在META-INF中的檔案中添加主函數

                運作jar包:java-jar XXX.jar

                然後放到jre--lib--ext中

            java -verbose可顯示詳細的編譯過程

            這三個最重要

        4.自定義加載器

        ...

Java規範

    源檔案

        public修飾的類名必須要與檔案名一模一樣,包括大小寫

        同一個檔案中不允許出現兩個使用public修飾的類

        同一個源檔案中允許出現多個class

        同一個源檔案中可以在多個類中定義主方法,二期主方法不一定非要定義在用public修飾的類中

    Java類的書寫規則

        位元組碼驗證

            代碼要符合JVM的規範(程式設計規範,文法錯誤)

            代碼破壞計算機的系統或者硬體

            棧不能溢出(記憶體一定要夠用)

            方法的參數類型一定要正确

            類型轉換要正确

Java的三大元素

        包 package:為了避免命名沖突 可加可不加

            定義: package com.briup.day1

                    class One{}

            之後想找到這個class檔案,就要com.briup.day1.One

            package 定義之後需要用包名+類名來尋找 java com.briup.day1.PackageTest

            javac -d [将編譯後的封包件以及class想放到的目錄]

        導包 import 隻要不在同一個包并且也不再Java.lang包下面類的引用都需要加import

            one/Hello.class  two/Hello.class

            one中的Hello的類可導入two中Hello中

            import two.* 導入全部

        Java.lang 最基本的包,即使不做引入也會将這個包中的内容引入

        class

            定義類的關鍵字 必須要存在