1风瘦、Java的整型常量默認為int型,并且在聲明long類型常量后要加上“L\l”蟹略。
2挖炬、Java的浮點類型意敛,也是有固定的表示范圍和字段長度膛虫。浮點類型默認為double類型草姻,聲明float常量必須要在數(shù)字后面加上f稍刀,否則出錯敞曹。
浮點數(shù)在計算機上表達是有誤差的,在計算機上是離散的澳迫,而在現(xiàn)實上是連續(xù)的。一般比較的話剧劝,都是不直接比較,通過減去浮點數(shù)來判斷讥此。
3、基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換
(1)boolean類型是不能被轉(zhuǎn)換和轉(zhuǎn)換的萄喳。
(2)字符型和整型他巨、浮點型在混合運算中可以相互轉(zhuǎn)化觉痛。容量小的類型轉(zhuǎn)換為容量大的類型。byte、short、char->int->long->float->double;byte、char冰啃、short不會互相轉(zhuǎn)換点弯。
多種類型進行運算時,系統(tǒng)自動將他們變?yōu)槿萘孔? 大的類型來運算。
容量大的轉(zhuǎn)換為容量小的要加強制轉(zhuǎn)化。但是一般會有精度的損失慈缔。
4赂韵、程序的格式(important)
要讓別人看得舒服质涛,看得清楚横媚。
(1)大括號對齊
(2)遇見大括號要縮進(用tab縮進)
(3)程序塊之間要加空行
(4)并排語句間要加空格(比如for語句)
(5)運算符兩側(cè)加空格
(6){}這些空號最好有空格
(7)要成對編程
5恢口、運算符
(1)++:先把i1做賦值運算后再把i1進行自加。()運算沒有影響。
k=i++等價于k=(i++)
(2)“+”運算只要有一個有string類型的話。系統(tǒng)會另外把操作數(shù)變?yōu)樽址愋偷摹L貏e地,當(dāng)運行打印的時候酬核,無論什么類型都自動轉(zhuǎn)為字符串進行打印蔬螟。例如
int c=8;
system.out,println(c);```
5鲁猩、if男应、for語句
6、對象
對象可以看成是靜態(tài)屬性(成員變量)和動態(tài)屬性(方法)的封裝體谓娃。
類是用來創(chuàng)建同一類型的對象的模板捡遍。在該類中定義了該類對象所應(yīng)具有的成員變量以及方法。
(reusable、extensibility)
成員變量默認初始有值的,局部變量是沒有初始化的。
所以使用變量前最好要初始化瘩缆。
成員變量在類體定義有效。(記住所有的變量在定義的大括號里面有效)
Java除了基本類型之外的類型都是引用類型一铅。
7暴凑、關(guān)于程序的執(zhí)行
(1)程序存儲在硬盤里-->經(jīng)過Load到內(nèi)存區(qū)
(2)在內(nèi)存中的代碼-->找到main方法開始執(zhí)行(可能會調(diào)用系統(tǒng)代碼)
(3)在執(zhí)行過程中有一些內(nèi)存管理
比如把new出來的東西存放在heap區(qū)
把局部變量存放在stack區(qū)
把靜態(tài)變量涵卵、字符串常量存放在data segment
把代碼存放在code segment
8昆婿、關(guān)于引用類型變量的內(nèi)存
引用類型一般占用兩個內(nèi)存空間
(1)當(dāng)定義一個引用類型變量時法精,比如String s;此時申請了一小塊內(nèi)存,且值為null;
(2)當(dāng)s= new String(“hello world”)時此時那個值為null的內(nèi)存被賦值冠骄,且通過該值指向找到s對象的內(nèi)存空間蝙砌。且指向的內(nèi)存空間是堆內(nèi)存(heap seg)肚邢。即對象都是存放在stack里辜王,當(dāng)系統(tǒng)覺得該對象不會再被使用了坟岔,系統(tǒng)就會對該對象進行回收闺阱。
java的引用概念就相當(dāng)于c的指針。
(3)方法是只有調(diào)用的時候才會占用內(nèi)存。
(4)同一類的*每個對象有不同的成員變量存儲空間*瘦穆。
(5)同一類的*每個對象共享該類的方法*。非靜態(tài)方法是針對每個對象進行調(diào)用的扛或。就是說要通過對象的.操作才能被使用绵咱。
9熙兔、構(gòu)造函數(shù)
系統(tǒng)默認有構(gòu)造函數(shù)悲伶,但是只要已經(jīng)定義了系統(tǒng)就不會自動添加了住涉、
構(gòu)造方法沒有返回值且與類名完全一樣麸锉。
例如:
```java
Public Person {
private int id;
private int age;
Person(int _id, int _age) {
id=_id;
age=_age;
}
}
10舆声、關(guān)于Java約定俗成的規(guī)則
(1)類名的首字母要大寫
(2)變量名和方法名首字母要小寫
(3)運用駝峰表示花沉,后面的每個單詞都應(yīng)該大寫
11媳握、重載函數(shù)
名字一樣碱屁,參數(shù)不一樣(含類型不一樣蛾找,參數(shù)個數(shù)不一樣)的方法們就叫重載娩脾。
12打毛、this關(guān)鍵字
(1)在類的方法定義中使用this關(guān)鍵字代表使用該對象的引用柿赊。
this指向?qū)ο笞约骸?br>
(2)必須指出使用當(dāng)前使用方法的對象是誰必須使用this隘冲。
(3)解決類方法的參數(shù)與成員變量重名的問題闹瞧。
13展辞、static關(guān)鍵字
(1)非static成員變量是每個類都有一份的,但是static成員變量是該類的各個對象共享一份的罗珍。
(2)static變量存放在data seg(數(shù)據(jù)區(qū))。
注:字符串常量也是引用對象覆旱,并且存儲在data seg(數(shù)據(jù)區(qū)里面)。
(3)任何一個對象都可以訪問靜態(tài)成員變量核无。也可以通過類名加.運算訪問。
只要通過類名加.運算訪問的變量的變量都是靜態(tài)成員變量。
(4)靜態(tài)的值的作用可以是用來計數(shù)用炼彪。
14正歼、package和import語句
為了管理大型軟件系統(tǒng)眾多類的命名沖突問題,java使用包(package)機制喜爷,提供類的多重類命名空間。
(1)package必須定義在程序的第一行
(2)格式為:package pk1[pk2][pk3]
(3)約定俗成的命名規(guī)范是用公司域名命名package
(4)package里面的.代表一個層次檩帐,即一個文件夾另萤。
(5)如果沒有import時,則在使用時要加上包的路徑
(6)查看系統(tǒng)自帶的包的路徑
【安裝的盤符】D:\jdk\jre\lib\rt.jar
常用的包
java.lang的類(比如String勾缭、Math目养、Integer癌蚁、System、Thread)這些可以不包含直接使用碘梢。
java.awt——包含了抽象窗口的工具集的多個類,用于構(gòu)建和管理圖形界面煞躬。
java.applet——包含applet運行所需的一些類逸邦。
java.net——包含了與網(wǎng)絡(luò)相關(guān)的類。
java.io包含了提供多種輸入雷客、輸出功能的類桥狡。
java.util包含了一些實用的工具類皱卓,如定義系統(tǒng)特性,使用與日期相關(guān)的函數(shù)部逮。
(7)把自己的類打包成一個jar包直接cd到目錄后,使用命令:jar
jar -cvf jar_name.jar .(指把目錄的所有文件打包成jar包)
【聽得不太懂得視頻:21~23甥啄,講如何使用自己的jar包,用到再重新看】
15蜈漓、類的繼承
(1)語義上有is-a的關(guān)系。
(2)java只支持單繼承融虽。
(3)一個子類 只能有一個基類享完。通過繼承有额,子類自動擁有了基類(superclass\parentclass)
(4)子類對象包含父類對象。
(5)關(guān)于父類中的訪問權(quán)限問題
private只有父類自己可以用(即類內(nèi)部)巍佑。
public所有地方都可以使用茴迁。
protecte只要是父類萤衰、子類或者同一個包下都可以使用堕义。
default的話就只有父類以及和父類在同個包下的都可以使用。
注:對于class的修飾符只有public脆栋、或者default可以用。
public 類可以在任何地方使用椿争,而default只能在同一個包內(nèi)使用。
16秦踪、接口
(1)接口是抽象方法和常量定義的集合。
(2)從本質(zhì)上講椅邓,接口是一種特殊的抽象 類舍扰,這種抽象類只包含常量和
方法的定義希坚,而沒有變量和方法的實現(xiàn)陵且、
(3)抽象類有關(guān)鍵詞abstract修飾而interface里面的方法沒有abstract裁僧。
interface里面的變量都是public static final類型的。
public interface runner {
public static final int id = 1;
public void start();
public void run();
public void stop();
}
(4)多個無關(guān)的類可以實現(xiàn)同一個接口聊疲。
(5)一個類可以實現(xiàn)多個無關(guān)接口。
(6)與繼承關(guān)系類似阱表,接口與實現(xiàn)類之間存在多態(tài)的關(guān)系贡珊。
(7)語法格式
<modifier> class <name> [extends <superclass] [implements <interface] [,interface]* {
<declarations>*
}
17、 異常處理
異常指的是運行期出現(xiàn)的錯誤门岔。
java異常是指在程序運行的過程中發(fā)生的一些異常事件(如0溢出、數(shù)組下標越界寒随、所要讀取的文件不存在等)
解決時觀察行號和錯誤的名字最重要。敢于調(diào)試妻往。
(1)設(shè)計良好的程序應(yīng)該在異常發(fā)生時提供處理這些錯誤的方法,使得程序不會因為異常的發(fā)生而阻斷或產(chǎn)生不可預(yù)見的結(jié)果纫普。
(2)java程序在執(zhí)行的過程中如出現(xiàn)異常事件,可以生成一個異常類對象局嘁,該異常對象封裝了異常事件的信息并將被提交給java運行時系統(tǒng)晦墙,這個過程稱為拋出(throw)異常晌畅。
(3)當(dāng)java運行時系統(tǒng)接收到異常對象,會尋找
能夠處理這一異常的代碼并把當(dāng)前異常對象交給其處理棋凳,這一過程稱為捕獲異常剩岳。(catch)
(程序是調(diào)試出來的!E淖亍)
(4)異常的分類
它的根類是throwable。下一層是error和exception骄噪。e rror是虛擬機錯誤,我們處理不了谬泌。其中exception是可以處理額呵萨。
exception下面還有一個runtimeexception潮峦。
總結(jié):
error:稱為錯誤忱嘹,有java虛擬機生成并拋出拘悦,包含動態(tài)鏈接失敗础米,虛擬機錯誤等,程序?qū)ζ洳蛔鎏幚怼?br>
exception:所有異常類的父類医寿,其子類對應(yīng)了各種各樣可能出現(xiàn)的異常事件,一般要用戶顯式的聲明或捕獲竖瘾。
runtime Exception:一類特殊的異常捕传,如被0整除庸论、數(shù)組下標超范圍等,其產(chǎn)生比較頻繁,處理比較麻煩涵亏,如果顯式的聲明或捕獲將會對程序的可讀性以及運行效率影響很大气筋。因此系統(tǒng)將自動檢測并將它們交給缺省的異常處理程序(用戶可不必對其處理)
Finally子句
try代碼段包含可能產(chǎn)生例外的代碼旋圆。
try代碼段后跟有一個或多個catch代碼段。
每個catch代碼段聲明其能夠處理一種特定類型的異常并且提供處理的方法搀矫。
當(dāng)異常發(fā)生時刻肄,程序會終止當(dāng)前的流程,根據(jù)獲取的異常的類型去執(zhí)行相應(yīng)的catch語句段卦羡。
其中finally語句段的代碼是無論如何都會被執(zhí)行的麦到。
finally語句為異常處理提供一個統(tǒng)一的出口,使得在控制流程轉(zhuǎn)到程序的其它部分之前瓶颠,能夠?qū)Τ绦虻臓顟B(tài)作統(tǒng)一的管理。
無論try所指定的程序塊是否拋出異常要门,finally所指定的代碼都要被執(zhí)行廓啊。
通常在finally語句中可以進行資源的清除工作,例如:
關(guān)閉打開的文件
刪除臨時文件炒瘟。
等等
其中對catch到的錯誤可以用e.getMessage();
或者e.printStackTrace()來打印錯誤信息第步。
關(guān)于異常的捕獲和處理
當(dāng)有method1和method2和method3缘琅,
method3有異常exception3,
method1調(diào)用了method2呻纹,method2調(diào)用了method3,并且 method1和2都throws了exception哥力,method3 throws了exception并且在throw new exception("Error")做了處理。
聲明自己的異常類
1钞澳、繼承java.lang.Exception類聲明自己的異常類
2、在方法適當(dāng)?shù)奈恢蒙僧惓n惖膶嵗⒂胻hrow語句拋出
3兰吟、在方法的聲明部分用throws語句聲明該方法可能拋出的異常。
其中異常和重寫的關(guān)系
重寫時如果拋出異常的話必須拋出和父類一樣的異巢严或者不拋出異常來重寫。