java學習筆記(菜鳥原創),java學習筆記鳥原創
搭建Java開發環境
使用開發工具開發Myeclipse
基礎核心:JAVASEEEME物件導向 API JVM.
JAVAEE是指java enterprise edition,java企業版,多用於企業級開發,包括web開發等等很多組建
JAVASE是指java standard edition,Java標準版,就是一般Java程式的開發就可以,可以看作是JAVAEE的子集
JVM(java virtual machine)原始碼myprogram.Java--(編譯器)二進位位元組碼myprogram.class--(解譯器)myprogram
JDK:(JAVA開發套件)
JRE:(JAVA運行時環境)JDK包括JRE,JRE包括JVM
Java開發環境搭建
第一步:安裝JDK
第二部:配置環境變數 java-home 配置JDK安裝路徑 path(最前面前後路徑用;隔開) 配置JDK命令檔案bin路徑 classpath(.表示當前路徑,;表示路徑隔開lib路徑)配置類庫檔案lib的位置
使用記事本編寫java程式
使用javac命令編譯java原始碼為二進位位元組碼檔案.class,使用解釋interpretor器解釋.class檔案。
javac編譯器命令後要跟副檔名,java命令後不能跟副檔名.class
IDE是一套工具,整合式開發環境,包括eclipse myeclipse netbean 等將程式開發環境和程式調試環境集合在一起。
使用eclipse進行程式的開發
1建立java項目,2建立程式包,3編寫java緣程式 4運行Java程式
建立一個工程,包括原始碼,圖片,視頻,指令碼等東西。建立包是為了方便代碼的管理。例如名字相同的可以放在不同的包中。包名一般命名為項目名的網域名稱的反向,例如com.imooc
pubic 修飾符class關鍵字,helloworld 與原始碼檔案名稱字要一致
public static void是必須的都一樣,main是程式的入口。
myeclipse是對eclipse的擴充,是一個十分優秀的用於開發java,javaee的eclipse外掛程式集合
java語言對大小寫敏感。System.out.println("welcome to imooc");
程式的移植,項目的匯入和匯出的操作。找到項目properties屬性,有location可知道項目的儲存位置,複製粘貼就匯出了,然後匯入是,視窗import--general--existing project--選擇項目位置就倒入了進來。
常用的技巧:
1、多練,企業需要動手能力強的,嘴皮子再溜不能寫也是扯淡,
2、多問,網站上論壇上去避免走彎路,拒絕鑽牛角尖,節省時間,
3、多動手調試錯誤,會debug,複習和總結。
4、每寫完一個小知識點就做一個總結,每周小總結,每月進行大總結,記筆記犯過的錯誤,部落格,鞏固學過的知識點,(技術型太強,知識點非常的多,所以需要總結鞏固。)
學雖容易,學好不易,且學且珍惜。
java關鍵字try catch finally throw throws true char false boolean int short long float double if else switch case break continue default for private protected public implements extends interface super class static void main null new package byte validate class instanceof synchronized(同步)import
另外java區分大小寫,所以Void 就不是關鍵字。
標識符:就是用於給JAVA程式中變數、類、方法等命名的符號,其規則:
1. 標識符可以由字母、數字、底線(_)、美元符($)組成,但不能包含 @、%、空格等其它特殊字元,不能以數字開頭。譬如:123name 就是不合法滴
2. 標識符不能是 Java 關鍵字和保留字( Java 預留的關鍵字,以後的升級版本中有可能作為關鍵字),但可以包含關鍵字和保留字。如:不可以使用 void 作為標識符,但是 Myvoid 可以
3. 標識符是嚴格區分大小寫。 所以涅,一定要分清楚 imooc 和 IMooc 是兩個不同的標識符哦!
4. 標識符的命名最好能反映出其作用,做到見名知意。
優秀攻城師的習慣:
1、變數名由多單片語成時,第一個單詞的首字母小寫,其後單詞的首字母大寫,俗稱駱駝式命名法(也稱駝峰命名法),如 myAge
2、變數命名時,盡量簡短且能清楚的表達變數的作用,做到見名知意。如:定義變數名 stuName 儲存“學生姓名”資訊
PS: Java 變數名的長度沒有限制,但 Java 語言是區分大小寫,所以 price 和 Price 是兩個完全不同的變數哦!
Java 語言是一種強型別語言。通俗點說就是,在 Java 中儲存的資料都是有類型的,而且必須在編譯時間就確定其類型。整型浮點型布爾型,類,介面,數組。int 4,char 2 boolean 1 float 4 double 8 強制轉化時,數值上並未進行四捨五入,而是直接將小數位截斷。自動轉換時,int可以自動轉為double,反之不可,因為double是八位,int是4位。3轉為3.0。
常量,我們可以理解為是一種特殊的變數,它的值被設定後,在程式運行過程中不允許改變。文法:final 常量名 = 值;程式中使用常量可以提高代碼的可維護性。夥計們注意啦:常量名一般使用大寫字元。
我們可以通過 javadoc 命令從文檔注釋中提取內容,產生程式的 API 協助文檔。javadoc -d doc Demon03.java!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!文檔注釋!!!!!!!!!!!!!!
一定要注意哦!自增和自減運算子只能用於操作變數,不能直接用於運算元值或常量!例如 5++ 、 8-- 等寫法都是錯誤滴!
PS:% 用來求餘數,也稱為”模數運算子“
1、 > 、 < 、 >= 、 <= 只支援左右兩邊運算元是數實值型別
2、 == 、 != 兩邊的運算元既可以是數實值型別,也可以是參考型別
比較子用於判斷兩個資料的大小,例如:大於、等於、不等於。比較的結果是一個布爾值( true 或 false )。
String sex = "女";
sex.equals("男");
import java.util.Arrays;
public int sort(int [] scores){
Arrays.sort(scores);
System.out.println(Array.toString(scores));
}
重載如果同一個類中包含了兩個或兩個以上方法名相同、方法參數的個數、順序或類型不同的方法,則稱為方法的,也可稱該方法被重載了。
判斷方法重載的依據:
1、 必須是在同一個類中
2、 方法名相同
3、 方法參數的個數、順序或類型不同
4、 與方法的修飾符或傳回值沒有關係
構造方法
1、使用new+構造方法建立一個新的對象
2、構造方法是定義在java類中的一個用來初始化對象的方法,其作用是用來建立和初始化一個對象,構造方法必須與類同名且沒有傳回值。
3、格式為,public 構造方法名(參數){內容}
4、當沒有指定的構造方法時,系統會自動的調用預設的構造方法,並賦初值
5、當有指定的構造方法,無論是有參,無參的構造方法,都不會自動添加無參的構造方法。比如定義了一個有參構造方法,而調用了無參的構造方法,則行不通。
6、有參和無參構造方法就是方法的重載
7、避免有參構造方法傳值不安全的問題。
靜態變數static:同一類的多個對象共用同一個成員,static修飾的成員成為靜態成員,或類成員,他屬於整個類所有,而不是某個對象所有,即被類的所有對象所共用,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!靜態成員可以使用類名直接存取,也可以使用對象名進行訪問,鑒於其特殊性推薦使用類名訪問。靜態成員屬於整個類,當系統第一次使用該類時,就會為其分配記憶體空間直到該類被卸載才會進行資源回收,可被修改哦哦/
靜態方法可以直接調用同類中的靜態成員,但不能直接調用非靜態成員。如果希望在靜態方法中調用非靜態變數,可以通過建立類的對象。然後通過對象訪問非靜態變數。靜態方法可以直接被類調用,非靜態方法可以直接被對象調用。
public static void print(){
HelloWorld hello = new HelloWorld();
System.out.println("歡迎你"+hello.name+"|");
System.out.println("愛好"+hobby+“、”);
}
普通成員方法中,則可以直接存取同類的非靜態變數和靜態變數。靜態方法中不能調用非靜態方法,需要通過對象來訪問非靜態成員。
通過輸出結果,我們可以看到,程式運行時靜態初始化塊最先被執行,然後執行普通初始化塊,最後才執行構造方法。由於靜態初始化塊只在類載入時執行一次,所以當再次建立對象 hello2 時並未執行靜態初始化塊.
物件導向三大特性,封裝,繼承,多態。
封裝屬性,setter\getter方法,對象調用setter\getter方法來賦值。
包的概念,,更好的管理java類,解決同名檔案衝突(區分同名的兩個類)
包的定義,package 包名,必須放在java來源程式的第一行,包名間可以使用“.”號隔開,eg:com.imooc.MyClass,區分層次
系統中的包:
java.(功能).(類)
java.lang(類)包含java語言基礎的類String Integer Double /Math.......
util包含java語言中各種工具類Scander,Date,Calendar
io包含輸入輸出相關功能的類 每多一個點功能更加的詳細。
import com.java.util.MyClass.
包的規範是全小寫字母拼字。可以載入某個包下的所有檔案,也可以載入某個具體包下的所有檔案。
答:什麼是內部類呢內部類的主要作用如下:
1. 內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類
2. 內部類的方法可以直接存取外部類的所有資料,包括私人的資料
3. 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便
靜態內部類是 static 修飾的內部類,這種內部類的特點是:
1、 靜態內部類不能直接存取外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問
2、 如果外部類的靜態成員與內部類的成員名稱相同,可通過“類名.靜態成員”訪問外部類的靜態成員;如果外部類的靜態成員與內部類的成員名稱不相同,則可通過“成員名”直接調用外部類的靜態成員
3、 建立靜態內部類的對象時,不需要外部類的對象,可以直接建立 內部類 對象名= new 內部類();
方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用存取控制符和 static 修飾符。
繼承,extends,繼承子類方法的重寫。
繼承的初始化順序:初始化父類再初始化子類,先執行初始化對象中的屬性,再執行構造方法中的初始化。
final修飾的類不可以被繼承,final 修飾的方法不可以被重寫,final修飾的已經賦初值的屬性不可以被更改包括在構造方法中。而沒有被賦值的final屬性可以在構造方法中被賦值。如果final修飾後的屬性沒有賦初值,那麼系統會報錯。
在方法中的局部變數被final修飾後也不可以被更改,也就稱之為常量。
java中的super關鍵字:在對象的內部使用,可以代表父類對象,訪問父類對象的屬性就super.age,訪問父類的方法,super.eat()。在子類的構造方法中隱式調用了父類的構造方法。
如果子類構造方法中沒有顯示調用父類構造方法,則隱式super()調用。
如果顯示調用父類的構造方法,則放在子類構造方法的第一行。
如果在父類定義有參數的構造方法,在子類中第一行必須有super()方法,因為沒有super會隱式調用預設構造方法,所以。。。。。
Object類
1、toString()方法,返回對象是雜湊code碼,(對象地址字串)可以通過重寫toString方法來顯示對象的屬性。
2、equals方法,比較的是對象的引用是否佔用同一塊記憶體位址。一般比較的是值是否相等,所以要重新equals方法。
Dog dog = new Dog(),是new 一個Dog類的構造方法建立一個對象,將對象付給dog,其實dog不是我們建立的對象,他是我們對象的地址,也就叫做對象的引用。==也是比較的引用的值是否相同。
多態:
1、引用多態
父類的引用可以指向本類的對象
父類的引用還可以指向子類的對象
子類的引用不可以指向父類的對象
2、方法多態
建立本類對象時,調用的方法為本類方法
建立子類對象時,如果有重寫調用方法是子類的對象,如果沒有重寫就調用父類。
不可以用父類的引用調用子類專屬的方法。
參考型別轉換:
向上無風險,向下的有風險,如何規避風險,那麼就用instanceof修飾符避免類型轉換的安全性問題。判斷是其子類型。
抽象類別
abstract修飾,public abstract class ,public abstract void 方法。
抽象方法只聲明,不寫內容。
含有抽象方法的類叫抽象類別,繼承抽象類別的子類可以定義其他方法。
介面 可以實現多個介面。
一般命名首字母大寫
修飾符必須是public,產量和方法都是抽象方法。
繼承了抽象類別,必須實現抽象類別的抽象方法,調用了介面,必須實現介面的抽象方法。
繼承父類要在調用介面之前。
異常,thread (erro.exception(runtimeexception))
String 對象建立後則不能被修改,所謂的修改其實就是建立了新的對象,所指向的記憶體空間不同,
一旦一個字串在記憶體中建立,則這個字串將不可改變。如果需要一個可以改變的字串,我們可以是用StringBuffer或者StringBuilder。每次new一個字串就是產生一個新的對象,即便兩個字串的內容相同,使用“==”比較只是比較他們的引用或者引用的地址。比較內容要用equals
使用 substring(beginIndex , endIndex) 進行字串截取時,包括 beginIndex 位置的字元,不包括 endIndex 位置的字元
使用 indexOf 進行字元或字串尋找時,如果匹配返回位置索引;如果沒有匹配結果,返回 -1
字串 str 中字元的索引從0開始,範圍為 0 到 str.length()-1
toLowerCase()//將字串轉換為小寫
charAt()//擷取索引位置為1的字元
getBytes()//將字串轉換為byte[].
基本類型和封裝類之間的轉換,double b =87.6 Double a = new Double(b); Double a = b;
自動裝箱,手動裝箱,自動拆箱,手動拆箱。double c = a.doubleValue(); double d = a;
基本類型和字串之間的轉換:Double.toString(a);Sg.valueof(a);Double.parseDouble(str);Double.valueof(str);
java集合架構:collection (list(arraylist) queue(linkedlist) set(hashset))map(hashmap)
Class類,萬事萬物皆對象,靜態類和成員是對象,普通的資料類型是不是對象
127.0.0.1本地迴環地址 MySQL -uroot -p -P -h127.0.0.1
我:
String Buffer append 和String+之間的區別:
我:
StringBuffer的append方法的在記憶體中是放在一起的,+並不放在一起
資料庫的自訂函式宣告,預存程序的聲明,儲存引擎的認識
還有各種連結,內串連,左外連結,右外連結,還有各種子查詢。
Map 泛型
Oracle 郵箱為qq郵箱,密碼為SHAOke12345
控制層的Action 的操作,就是要把Dao中的各個方法封裝成一個Action類
然後再主方法中進行調用這個Action類,來調用各個函數,比較的方便。