Java基礎知識總結分享

好程序員Java培訓分享Java基礎知識總結java

1,JDK:Java Development Kit,java的開發和運行環境,java的開發工具和jre。c++

2,JRE:Java Runtime Environment,java程序的運行環境,java運行的所需的類庫+JVM(java虛擬機)。程序員

3,配置環境變量:讓java jdk\bin目錄下的工具,能夠在任意目錄下運行,緣由是,將該工具所在目錄告訴了系統,當使用該工具時,由系統幫咱們去找指定的目錄。jvm

環境變量的配置:函數

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

path=%JAVA_HOME%\bin開發工具

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

特色:系統默認先去當前路徑下找要執行的程序,若是沒有,再去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虛擬機,一旦出現內存泄漏和溢出方面的問題,若是不瞭解虛擬機是怎樣使用內存的,那排查錯誤將會成爲一項異常艱難的工做。

相關文章
相關標籤/搜索