好程式設計師Java培訓分享Java基礎知識總結

好程式設計師發表於2020-07-13

  好程式設計師Java 培訓分享 Java 基礎知識總結

  1 JDK Java Development Kit java 的開發和執行環境, java 的開發工具和 jre

  2 JRE Java Runtime Environment java 程式的執行環境, java 執行的所需的類庫 +JVM(java 虛擬機器 )

  3 ,配置環境變數:讓 java jdk\bin 目錄下的工具,可以在任意目錄下執行,原因是,將該工具所在目錄告訴了系統,當使用該工具時,由系統幫我們去找指定的目錄。

 

環境變數的配置:

 

1) 永久配置方式: JAVA_HOME=% 安裝路徑 %\Java\jdk

 

path=%JAVA_HOME%\bin

 

2) 臨時配置方式: set path=%path%;C:\Program Files\Java\jdk\bin

 

特點:系統預設先去當前路徑下找要執行的程式,如果沒有,再去path 中設定的路徑下找。

 

classpath 的配置 :

 

1) 永久配置方式: classpath=.;c:\;e:\

 

2) 臨時配置方式: set classpath=.;c:\;e:\

 

注意:在定義classpath 環境變數時,需要注意的情況

 

如果沒有定義環境變數classpath java 啟動 jvm 後,會在當前目錄下查詢要執行的類檔案 ;

 

如果指定了classpath ,那麼會在指定的目錄下查詢要執行的類檔案。

 

還會在當前目錄找嗎?兩種情況:

 

CLASSPATH 是什麼?它的作用是什麼?

 

它是javac 編譯器的一個環境變數。它的作用與 import package 關鍵字有關。當你寫下 improt java.util.* 時,編譯器面對 import 關鍵字時,就知道你要引入 java.util 這個 package 中的類 ; 但是編譯器如何知道你把這個 package 放在哪裡了呢?所以你首先得告訴編譯器這個 package 的所在位置 ; 如何告訴它呢?就是設定 CLASSPATH :) 如果 java.util 這個 package c:/jdk/ 目錄下,你得把 c:/jdk/ 這個路徑設定到 CLASSPATH 中去!當編譯器面對 import java.util.* 這個語句時,它先會查詢 CLASSPATH 所指定的目錄,並檢視子目錄 java/util 是否存在,然後找出名稱吻合的已編譯檔案 (.class 檔案 ) 。如果沒有找到就會報錯! CLASSPATH 有點像 c/c++ 編譯器中的 INCLUDE 路徑的設定哦,是不是?當 c/c++ 編譯器遇到 include 這樣的語句,它是如何運作的?哦,其實道理都差不多!搜尋 INCLUDE 路徑,檢視檔案!當你自己開發一個 package 時,然後想要用這個 package 中的類 ; 自然,你也得把這個 package 所在的目錄設定到 CLASSPATH 中去! CLASSPATH 的設定,對 JAVA 的初學者而言是一件棘手的事。所以 Sun JAVA2 JDK 更聰明一些。你會發現,在你安裝之後,即使完全沒有設定 CLASSPATH ,你仍然能夠編譯基本的 JAVA 程式,並且加以執行。

 

PATH 環境變數

 

PATH 環境變數。作用是指定命令搜尋路徑,在命令列下面執行命令如 javac 編譯 java 程式時,它會到 PATH 變數所指定的路徑中查詢看是否能找到相應的命令程式。我們需要把 jdk 安裝目錄下的 bin 目錄增加到現有的 PATH 變數中, bin 目錄中包含經常要用到的可執行檔案如 javac/java/javadoc 等待,設定好 PATH 變數後,就可以在任何目錄下執行 javac/java 等工具了。

 

4 javac 命令和 java 命令做什麼事情呢?

 

要知道java 是分兩部分的:一個是編譯,一個是執行。

 

javac :負責的是編譯的部分,當執行 javac 時,會啟動 java 的編譯器程式。對指定副檔名的 .java 檔案進行編譯。生成了 jvm 可以識別的位元組碼檔案。也就是 class 檔案,也就是 java 的執行程式。

 

java :負責執行的部分 . 會啟動 jvm. 載入執行時所需的類庫 , 並對 class 檔案進行執行 .

 

一個檔案要被執行, 必須要有一個執行的起始點 , 這個起始點就是 main 函式 .

 

標示符:

 

1) ,數字不可以開頭。

 

2) ,不可以使用關鍵字。

 

變數的作用域和生存期:

 

1. 變數的作用域:作用域從變數定義的位置開始,到該變數所在的那對大括號結束 ;

 

生命週期:變數從定義的位置開始就在記憶體中活了;

 

變數到達它所在的作用域的時候就在記憶體中消失了;

 

資料型別:

 

1) :基本資料型別: byte short int long float double char boolean

 

運算子號:

 

4) 、邏輯運算子。

 

& | ^ && ||

 

邏輯運算子除了 外都是用於連線兩個boolean 型別表示式。

 

&: 只有兩邊都為 true 結果是 true 。否則就是 false

 

|: 只要兩邊都為 false 結果是 false ,否則就是 true

 

^: 異或:和或有點不一樣。

 

兩邊結果一樣,就為false

 

兩邊結果不一樣,就為true.

 

& && 區別: & :無論左邊結果是什麼,右邊都參與運算。

 

&&: 短路與,如果左邊為 false ,那麼右邊不引數與運算。

 

| || 區別: | :兩邊都運算。

 

|| :短路或,如果左邊為 true ,那麼右邊不參與運算。

 

5) 、位運算子 : 用於操作二進位制位的運算子。

 

& | ^

 

<< >> >>>( 無符號右移 )

 

練習:對兩個變數的資料進行互換。不需要第三方變數。

 

int a = 3,b = 5;-->b = 3,a = 5;

 

方法一:

 

a = a + b; a = 8;

 

b = a - b; b = 3;

 

a = a - b; a = 5;

 

方法二:

 

a = a ^ b;//

 

b = a ^ b;//b = a ^ b ^ b = a

 

a = a ^ b;//a = a ^ b ^ a = b;

 

練習:高效的算出 2*8 = 2<<3;

 

過載的定義是:在一個類中,如果出現了兩個或者兩個以上的同名函式,只要它們的引數的個數,或者引數的型別不同,即可稱之為該函式過載了。

 

如何區分過載:當函式同名時,只看引數列表。和返回值型別沒關係。

 

重寫:父類與子類之間的多型性,對父類的函式進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)

 

Java 記憶體管理

 

Java 記憶體管理:深入 Java 記憶體區域

 

Java C++ 之間有一堵由記憶體動態分配和垃圾收集技術所圍成的高牆,牆外面的人想進去,牆裡面的人卻想出來。

 

  概述:

  對於從事C C++ 程式開發的開發人員來說,在記憶體管理領域,他們既是擁有最高權力的皇帝,又是從事最基礎工作的勞動人民—既擁有每一個物件的 " 所有權 " ,又擔負著每一個物件生命開始到終結的維護責任。

  對於Java 程式設計師來說,在虛擬機器的自動記憶體管理機制的幫助下,不再需要為每一個 new 操作去寫配對的 delete/free 程式碼,而且不容易出現記憶體洩漏和記憶體溢位問題,看起來由虛擬機器管理記憶體一切都很美好。不過,也正是因為 Java 程式設計師把記憶體控制的權力交給了 Java 虛擬機器,一旦出現記憶體洩漏和溢位方面的問題,如果不瞭解虛擬機器是怎樣使用記憶體的,那排查錯誤將會成為一項異常艱難的工作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2704140/,如需轉載,請註明出處,否則將追究法律責任。

相關文章