JDK與JRE的區別:
JRE是所有JAVA程式運作所需的環境,任何JAVA程式的運作都依賴JRE,目前從JAVA官網選擇安裝JAVA即安裝的是JRE。
JDK是為開發人員所提供的工具包,對開發人員來說屬於必備項,一般在JDK本身包含JRE,但是一般JDK還會再安裝一套JRE,這套JRE被成為公共JRE(如圖),JDK需要從oracle的官網下載。
目前的主流編輯器,如eclipse會找到JRE和JDK的位置,當然也可以再進行手工修改。
JAVA所需環境變數說明:
PATH:(必需)指定編譯、執行java程式是所需的程式所在路徑,一般在jdk安裝目錄(注意是JDK!!!和JRE是不一樣的程式所在路徑,一般在jdk安裝目錄(注意是JDK!!!和JRE是不一樣的!目前常用的設定辦法是先定義一個JAVA_HOME變量,在PATH中引用JAVA_HOME:%JAVA_HOME%/bin;
CLASSPATH:(之前必需,現在非必需)設定Classpath的目的,在於告訴Java執行環境,在哪些目錄下可以找到您要執行的Java程式(.class檔案),現在已經不需要;
JAVA_HOME:(理論上非必需,實際必需)設定變數存放java程式運行所需的程式所在路徑,方便其他地方進行引用(不用再輸入一長串路徑,直接使用JAVA_HOME變數即可),同時,現在不少軟體也會直接呼叫JAVA_HOME變量,不設定容易出錯。
1.java主要結構闡述
java中每一個.java文件都是一個類,一個java工程由許許多多的.java文件組成,也就是由java類組成。一般而言一個java類中主要的結構如下:
1.包申明:java類在本工程中屬於哪個包,即在工程中的位置;
2.導入的包:外部庫,工具;
3.公共類別(或介面)定義:類別名稱與java檔案的名稱必須相同,類別中內容即java檔案的主要內容
4.其他:其他類別的定義和介面定義。
java專案中,由外至內分別為:source資料夾、套件(package)、類別(.java,就是上面bb了半天的那個東西),經過編譯後會將編譯後的類別(.class)放在與source資料夾同級的bin資料夾中。不同的source floder 中的package可以同名,相同的package中的類別不能同名(在兩個不同source floder中的相同package中也不行)
2.基本資料類型
基本資料類型8中:整數4種、浮點2種、字元、布林;
btye最大128-1;short最大32768-1;int包含最大2開頭的10位數;數值計算注意整數數值範圍,記得加轉換符;long資料在賦值時若整數的數值超出int的最大範圍則要在整數後面加上l說明;
浮點型對於float的賦值要在小數後面加f說明;
單純的字符型變量相加(即每個元素都是字元變數(PS.加入整形也是ascii碼相加))等於把各個字元的ascii碼相加;(與字串的加法運算不同!!!字元和字串相加得到的是字串)
3.基礎包裝類別
基礎的常用的包裝好的類別有7種(一定注意大小寫!!!):String、Integer、Boolean、Byte、Character、Double、Number ;
4.型別轉換:
char、int、double等之間可以用強制轉換的方式轉化,如(int)'a',(char)25;boolean型別變數無法由強制轉換得到
各個變數與各個類別之間的轉換,需要透過呼叫各個物件的方法來實現。如:整形、字符型轉換為String物件,可以使用String.valueOf();
5.常數賦值:
全域常數初始化時必須賦值;局部常數初始化時可以不賦值,但是只能賦值一次。
6.變數有效範圍:
全域變數分為實例變數和靜態變數(static),靜態變數可以在其他類別中使用類別名稱.變數名的方式使用,實例變數只可在本類中使用。
局部變數只在定義變數的程式碼區塊中有效,即{}兩個大括號之間,從變數申明開始算。
與局部變數同名的全域變量,在局部變數的使用範圍內失效。
7.switch與if elseif的區別
兩者可實現相同的功能,但從邏輯上說,if elseif必須對匹配項前面的每一個項目都執行檢查,而switch通過一定的查找辦法去尋找匹配項。在需要檢查的項目較多時,switch效率較高,switch另一個優點是程式碼清晰,但缺點是難以進行複雜操作。
8.使用foreach循環方式
使用foreach循環方式可以快速的遍歷數組、物件等,具體方式:for(int x : arr){操作},但需要注意foreach形式無法將資料寫入
9.String物件常用方法記錄(依個人理解的常用程度排序,參數和具體用法未說明,下同)
length()取得字串長度;
equals()判斷字串的內容是否相同,注意,不能直接使用等號比較,使用等號會比較記憶體中的位置! ! ! ! !
replace()字串中的子字串替換;
split(),將字串按給定的符號進行分割,保存在數組中;
toCharArray(),將字串轉換為字元數組;
trim()去除字串前後的空格,注意,不對字串進行更改,而是返回相應副本;
substring()截取字元字串;
toLowerCase(),toUpperCase()進行字串的大小寫轉換;
indexOf(),lastIndexOf()在字串中尋找子字串位置;
charAt()傳回字串中指定位置的字元;
startsWith(),endsWith()判斷字串的開始和結尾是否為指定字串;
compareTo(),按字典順序比較字串;
10.Arrays物件常用方法記錄(按個人理解的常用程度排序,參數和具體用法未說明)
Arrays. fill(),填入數組,可用於數組初始化、賦值;
Arrays.sort(),對數組初始化、賦值;
Arrays.sort(),對數組進行排序;
Arrays.copyOf(),Arrays.copyOfRange對數組進行複製;
static關鍵字的使用具體解析見技術部落格:http://www.cnblogs.com/dolphin0520/p/3799052.html在使用的時候,如要在類別外部呼叫的方法、變數都需要加上上static限制符,而有static限制符的類別(方法)若需要呼叫其他方法或全域變量,那麼被呼叫的方法和全域變數也必須有static修飾(這是因為非靜態變數必須要建立實例才能被調用)。一般用於不需要建立實例的類別(方法),例如用作工具的類別。 要區分static與權限修飾符的區別,static的目的是,在不建立實例的情況下也可使用static變數和方法,而權限修飾符則規定了該方法與變數的使用範圍。 12.Java的集合類別保存資料說明Arraylist、HashMap等集合類別是java中的一個特色, 但在其中只能保存引用型的數據,不能保存基本資料。即:Integer可以但int不行。 13.對於class的權限修飾符說明對於頂級類別(包內部第一層的類別)來說,只有public修飾符可用,表示可跨包使用該類,若不用public則默認在該套件內可用,一個.java檔案中使用public的類別至多存在一個。對於頂層類別的內部類別,其權限修飾符為private、protected、public與預設。 關於內部類別的權限問題需要深入研究(例如內部類別中存在private變量,需要在外部類別的內部使用該變數等情況),此處暫時跳過。 14.判斷一個類別的兩個物件是否相等除了基礎變量,引用變數(物件)不能使用兩個等號==來判斷值是否相等(一個類別產生的兩個物件是否相等) ,需要使用equals方法。但注意的是,一般使用者定義的類別的equals方法內部都是使用雙等號判斷的,要實現判斷的效果還需要使用者重載equals。 (就是自己寫一個方法判斷) 15.基本變數對應的包裝類別中可能常用的方法Integerequals(),比較兩個integer物件的值是否相等byteValue(),intValue (),shortValue(),傳回對應類型的值toString(),將Integer物件轉換為String物件(toBinaryString()、toHexString()、toOctalString()同理)Integer.valueOf(),將String物件轉換為Integer物件Integer.parseInt(),將String物件轉換為int變數。 BooleanByteCharacterCharacter.inUpperCase()、Character.inLowerCase(),判斷是否為大寫、小寫字元toString(),將字元轉換為字串Double(Float可以參考Doubel,方法是一樣的)intValue(),傳回整形變數toString(),傳回字串.DoubleueOf. ),將String物件轉換為Double物件 總結:需要進行基礎類別的轉換時,可使用toString()轉換成字串,再將字串用各類別的valueOf轉換為所需的類別。 16.常用數學計算方法DecimalFormat類當中的各個方法對數字進行格式化,得到的是字符串;Math類三角函數方法,可進行各類三角函數計算,包括弧度角度互換指數函數方法,平方、平方根、立方、立方根方法等取整數方法,向上、向下取整,最近取整最大值絕對值隨機數方法(產生0到1之間的任意double型數值)Random類nextInt()傳回一個整數、nextLong()傳回一個長整數、nextBoolean()傳回一個布林變數、nextFloat()傳回一個浮點數 17.關於方法重寫(不同於重載!!!!)重寫方法時,可以修改方法的修飾符、傳回值類型(參數類型、個數不可變),大多數情況下父類別中的final方法不可重寫(private final在子類別中不可見,可重寫,是比較特殊的情況)
子類別方法對父類別方法重寫時,子類別方法的修飾符必須比父類別方法的修飾符權限更大;
子類別對父類別方法從重寫入時,若要修改子類別方法中傳回值類型,該類型必須是父類別中同方法傳回值的子類別;
18.關於方法重寫與重載的差異
在同一類別中,方法無法重寫,即在一個類別中不能存在兩個相同方法名稱、參數個數、參數類型的方法,在同一個類別中,方法可以重載,即一個類別中允許多個相同的方法名,不同的參數型別、參數個數的方法存在。方法的重寫涉及到父類、子類至少兩個類,若要重寫,不能修改方法的參數型別和數,方法的重載只在一個類中發生,若要重載,必須修改參數類型、個數。所有的父類別中的方法都會在子類別中被繼承,所以父類別與子類別中存在兩個方法名稱相同、參數不同的方法時,可以看作先被繼承,然後被重載。
19.抽象類別(abstract關鍵字)
抽象類別只能被繼承,沒有其他任何功能,而抽象類別中的抽象方法在被繼承後必須要進行重寫,抽象方法沒有方法體。若類別中含有抽象方法,則該類別必定為抽象類別。
20.介面
介面(interface)的權限修飾符(待解決),介面中的方法均為public且不含方法體需要繼承後重寫,
先不管原理談應用,介面一般使用public修飾,不加public的介面只能在同套件中的不同類別中使用(依然預設的protected),加上public的介面才能跨套件使用,但是只有與.java名稱相同的interface才能使用public 。而在介面內部,除去static、default方法,其他方法均不能有方法體。
21.物件的轉變
物件轉型分為向轉型和向下轉型,子類別物件可以一直向上轉型(會自動轉換),父類物件的轉型要考慮其是否屬於子類別物件才能轉(需要強制轉型)。如:A a = new B();,B為A的子類,則最終a當作A類型的對象,但本質上仍是B類,父類類型的引用可以調用父類中定義的所有屬性和方法,對於只存在與子類別中的方法和屬性它就望塵莫及了,即a可以調用B類型中從A類繼承到的方法和屬性,但不能調用B類中獨有的方法和屬性。在方法呼叫時同理,假設C繼承於B繼承於A,則C型別物件c在呼叫類別中某一方法時,會在可用範圍內(可用範圍參考上一句)先找出以C型別為參數的方法重載版本,若不存在,則向上轉型為B並尋找B類型為參數的方法重載版本,直至找到可執行的方法重載版本,若不存在,則無法調用,會報錯。
22.關於類別包
在實際開發中,應為所有的類別指定類別包,包的聲明必須是文件中第一行非註解程式碼,所有類別包均為小寫字母構成。導入包時,若使用*來導入包中的所有類,則不會導入子類,如需要導入子類還需要重新import。使用import static 可以導入類別當中的靜態成員。
23.關於常數
final定義的常數分類局部常數和全局常數,局部常數在其生命週期內不能重定義,但是需要的話可在每次創建的時候都可以賦新值,全局常數一般使用public static final,在程式運行期間,全域常數的值都不會被改變。
PS:
多態沒能理解透徹,待深入
介面的權限修飾符未能理解透徹,待深入
JDK與JRE的區別:
JRE是所有JAVARERE是所有JAVA的區別環境,任何JAVA程式的運作都依賴JRE,目前從JAVA官網選擇安裝JAVA即安裝的是JRE。
JDK是為開發人員所提供的工具包,對開發人員來說屬於必備項,一般在JDK本身包含JRE,但是一般JDK還會再安裝一套JRE,這套JRE被成為公共JRE(如圖),JDK需要從oracle的官網下載。
目前的主流編輯器,如eclipse會找到JRE和JDK的位置,當然也可以再進行手工修改。
JAVA所需環境變數說明:
PATH:(必需)指定編譯、執行java程式是所需的程式所在路徑,一般在jdk安裝目錄(注意是JDK!!!和JRE是不一樣的程式所在路徑,一般在jdk安裝目錄(注意是JDK!!!和JRE是不一樣的!目前常用的設定辦法是先定義一個JAVA_HOME變量,在PATH中引用JAVA_HOME:%JAVA_HOME%/bin;
CLASSPATH:(之前必需,現在非必需)設定Classpath的目的,在於告訴Java執行環境,在哪些目錄下可以找到您要執行的Java程式(.class檔案),現在已經不需要;
JAVA_HOME:(理論上非必需,實際必需)設定一個變數存放java程式運行所需的程式所在路徑,方便在其他地方進行引用(不用再輸入一長串路徑,直接使用JAVA_HOME變數即可),同時,現在不少軟體也會直接呼叫JAVA_HOME變量,不設定容易出錯。
1.java主要結構闡述
java中每一個.java文件都是一個類,一個java工程由許許多多的.java文件組成,也就是由java類組成。一般而言一個java類中主要的結構如下:
1.包申明:java類在本工程中屬於哪個包,即在工程中的位置;
2.導入的包:外部庫,工具;
3.公共類別(或介面)定義:類別名稱與java檔案的名稱必須相同,類別中內容即java檔案的主要內容
4.其他:其他類別的定義和介面定義。
java專案中,由外至內分別為:source資料夾、套件(package)、類別(.java,就是上面bb了半天的那個東西),經過編譯後會將編譯後的類別(.class)放在與source資料夾同級的bin資料夾中。不同的source floder 中的package可以同名,相同的package中的類別不能同名(在兩個不同source floder中的相同package中也不行)
2.基本資料類型
基本資料類型8中:整數4種、浮點2種、字元、布林;
btye最大128-1;short最大32768-1;int包含最大2開頭的10位數;數值計算注意整數數值範圍,記得加轉換符;long資料在賦值時若整數的數值超出int的最大範圍則要在整數後面加上l說明;
浮點型對於float的賦值要在小數後面加f說明;
單純的字符型變量相加(即每個元素都是字元變數(PS.加入整形也是ascii碼相加))等於把各個字元的ascii碼相加;(與字串的加法運算不同!!!字元和字串相加得到的是字串)
3.基礎包裝類別
基礎的常用的包裝好的類別有7種(一定注意大小寫!!!):String、Integer、Boolean、Byte、Character、Double、Number ;
4.型別轉換:
char、int、double等之間可以用強制轉換的方式轉化,如(int)'a',(char)25;boolean型別變數無法由強制轉換得到
各個變數與各個類別之間的轉換,需要透過呼叫各個物件的方法來實現。如:整形、字符型轉換為String物件,可以使用String.valueOf();
5.常數賦值:
全域常數初始化時必須賦值;局部常數初始化時可以不賦值,但是只能賦值一次。
6.變數有效範圍:
全域變數分為實例變數和靜態變數(static),靜態變數可以在其他類別中使用類別名稱.變數名的方式使用,實例變數只可在本類中使用。
局部變數只在定義變數的程式碼區塊中有效,即{}兩個大括號之間,從變數申明開始算。
與局部變數同名的全域變量,在局部變數的使用範圍內失效。
7.switch與if elseif的區別
兩者可實現相同的功能,但從邏輯上說,if elseif必須對匹配項前面的每一個項目都執行檢查,而switch通過一定的查找辦法去尋找匹配項。在需要檢查的項目較多時,switch效率較高,switch另一個優點是程式碼清晰,但缺點是難以進行複雜操作。
8.使用foreach循環方式
使用foreach循環方式可以快速的遍歷數組、物件等,具體方式:for(int x : arr){操作},但需要注意foreach形式無法將資料寫入
9.String物件常用方法記錄(依個人理解的常用程度排序,參數和具體用法未說明)
length()取得字串長度;
equals()判斷的內容是否相同,字串注意,不能直接使用等號比較,使用等號會比較記憶體中的位置! ! ! ! !
replace()字串中的子字串替換;
split(),將字串按給定的符號進行分割,保存在數組中;
toCharArray(),將字串轉換為字元數組;
trim()去除字串前後的空格,注意,不對字串進行更改,而是返回相應副本;
substring()截取字元字串;
toLowerCase(),toUpperCase()進行字串的大小寫轉換;
indexOf(),lastIndexOf()在字串中尋找子字串位置;
charAt()傳回字串中指定位置的字元;
startsWith(),endsWith()判斷字串的開始和結尾是否為指定字串;
compareTo(),按字典順序比較字串;
10.Arrays物件常用方法記錄(按個人理解的常用程度排序,參數和具體用法未說明)
Arrays. fill(),填入數組,可用於陣列初始化、賦值;
Arrays.sort(),對陣列進行排序;
Arrays.copyOf(),Arrays.copyOfRange複製陣列
🎜11.注意static關鍵字的使用
具體解析見技術部落格:http://www.cnblogs.com/dolphin0520/p/3799052.html
在使用的時候,如要在類別外部呼叫的方法、變數都需要加上static限制符,而有static限制符的類別(方法)若需要呼叫其他方法或全域變量,那麼被呼叫的方法和全域變數也必須有static修飾(這是因為非靜態變數必須要創建實例才能被呼叫)。一般用於不需要建立實例的類別(方法),例如用作工具的類別。
要區分static與權限修飾符的區別,static的目的是,在不建立實例的情況下也可使用static變數和方法,而權限修飾符則規定了該方法與變數的使用範圍。
12.Java的集合類別保存資料說明
Arraylist、HashMap等集合類別是java中的一個特色, 但在其中只能保存引用型的數據,不能保存基本資料。即:Integer可以但int不行。
13.對於class的權限修飾符說明
對於頂級類別(包內部第一層的類別)來說,只有public修飾符可用,表示可跨包使用該類,若不用public則默認在該套件內可用,一個.java檔案中使用public的類別至多存在一個。對於頂層類別的內部類別,其權限修飾符為private、protected、public與預設。
關於內部類別的權限問題需要深入研究(例如內部類別中存在private變量,需要在外部類別的內部使用該變數等情況),此處暫時跳過。
14.判斷一個類別的兩個物件是否相等
除了基礎變量,引用變數(物件)不能使用兩個等號==來判斷值是否相等(一個類別產生的兩個物件是否相等) ,需要使用equals方法。但注意的是,一般使用者定義的類別的equals方法內部都是使用雙等號判斷的,要實現判斷的效果還需要使用者重載equals。 (就是自己寫一個方法判斷)
15.基本變數對應的包裝類別中可能常用的方法
Integer
equals(),比較兩個integer物件的值是否相等
byteValue(),intValue (),shortValue(),傳回對應類型的值
toString(),將Integer物件轉換為String物件(toBinaryString()、toHexString()、toOctalString()同理)
Integer.valueOf(),將String物件轉換為Integer物件
Integer.parseInt(),將String物件轉換為int變數。
Boolean
Byte
Character
Character.inUpperCase()、Character.inLowerCase(),判斷是否為大寫、小寫字元
toString(),將字元轉換為字串
Double(Float可以參考Doubel,方法是一樣的)
intValue(),回傳整形變數
toString(),傳回字串
.DoubleueOf. ),將String物件轉換為Double物件
總結:需要進行基礎類別的轉換時,可使用toString()轉換成字串,再將字串用各類別的valueOf轉換為所需的類別。
16.常用數學計算方法
DecimalFormat類
當中的各個方法對數字進行格式化,得到的是字符串;
Math類
三角函數方法,可進行各類三角函數計算,包括弧度角度互換
指數函數方法,平方、平方根、立方、立方根方法等
取整數方法,向上、向下取整,最近取整
最大值絕對值
隨機數方法(產生0到1之間的任意double型數值)
Random類
nextInt()傳回一個整數、nextLong()傳回一個長整數、nextBoolean()傳回一個布林變數、nextFloat()傳回一個浮點數
17.關於方法重寫(不同於重載!!!!)
重寫方法時,可以修改方法的修飾符、回傳值類型(參數類型、個數不可變),大多數情況下父類別中的final方法不可重寫(private final在子類別中不可見,可重寫,是比較特殊的情況)
子類別方法對父類別方法重寫時,子類別方法的修飾符必須比父類別方法的修飾符權限更大;
子類別對父類別方法從重寫時,若要修改子類別方法中傳回值類型,該類型必須是父類別中同方法傳回值的子類別;
18.關於方法重寫與重載的差異
在同一個類別中,方法無法重寫,即在一個類別中不能存在兩個相同方法名稱、參數個數、參數類型的方法,在同一個類別中,方法可以重載,即一個類別中允許多個相同的方法名,不同的參數型別、參數個數的方法存在。方法的重寫涉及到父類、子類至少兩個類,若要重寫,不能修改方法的參數型別和數,方法的重載只在一個類中發生,若要重載,必須修改參數類型、個數。所有的父類別中的方法都會在子類別中被繼承,所以父類別與子類別中存在兩個方法名稱相同、參數不同的方法時,可以看作先被繼承,然後被重載。
19.抽象類別(abstract關鍵字)
抽象類別只能被繼承,沒有其他任何功能,而抽象類別中的抽象方法在被繼承後必須要進行重寫,抽象方法沒有方法體。若類別中含有抽象方法,則該類別必定為抽象類別。
20.介面
介面(interface)的權限修飾符(待解決),介面中的方法均為public且不含方法體需要繼承後重寫,
先不管原理談應用,介面一般使用public修飾,不加public的介面只能在同套件中的不同類別中使用(依然預設的protected),加上public的介面才能跨套件使用,但是只有與.java名稱相同的interface才能使用public 。而在介面內部,除去static、default方法,其他方法均不能有方法體。
21.物件的轉變
物件轉型分為向轉型和向下轉型,子類別物件可以一直向上轉型(會自動轉換),父類物件的轉型要考慮其是否屬於子類別物件才能轉(需要強制轉型)。如:A a = new B();,B為A的子類,則最終a當作A類型的對象,但本質上仍是B類,父類類型的引用可以調用父類中定義的所有屬性和方法,對於只存在與子類別中的方法和屬性它就望塵莫及了,即a可以調用B類型中從A類繼承到的方法和屬性,但不能調用B類中獨有的方法和屬性。在方法呼叫時同理,假設C繼承於B繼承於A,則C型別物件c在呼叫類別中某一方法時,會在可用範圍內(可用範圍參考上一句)先找出以C型別為參數的方法重載版本,若不存在,則向上轉型為B並尋找B類型為參數的方法重載版本,直至找到可執行的方法重載版本,若不存在,則無法調用,會報錯。
22.關於類別包
在實際開發中,應為所有的類別指定類別包,包的聲明必須是文件中第一行非註解程式碼,所有類別包均為小寫字母構成。導入包時,若使用*來導入包中的所有類,則不會導入子類,如需要導入子類還需要重新import。使用import static 可以導入類別當中的靜態成員。
23.關於常數
final定義的常數分類局部常數和全局常數,局部常數在其生命週期內不能重定義,但是需要的話可在每次創建的時候都可以賦新值,全局常數一般使用public static final,在程式運行期間,全域常數的值都不會被改變。
PS:
多態沒能理解透徹,待深入
介面的權限修飾符未能理解透徹,待深入

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6
視覺化網頁開發工具