JAVA
開(kāi)發(fā)環(huán)境:
- JDK---Java開(kāi)發(fā)環(huán)境
- JDK中包含JRE JRE---Java的運(yùn)行環(huán)境
- JRE中包含JVM虛擬機(jī) JVM存在于JRE中bin目錄內(nèi)
JVM虛擬機(jī)兩大特性:
- GC垃圾回收機(jī)制
- 通過(guò)new開(kāi)辟的空間,不需要free釋放锣吼,自動(dòng)的被JVM虛擬機(jī)釋放了 人為不可干涉
- 跨平臺(tái) => 半編譯半解釋實(shí)現(xiàn)的
第一個(gè)Java代碼:
- 1.任何的代碼都應(yīng)該寫在類中
- 2.通過(guò)關(guān)鍵字class來(lái)定義一個(gè)類
- 3.一個(gè)java文件可以寫多個(gè)類,但是應(yīng)該有一個(gè)主類蓝厌,通過(guò)public來(lái)定義一個(gè)主類玄叠,主類的名字需要和文件名相同
- 4.在Java中程序的入口也是Main方法
- 5.main方法有固定的格式,只有寫成固定的格式才能被JVM虛擬機(jī)識(shí)別并運(yùn)行:
public static void mian(String[] args)
public修飾主類可以被JVM訪問(wèn)到拓提,主類中的main被public修飾可以被JVM訪問(wèn)到這個(gè)方法
static修飾:靜態(tài)的成員會(huì)隨著類的加載而加載读恃,當(dāng)運(yùn)行主類時(shí),static修飾的main會(huì)立馬出現(xiàn)
編譯解釋運(yùn)行Java代碼:
編譯:javac xxx.java
編譯之后生成字節(jié)碼文件代态,有幾個(gè)類就生成幾個(gè)字節(jié)碼文件
解釋執(zhí)行:java xxx 解釋執(zhí)行Java代碼
Java中特有的注釋方法---文檔化注釋:
/**
* @author farsight
*/
文檔化注釋可以在dos命令行通過(guò)javadoc生成注釋文檔
eclipse的使用:
alt+/ 補(bǔ)齊
ctrl+/ 注釋
ctrl+f11 運(yùn)行
復(fù)制寺惫、剪切、粘貼
eclipse創(chuàng)建項(xiàng)目:
- 1.new JavaProject
- 2.new package 包名經(jīng)常寫公司的域名倒寫 cn.com.farsight 在硬盤就行有cn目錄蹦疑,目錄中又有com目錄西雀。。歉摧。艇肴。
- 3.new class
- 4.運(yùn)行Java代碼實(shí)質(zhì)上就是在dos命令行執(zhí)行了Javac 和 java 兩個(gè)指令
Java的命名規(guī)則:
規(guī)則 | 實(shí)例 | |
---|---|---|
類名 | 雙駝峰 | DayOne |
變量和方法名 | 單駝峰 | dayOne |
常量 | 全大寫 | COUNT |
關(guān)鍵字保留字:
- goto腔呜、const
- true和false是boolean的兩個(gè)值,并不是關(guān)鍵字
- Java中的關(guān)鍵字都是小寫的
數(shù)據(jù)類型:
- Java中有byte數(shù)據(jù)類型 -- 1個(gè)字節(jié)大小
- java中的char兩個(gè)字節(jié) -- 因?yàn)镴ava中沒(méi)有能夠表示一個(gè)字節(jié)的數(shù)據(jù)類型了再悼,所以造出一個(gè)byte數(shù)據(jù)類型
- 0b表示二進(jìn)制核畴,一堆的0/1看起來(lái)不便捷 --- “_”做分隔
- char類型表示65535個(gè)特殊符號(hào),其中包含常用的漢字冲九、日文等等 Java采用的編碼格式:unicode編碼
- boolean類型的表述范圍是0/1 一位谤草。boolean類型的值只能是true/false,不能用0/非0代替
類型轉(zhuǎn)換:
- 浮點(diǎn)型字面值(如3.14)默認(rèn)的是double數(shù)據(jù)類型莺奸,字面值3默認(rèn)int數(shù)據(jù)類型
- 3.14f/F表示該字面值是float類型咖刃,或者,(float)3.14也可以轉(zhuǎn)為float類型
- 表達(dá)式的數(shù)據(jù)類型憾筏,以最大的為準(zhǔn)嚎杨,10+3.14該表達(dá)式就是double數(shù)據(jù)類型 --- 自動(dòng)升級(jí)
- 根據(jù)圖,數(shù)據(jù)類型從左到右可以實(shí)現(xiàn)自動(dòng)類型轉(zhuǎn)換(可以不加強(qiáng)轉(zhuǎn))氧腰,但是有虛線的類型之間轉(zhuǎn)換可能導(dǎo)致精度丟失
變量作用范圍:
- 方法內(nèi)的是局部變量枫浙。局部變量在使用之前必須初始化,系統(tǒng)不會(huì)默認(rèn)進(jìn)行初始化
- 方法外的是全局變量古拴,也稱為成員變量箩帚。成員變量,聲明時(shí)會(huì)自動(dòng)進(jìn)行初始化
語(yǔ)句:
- Java中for循環(huán)的第一條語(yǔ)句可以用來(lái)定義變量
- Java中有foreach語(yǔ)句黄痪,經(jīng)常用來(lái)遍歷容器中的 數(shù)據(jù)
數(shù)組:
- 聲明的兩種方式
- 初始化的兩種方式:
- 靜態(tài)初始化:開(kāi)辟空間時(shí)直接初始化
- int[] array = {1,2,3,4,5};是下面的一種省略
- int[] array = new int[]{1,2,3,4,5};
- 動(dòng)態(tài)初始化:先開(kāi)劈空間紧帕,然后自己實(shí)現(xiàn)初始化
- int[] array = new int[5];
- array[0] = 1;
- array[3] = 4;
- 靜態(tài)初始化:開(kāi)辟空間時(shí)直接初始化
- 數(shù)組變量array引用了一塊內(nèi)存空間,這塊空間才是真正的數(shù)組的內(nèi)容 --- 引用數(shù)據(jù)類型
引用數(shù)據(jù)類型:
- String類型桅打,可以表示字符串
類:
- 類是一種描述是嗜,描述什么樣的事物才屬于這個(gè)類 抽象的范圍
對(duì)象:
- 是屬于某個(gè)類,一個(gè)具體的挺尾,實(shí)實(shí)在在存在的實(shí)物 具體鹅搪,獨(dú)一無(wú)二的實(shí)物
面向?qū)ο蟮木幊陶Z(yǔ)言:
- 針對(duì)一件事情,需要哪些對(duì)象遭铺,協(xié)助完成
- 方法相當(dāng)于謂語(yǔ)丽柿,調(diào)用方法時(shí),該方法都是依賴主語(yǔ)的(任何動(dòng)作/謂語(yǔ)的發(fā)生都依賴主語(yǔ)調(diào)動(dòng))
面向?qū)ο蠼鉀Q需求:
- 1.抽取名詞/對(duì)象
- 2.描述對(duì)象所屬的類
- 3.創(chuàng)建對(duì)象
- 4.對(duì)象協(xié)作完成需求
封裝:
- 一個(gè)類中的成員魂挂,可以被外部的類直接用對(duì)象訪問(wèn)甫题,這樣不安全
- 為了提高代碼的安全性 --- 封裝
- 概念:對(duì)內(nèi)隱藏細(xì)節(jié),對(duì)外提供方法
- 對(duì)內(nèi)隱藏細(xì)節(jié):private修飾涂召,外部的類就不能直接訪問(wèn)這些成員了
- private:該修飾符修飾的成員只能在當(dāng)前類中有效 public:共有的坠非,任何類都可以訪問(wèn)到 默認(rèn)修飾符:同一個(gè)包中有效
對(duì)外提供接口(方法):通過(guò)public修飾的方法,外部的類通過(guò)訪問(wèn)該方法實(shí)現(xiàn)對(duì)私有成員變量的設(shè)置年齡和獲取年齡
構(gòu)造器:
- 對(duì)象一產(chǎn)生就應(yīng)該帶著自己的屬性芹扭,并不應(yīng)該后期添加設(shè)置
- 解密:new 類名();該處的類名()就是 構(gòu)造器麻顶,我們可以借助于構(gòu)造器實(shí)現(xiàn)對(duì)象初始化
- Student xm = new Student(參數(shù)1赦抖,參數(shù)2,參數(shù)3)辅肾;匹配到對(duì)應(yīng)的構(gòu)造器队萤,借助于對(duì)應(yīng)構(gòu)造器實(shí)現(xiàn)對(duì)成員變量的初始化
- 當(dāng)類中不寫構(gòu)造器時(shí),系統(tǒng)會(huì)默認(rèn)添加一個(gè)無(wú)參的構(gòu)造器矫钓;當(dāng)寫了有參數(shù)的構(gòu)造器時(shí)要尔,系統(tǒng)不會(huì)默認(rèn)添加無(wú)參的構(gòu)造器了
- 構(gòu)造器和普通的方法很相似:(構(gòu)造器就是特殊的方法)
- 方法體、有方法名新娜、有參數(shù)赵辕、可以被public、private概龄、默認(rèn)修飾符修飾
- 構(gòu)造器和方法的不同:
- 1.方法名必須和類名相同
- 2.不寫返回值類型
- 3.作用:專門用來(lái)創(chuàng)建對(duì)象初始化使用
重載:
- 構(gòu)造器可以寫多個(gè)(多個(gè)名字相同的構(gòu)造方法)还惠,參數(shù)不同,調(diào)用時(shí)根據(jù)參數(shù)進(jìn)行匹配
- 普通的方法也可以寫多個(gè)方法名相同私杜,參數(shù)不同的方法蚕键,調(diào)用這些方法時(shí),就是根據(jù)參數(shù)不同進(jìn)行匹配 --- 重載
this關(guān)鍵字---構(gòu)造器之間調(diào)用:
- 方法之間可以相互調(diào)用衰粹,那構(gòu)造器之間可以相互調(diào)用嗎锣光?
- 構(gòu)造器之間調(diào)用,不能通過(guò) 構(gòu)造器名(參數(shù)) 來(lái)調(diào)用铝耻,應(yīng)該通過(guò)this(參數(shù))來(lái)匹配調(diào)用
- 調(diào)用其他構(gòu)造器時(shí)誊爹,必須放在第一行
this關(guān)鍵字---區(qū)分成員變量和局部變量重名的現(xiàn)象:
- this.變量 => 該變量是全局變量
- 直接打印變量 => 就近原則
this的含義:
- this指代當(dāng)前對(duì)象
static關(guān)鍵字語(yǔ)法規(guī)定:
- static修飾的方法(靜態(tài)方法)內(nèi)只能訪問(wèn)static修飾的成員
static修飾成員的加載時(shí)間:
- 隨著類的加載而加載
- 當(dāng)靜態(tài)成員方法加載時(shí),非靜態(tài)成員變量和方法還沒(méi)有加載(找不著)瓢捉,所以靜態(tài)方法內(nèi)部不能調(diào)用非靜態(tài)成員
-
Test tt = new Test();
JVM執(zhí)行到Test時(shí):加載Test類频丘,并將該類中的靜態(tài)成員一同加載
JVM執(zhí)行到new Test()時(shí):將Test中非靜態(tài)的成員加載到堆中的對(duì)象中