本文是java學習隨手的筆記,分享非大家,吾本電腦專業大學僧一枚,參加研究生考試,因技術不過關,覆試pass了我,於是我來到一家菜鳥公司,拿著微薄的工資,吃著饅頭喝著涼水,苦練技術,因為相信技術可以成就夢想,於是日夜勤奮,堅持不懈,相信通過自己的努力,可以學有所長。造福一方,哈哈。 ...
搭建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類,來調用各個函數,比較的方便。