Java課堂隨筆(一)

第一天

1.關(guān)鍵字

在Java中關(guān)鍵字是不能設(shè)置成為變量名洼怔、方法名虾攻、包名咱旱、類名的!

2.標(biāo)識(shí)符

程序員自己定義的名字茫多,遵循以下規(guī)則:

1.只能以a-z和A-Z或數(shù)字或$或_組成

2.不能以數(shù)字開(kāi)頭祈匙,不能是關(guān)鍵字

3.Java的標(biāo)準(zhǔn)格式

class 文件名{ // 導(dǎo)入主函數(shù)是程序的入口!

public static void main(String[]字符數(shù)組args){ //相當(dāng)于入口函數(shù)可是 不是

//程序

}

}

4.Java的打印

System.out.print("");

5.Java的換行打印

System.out.println("");

6.Java的 常量

常量是指在程序運(yùn)行中其值不能改變的量天揖!

7.Java中轉(zhuǎn)義字符的樣式與意思

轉(zhuǎn)義字符的概述:

特殊字符使用”\”把其轉(zhuǎn)化成字符的本身輸出夺欲,那么使用”\”的字符稱作為轉(zhuǎn)移字符。

斜杠就是轉(zhuǎn)義字符今膊。

轉(zhuǎn)義字符 名稱 Unicode

\b Backspace (退格鍵) \u0008

\t Tab (Tab鍵盤) \u0009

\n Linefeed (換行) \u000A

\r Carriage Return(回車) \u000D

\\ Backslash (反斜杠) \u005C

\' Single Quote (單引號(hào)) \u0027

\" Double Quote (雙引號(hào)) \u0022

大意

\r 表示接受鍵盤輸入些阅,相當(dāng)于按下回車。

\n 表示換行斑唬。

\t 制表符市埋,相當(dāng)于Table鍵

\b 退格鍵,相當(dāng)于Back Space

\’ 單引號(hào)

\’’ 雙引號(hào)

\\ 表示一個(gè)斜跨

上述問(wèn)問(wèn)題解決:System.out.println("teacher said\"java is fun\"");

注意:換行符就是另起一行恕刘,回車符就是回到一行的開(kāi)頭缤谎,所以我們平時(shí)編寫文件的回車符應(yīng)該確切來(lái)說(shuō)叫做回車換行符

8.變量

概述:用于儲(chǔ)存可變的數(shù)據(jù)

特點(diǎn):1.必須要有大小? 2.儲(chǔ)存一定格式的可變數(shù)據(jù)? 3.必須要有名字

變量的數(shù)據(jù)類型:1.整型:byte 代表一個(gè)字節(jié)大小

short 代表兩個(gè)字節(jié)的大小

int 代表四個(gè)字節(jié)的大小

long 代表八個(gè)字節(jié)的大小

如果一個(gè)數(shù)值沒(méi)有采取特殊的處理,那么該整數(shù)默認(rèn)的類型是int褐着。

可以使用數(shù)值后面添加L或小寫L改變默認(rèn)的整數(shù)類型坷澡。

9.運(yùn)算

在運(yùn)算的時(shí),數(shù)字默認(rèn)的是int類型献起。

例外:--------------------------

short a = 3;

short b = 4;

a += b;

默認(rèn)的會(huì)將結(jié)果轉(zhuǎn)化為short類型所以不會(huì)產(chǎn)生精度問(wèn)題洋访!

第二天

一.回顧:

1.1常量:

基本數(shù)據(jù)類型常量

字符常量

整數(shù)常量的表現(xiàn)形式:一進(jìn)制的形式來(lái)表示(二進(jìn)制,八進(jìn)制谴餐,十進(jìn)制姻政,十六進(jìn)制)

生活中:十進(jìn)制(0-9) ,星期(七進(jìn)制(0-6)) ,時(shí)間(十二進(jìn)制(0-11),二十四進(jìn)制(0-23))

計(jì)算機(jī)是通過(guò)二進(jìn)制來(lái)讀取我們生活中的數(shù)據(jù)岂嗓。

進(jìn)制之間的轉(zhuǎn)換:

十進(jìn)制轉(zhuǎn)為二進(jìn)制:將十進(jìn)制除以2汁展,直到商為0 ,將余數(shù)從下上連接起來(lái)就是二進(jìn)制

10---->1010

二進(jìn)制轉(zhuǎn)十進(jìn)制:將二進(jìn)制的每一位乘以2^n ,n從0開(kāi)始厌殉,n每一次加一,在將結(jié)果相加食绿。

1001 ----》 1*2^0 +0*2^1 +0*2^2+1*2^3 = 9

將二進(jìn)制換位八進(jìn)制:

方式一:二進(jìn)制--->十進(jìn)制--->八進(jìn)制

方式二:一個(gè)八進(jìn)制相當(dāng)于三個(gè)二進(jìn)制為,將二進(jìn)制三位一分割公罕,計(jì)算出來(lái)

010 100 101 = 245

將二進(jìn)制換為十六進(jìn)制:(0-9)(a(10)-f(15))

0000 1010 0101 = a5

1.2變量:

Java數(shù)據(jù)類型分為兩種:

1.基本數(shù)據(jù)類型

Byte (字節(jié)) 8位(bit)

2.引用數(shù)據(jù)類型

String 字符串器紧。

變量的聲明方式:

//1.數(shù)據(jù)類型 變量名

//2.數(shù)據(jù)類型 變量名1,變量名2...

數(shù)據(jù)類型:

//數(shù)據(jù)類型的轉(zhuǎn)換

//1.自動(dòng)類型轉(zhuǎn)換

// 小數(shù)據(jù)類型--->大數(shù)據(jù)類型轉(zhuǎn)換

//2.強(qiáng)制類型轉(zhuǎn)換

// 大的數(shù)據(jù)類型 ----> 小的數(shù)據(jù)類型楼眷。

//數(shù)據(jù)類型轉(zhuǎn)換中需要注意的點(diǎn):

//1.凡是short 铲汪,byte ,char 定義的變量熊尉,在做運(yùn)算的時(shí)候,

//數(shù)據(jù)類型都會(huì)自動(dòng)轉(zhuǎn)換為int

//2.兩個(gè)不同數(shù)據(jù)類型做運(yùn)算掌腰,給過(guò)取決于大的數(shù)據(jù)類型狰住。

二.運(yùn)算符。

1.1算數(shù)運(yùn)算符:+,-,*,/,%

1.2自增自減 :++ 齿梁,--

1.3賦值運(yùn)算符 : = 催植,+=,-=勺择,*=创南,/=

1.4關(guān)系運(yùn)算符 : >,<,>=,<=,== ,!=

邏輯運(yùn)算符: & ,| ,! ,&& ,||

位運(yùn)算符:

它是對(duì)二進(jìn)制位進(jìn)行計(jì)算。

位運(yùn)算符是可以對(duì)十進(jìn)制的整數(shù)進(jìn)行計(jì)算省核,計(jì)算方式:將十進(jìn)制轉(zhuǎn)為二進(jìn)制進(jìn)行計(jì)算扰藕。

二進(jìn)制由0和1組成,所以計(jì)算的結(jié)果要么是0芳撒,要么是1

1.5位運(yùn)算符的符號(hào):

& (與):兩者都是1的時(shí)候我就是一,其他都是0

|(或):兩者都為0時(shí)才為0 未桥,其他的都是1.

^(異或):兩者不同為1笔刹,相同為0

~(取反):0變?yōu)?,1變?yōu)?.

//負(fù)數(shù)的表現(xiàn)形式: 二進(jìn)制位的最高位為1冬耿,那么這個(gè)數(shù)就是一個(gè)負(fù)數(shù)舌菜。

1111-1111 1111-1111 1111-1111 1111-1111 : -1

0000 0000 0000 0000 0000 0000 0000 0000 : 0

-2:1111-1111 1111-1111 1111-1111 1111-1110

-3:1111-1111 1111-1111 1111-1111 1111-1101

-4:1111-1111 1111-1111 1111-1111 1111-1100

-5:1111-1111 1111-1111 1111-1111 1111-1011

-6:1111-1111 1111-1111 1111-1111 1111-1010

-7:1111-1111 1111-1111 1111-1111 1111-1001

0000-0000 0000-0000 0000-0000 0000-0111 = 7

1111-1111 1111-1111 1111-1111 1111-1001

規(guī)律:負(fù)數(shù)所對(duì)應(yīng)的正數(shù)-1 ,取反

負(fù)數(shù)所對(duì)應(yīng)的正數(shù)取反+1

作用:數(shù)據(jù)進(jìn)行加密

123456

0-100 a-z

24845845957512317580960 --- >123456

1.6移位操作符:對(duì)二進(jìn)制位進(jìn)行操作

1.6.1 >> 右移? 除

1.6.2 << 左移? 乘

1.6.3 >>> 無(wú)符號(hào)右移

隨機(jī)數(shù)是? int a = (int)(Math.random()*范圍);

第三天

數(shù)組的排序和查找亦镶!

1.查找:

前提是數(shù)組中的數(shù)都已經(jīng)排好位置日月!

int 返回的是索引值 = Arrays.binarySearch(數(shù)組,需要查找的數(shù)字);

返回的值是:索引

如果沒(méi)有的話就返回對(duì)應(yīng)的插入位置-1!不過(guò)是負(fù)的缤骨!

2.排序

Arrays.sort(數(shù)組);

對(duì)當(dāng)前數(shù)組進(jìn)行升序排序爱咬!

數(shù)組也可以進(jìn)行指定位置排序: Arrays.sort(數(shù)組,指定的排序的索引,到指定位置的索引)绊起;

對(duì)象的創(chuàng)建以及屬性和方法的調(diào)用精拟!

class 對(duì)象名{

String name;

屬性的類型 屬性名;

public void run(){

方法的公開(kāi)程度(private or public) 方法的返回 方法名 (方法的參數(shù))

方法的實(shí)現(xiàn)!

}

}

在主函數(shù)里調(diào)用:

對(duì)象類名 對(duì)象名 = new 對(duì)象類名();

賦予屬性: 對(duì)象名.屬性 = ...虱歪;

調(diào)用方法: 對(duì)象名.方法名()蜂绎;

成員變量與局部變量的區(qū)別和作用:

定義:1.成員變量定義在類中,方法外笋鄙;局部變量定義在方法中

作用:1.成員變量是用來(lái)描述同一類事物的公共屬性的师枣;局部變量提供一個(gè)變量給方法使用!

生命周期:1.成員變量的生命周期隨對(duì)象而創(chuàng)建與消失萧落;局部變量的生命周期隨方法的調(diào)用而創(chuàng)建當(dāng)方法結(jié)束消失践美;

初始值區(qū)分:1.成員變量是有默認(rèn)值得洗贰;局部沒(méi)有默認(rèn)值必須初始化才能使用

判斷字符串相同:str.equals("");

第四天

面向?qū)ο蟮睦斫猓?/p>

核心:找合適的對(duì)象去做合適的事情

思想:盡可能的用計(jì)算機(jī)語(yǔ)言來(lái)描述現(xiàn)實(shí)生活的事物

面向?qū)ο螅簜?cè)重于對(duì)象

類與對(duì)象的關(guān)系:

類:是同一類事物的抽象

對(duì)象:是類的具體實(shí)現(xiàn)

創(chuàng)建對(duì)象和指揮對(duì)象做事情:

類的結(jié)構(gòu):

class 類名{

公有屬性

構(gòu)造代碼塊

構(gòu)造方法

公有方法

}

類名 對(duì)象名 = new 類名();

new 類名()--->匿名對(duì)象 :

特點(diǎn):1.一般不會(huì)賦值拨脉,因?yàn)闊o(wú)法獲取

2.創(chuàng)建出來(lái)每次都是新的對(duì)象

作用:1.書寫簡(jiǎn)單哆姻,只可以調(diào)用一次!

2.可以作為實(shí)際參數(shù)在方法中調(diào)用

對(duì)象的內(nèi)存分布:

1.對(duì)象的引用變量是存棧區(qū)玫膀,對(duì)象存在堆區(qū)矛缨,成員變量也是堆區(qū)

成員變量和局部變量的區(qū)別:

位置:成員:類中方法外

局部:方法中

作用域:成員:在類中都能使用

局部:只能在方法中使用

初始化:成員:有默認(rèn)的值

局部:必須要初始化賦值

生命周期 :成員:隨對(duì)象的生命而存在

局部:方法調(diào)用完就消失

構(gòu)造方法:初始化方法

注意點(diǎn):1.方法名與類名保持一致

2.構(gòu)造方法沒(méi)有返回值

3.構(gòu)造方法不是由自己調(diào)用而是創(chuàng)建對(duì)象的時(shí)候yo由Java虛擬機(jī)創(chuàng)建調(diào)用

4.當(dāng)構(gòu)造方法有參數(shù)時(shí),創(chuàng)建必須要有參數(shù)帖旨!

5.可以有多個(gè)構(gòu)造方法箕昭!可以重名:叫方法的重載!

6.構(gòu)造方法可以調(diào)用構(gòu)造方法(this(調(diào)用構(gòu)造方法的參數(shù))

注:1.this()調(diào)用必須是構(gòu)造方法的第一個(gè)語(yǔ)句

2.不要相互調(diào)用)

例:class 類名{

int name;

public 類名(int s){注:不能加void

name = s;

}

}

main函數(shù)

類名 對(duì)象名 = new 類名(傳值);

方法可以重名---》方法的重載解阅!

在方法重載時(shí)應(yīng)注意:1.方法名必須一樣

2.任何方法都可以實(shí)現(xiàn)

3.傳入?yún)?shù)順序或個(gè)數(shù)不一樣落竹!

代碼塊:

1.構(gòu)造代碼塊:在一對(duì)象被構(gòu)造時(shí)直接運(yùn)行,

注意點(diǎn):1.Java編譯器在編譯一個(gè)Java源文件時(shí)货抄,會(huì)把成員變量放在最前面

2.成員變量的初始化都是在構(gòu)造方法中執(zhí)行的

3.一旦經(jīng)過(guò)Java編譯器后述召,構(gòu)造代碼塊中的代碼移到構(gòu)造函數(shù)中去執(zhí)行,放在構(gòu)造函數(shù)的最前面執(zhí)行

4.成員變量的初始化和構(gòu)造代碼塊蟹地,按照當(dāng)前代碼的順序來(lái)執(zhí)行--->誰(shuí)在后面就顯示誰(shuí)

例:在類里的成員變量的位置上

int id积暖;

{

work();

}

2.局部代碼塊:寫在方法中 也是用大括號(hào)來(lái)表示;

3.靜態(tài)代碼塊:

this關(guān)鍵字:可以取到自身對(duì)象屬性怪与!

1.若成員變量與局部變量重名時(shí)夺刑,默認(rèn)的是直接調(diào)用局部,通過(guò)this可以直接取到成員變量

2.在方法中不存在同名的局部變量分别,編譯器會(huì)默認(rèn)給變量前加一個(gè)this.

主函數(shù)為什么用public來(lái)定義:

public static void main(){}

1.public:main函數(shù)是由Java虛擬機(jī)(jvm)來(lái)調(diào)用的遍愿,jvm也是一個(gè)程序,為了保證jvm能夠在任何情況下調(diào)用主函數(shù)耘斩。

2.static :如果沒(méi)有static main函數(shù)就需要?jiǎng)?chuàng)建一個(gè)對(duì)象來(lái)調(diào)用方法沼填;jvm如果創(chuàng)建對(duì)象的話不知道該傳遞什么參數(shù),所以為了避免麻煩就將方法定義為靜態(tài)的煌往!

3.void:main 是由jvm來(lái)調(diào)用的倾哺,返回值是給jvm的,jvm接受返回值沒(méi)有任何意義刽脖,所以就不需要返回值羞海。

4.main:不是關(guān)鍵字,main已經(jīng)被約定好了這個(gè)就是入口曲管;

5.args :用來(lái)接收程序啟動(dòng)時(shí)接受傳入的數(shù)據(jù)

增強(qiáng)for循環(huán):foreach循環(huán) = OC的for in 循環(huán)

for(String s : args){

分解的s? : 數(shù)組

System.out.println(s);

}

Java會(huì)學(xué):1.單例*? ? 設(shè)計(jì)模式:用來(lái)解決同一類問(wèn)題的解決方案(固定步驟)

2.觀察者

3.mvc*

4.裝飾設(shè)計(jì)模式

5.工廠模式*

Java單例設(shè)計(jì)模式:一個(gè)類只能創(chuàng)建出一個(gè)對(duì)象

例:

1.保證對(duì)象唯一

private static 類名對(duì)象名= new 類名(); 靜態(tài)的成員變量

私有化? 靜態(tài)

2.私有化構(gòu)造方法,阻止人用new來(lái)創(chuàng)建對(duì)象

private 類名(){} 注:構(gòu)造方法沒(méi)有返回值也不是靜態(tài)的

3.提供一個(gè)靜態(tài)方法來(lái)接受唯一的對(duì)象

public static 類名 getInstance(){

公開(kāi)? ? 靜態(tài)? 返回類? 方法名

return對(duì)象名;

}

main中:類名 對(duì)象名 = 類名.getInstance();類方法創(chuàng)建

私 靜 對(duì)--》私 構(gòu)造---》公 靜 法

在main中用類調(diào)用靜態(tài)方法會(huì)返回一個(gè)對(duì)象却邓,靜態(tài)方法調(diào)用私有的靜態(tài)的成員對(duì)象,成員對(duì)象只會(huì)調(diào)用一次私有的構(gòu)造方法院水,往后就返回的都是一個(gè)對(duì)象

餓漢單例模式步驟:1.創(chuàng)建一個(gè)對(duì)象設(shè)為私有的靜態(tài)成員變量腊徙,保障對(duì)象唯一推薦

2.把構(gòu)造方法設(shè)為私有简十,防止外部創(chuàng)建

3.創(chuàng)建一個(gè)返回為當(dāng)前類的靜態(tài)的方法

懶漢單例設(shè)計(jì)模式 --->例:? private static 類名 對(duì)象名;-----》聲明引用變量,不創(chuàng)建

private 類名(){}-----》私有化構(gòu)造方法

public static 類名 方法名(){ -----》公開(kāi)的靜態(tài)的方法以便調(diào)用

if(對(duì)象名==null){? ---->在線程里不安全

對(duì)象名 = new 類名();

}

return 對(duì)象名;

}

封裝:---》用于:1.框架? 2.工具類? 好處:1.提高數(shù)據(jù)安全性 2.操作簡(jiǎn)單 3.隱藏了方法的實(shí)現(xiàn)

步驟:1.使用private修飾需封裝的成員變量

2.提供一個(gè)公開(kāi)的方法設(shè)置或訪問(wèn)私有的屬性

設(shè)置:通過(guò)set get方法

命名規(guī)范:public void set屬性名()撬腾;首字母要大寫

public 返回的類 get屬性名()螟蝙;

權(quán)限修飾符:1.public 公共的,任何都可直接訪問(wèn)

2.private 私有的民傻,只能在自己類里進(jìn)行訪問(wèn)

第五天

方法區(qū)(數(shù)據(jù)共享區(qū))

給某個(gè)成員屬性設(shè)定static胰默,使其變成靜態(tài)常量,放置于方法區(qū)漓踢,這樣每創(chuàng)建一個(gè)都會(huì)讓對(duì)象訪問(wèn)方法區(qū)牵署。當(dāng)被更改后再次調(diào)用屬性時(shí)會(huì)發(fā)生大更改!

static String name喧半; 只會(huì)初始化一次所以只占一個(gè)內(nèi)存

靜態(tài)修飾符 static:1.用來(lái)修飾成員變量

當(dāng)成員變量被修飾時(shí)叫靜態(tài)成員變量:只被創(chuàng)建一次

靜態(tài)成員變量的訪問(wèn)方式:

1.可以用對(duì)象進(jìn)行訪問(wèn):對(duì)象名.靜態(tài)成員變量 = “”奴迅;

2.直接通過(guò)類名進(jìn)行訪問(wèn):類名.變量名 = “”;

注意:1.不要認(rèn)為方便就所有的變量都用static修飾

2.只能靜態(tài)變量才能用類名訪問(wèn)挺据,非靜態(tài)只能通過(guò)對(duì)象

3.局部變量不允許被static修飾

2.用來(lái)修飾方法---->

靜態(tài)方法:1.可以由類來(lái)調(diào)用? 類名.方法名();

2.可以通過(guò)對(duì)象來(lái)調(diào)用? 對(duì)象名.方法名();

注意:1.靜態(tài)方法推薦使用類名來(lái)調(diào)用取具,非靜態(tài)方法只能通過(guò)對(duì)象

2.靜態(tài)方法可以訪問(wèn)靜態(tài)的成員變量,不能訪問(wèn)非靜態(tài)的成員變量扁耐;非靜態(tài)的方法可以訪問(wèn)任何變量

原因:有可能靜態(tài)方法被調(diào)用者填,但對(duì)象卻沒(méi)創(chuàng)建

3.靜態(tài)方法可以訪問(wèn)靜態(tài)方法,靜態(tài)方法不能訪問(wèn)非靜態(tài)方法做葵;非靜態(tài)方法可以訪問(wèn)任何方法

原因:有可能靜態(tài)方法被調(diào)用,但對(duì)象卻沒(méi)創(chuàng)建心墅;非靜態(tài)方法只能由對(duì)象來(lái)調(diào)用酿矢,當(dāng)對(duì)象被創(chuàng)建出來(lái),靜態(tài)方法早就存在內(nèi)存中怎燥!

4.靜態(tài)方法中不允許出現(xiàn)this關(guān)鍵字和super

this:表示一個(gè)方法調(diào)用者對(duì)象瘫筐;原因:可能調(diào)用時(shí)沒(méi)有對(duì)象

super:

public static void? 方法名(){

static修飾方法

}

特點(diǎn):靜態(tài)的數(shù)據(jù)早于非靜態(tài)的數(shù)據(jù)存在內(nèi)存中

當(dāng)一個(gè)方法不需要訪問(wèn)非靜態(tài)數(shù)據(jù)是可以用 static 修飾

捕獲異常:將異常的代碼放置于 以下的框中

try{

異常代碼

}catch(){

}

第六天

Java繼承:

作用:1.優(yōu)化代碼減少代碼的重復(fù)使用

特點(diǎn):繼承父類的屬性和方法。單繼承(多層繼承)

特性:方法的復(fù)寫? 關(guān)鍵字:extends

注意:1.不要為了繼承而繼承铐姚,千萬(wàn)不要省代碼策肝,任何類都繼承

2.父類的私有成員變量是不能被繼承的!

3.父類的構(gòu)造方法是不能被繼承的隐绵!子類調(diào)用自己的構(gòu)造方法時(shí)之众,會(huì)默認(rèn)的調(diào)用父類的無(wú)參構(gòu)造方法!

4.可以通過(guò)父類的構(gòu)造方法來(lái)給子類賦值:

public 子類 extends 父類{

public 子類 (String name){

super(name)依许;訪問(wèn)父類的有參構(gòu)造方法不會(huì)調(diào)用父類的無(wú)參構(gòu)造方法 棺禾!

}

}

5.子類不夠繼承不在一個(gè)包中默認(rèn)權(quán)限的成員變量

在類里賦予對(duì)象,是當(dāng)前的類擁有賦予的對(duì)象峭跳!

例:class 類名 extends 父類{

繼承了

}

默認(rèn)權(quán)限 :friendly(友好的) private(私有)public(公開(kāi)的)prtected(受保護(hù))

第七天

super :關(guān)鍵字

解釋? :指向父類對(duì)象的引用空間膘婶!

作用? :1.當(dāng)子類與父類存在同名的成員變量時(shí)缺前,若沒(méi)有super訪問(wèn)的是子類的成員變量,有的話就是父類的

2.super也可以調(diào)用父類的構(gòu)造方法

注意⌒蟆:1.使用super調(diào)用父類的構(gòu)造方法衅码,必須是子類構(gòu)造方法中的第一個(gè)語(yǔ)句

2.super只能出現(xiàn)在子類的方法和構(gòu)造方法

3 .? super不能和this同時(shí)調(diào)用構(gòu)造方法!

總結(jié): super和this的區(qū)別:

1.代表的事物不同:this 所屬方法調(diào)用者對(duì)象

super 表示父類對(duì)象的引用空間

2.使用的前提不一樣: super 只能在繼承的條件下才能使用

this在非繼承條件下也可以使用

3.調(diào)用構(gòu)造方法: super 調(diào)用父類的構(gòu)造方法

this使用來(lái)調(diào)用本類的構(gòu)造方法

方法的重寫

作用:父類的方法滿足不了子類的實(shí)現(xiàn)脊岳,這就需要重寫父類的方法

注意:1.方法名要一致逝段,

2.參數(shù)不要修改

instanceof(實(shí)例類型)? 關(guān)鍵字作用:1.用來(lái)判斷某一個(gè)對(duì)象是否屬于某一個(gè)類

例:? 對(duì)象? ? instabceof? ? 類;返回boolean類型

2.instanceof? 關(guān)鍵字的使用前提:對(duì)象指定的類有繼承關(guān)系或者實(shí)現(xiàn)關(guān)系逸绎。

final(修飾符惹恃,最終)? ? 關(guān)鍵字 類似于常量

常量的格式----》 public final static 基本數(shù)據(jù)類型 變量名;

final 修飾的變量必須要初始化棺牧!

用法: final 數(shù)據(jù)類型 成員變量巫糙;

1.當(dāng)用final關(guān)鍵字修飾基本數(shù)據(jù)類型變量,改變量值就不會(huì)重新賦值 颊乘,第一次的結(jié)果就為最終的結(jié)果

2.用final修飾引用數(shù)據(jù)類型對(duì)象参淹,引用數(shù)據(jù)類型對(duì)象無(wú)法被更改

3.還可以用final修飾方法,方法就不能被重寫乏悄!

4.final還可以來(lái)修飾類浙值,那這個(gè)類就不能被繼承

在調(diào)用方法時(shí)應(yīng)多想想形參到底是怎么用的,去判斷傳入形參是地址(引用數(shù)據(jù)類型)還是值(基本數(shù)據(jù)類型)i菪 ?拧!

抽象類: 關(guān)鍵字 abstract规求;一個(gè)類如果被abstract所修飾筐付,這個(gè)類就叫做抽象類!

abstract? 關(guān)鍵字的使用:

1.如果abstract修飾方法阻肿,那么這個(gè)方法就叫抽象方法瓦戚!當(dāng)有子類繼承與父類時(shí)必須實(shí)現(xiàn)abstract修飾的方法!抽象方法是沒(méi)有主體(方法的實(shí)現(xiàn)4运)---跟協(xié)議差不多

2.當(dāng)有抽象方法時(shí)必須用抽象類來(lái)修飾较解!

3.非抽象類繼承了抽象類時(shí)必須實(shí)現(xiàn)抽象類例的所有方法!

注意: 1.如果一個(gè)方法沒(méi)有方法體赴邻,那么這個(gè)方法必須要用abstract來(lái)修飾

2.如果一個(gè)類里有抽象方法印衔,這個(gè)類就需要abstract來(lái)修飾,抽象類

3.如果一個(gè)沒(méi)抽象的類姥敛,繼承了抽象類当编,那么這個(gè)非抽象類中必須重寫所有的抽象方法

4.抽象類也可以存在非抽象方法!

5.抽象類里也可以存在構(gòu)造方法!作用是讓子類能過(guò)初始化父類的變量

6.抽象類不能創(chuàng)建對(duì)象:

原因:如果創(chuàng)建對(duì)象忿偷,對(duì)象就可以調(diào)用到抽象方法金顿,但是抽象方法沒(méi)有實(shí)現(xiàn),調(diào)用也沒(méi)意義鲤桥!

使用場(chǎng)景:在描述事物時(shí)揍拆,發(fā)現(xiàn)事物存在某種行為,但這種行為不具體茶凳,這時(shí)可以抽取這種行為嫂拴,聲明一個(gè)沒(méi)有實(shí)現(xiàn)的行為方式,這種行為就叫抽象的行為贮喧,這種時(shí)候需要用到抽象類筒狠!

接口:Java開(kāi)發(fā)常用!

作用:用來(lái)添加拓展功能

現(xiàn)實(shí):Java是單繼承

注意:1.接口是個(gè)特殊的類箱沦,可定義方法和屬性

2.屬性默認(rèn)的是final修飾的 public static final 實(shí)際上是常量

3.方法是抽象的用abstract public 修飾

4.接口不能創(chuàng)建對(duì)象

5.接口沒(méi)有構(gòu)造方法

6.接口是給類去實(shí)現(xiàn)的辩恼!非抽象類實(shí)現(xiàn)接口時(shí),必須將接口中的方法都實(shí)現(xiàn)

補(bǔ)充abstract不能跟那些關(guān)鍵字一起使用:1.private? 2.static? 3.final

接口的定義模式 :

用interface關(guān)鍵字來(lái)表示

interface 接口名{

定義在接口中的方法是不需要實(shí)現(xiàn)的谓形!

在借口中的變量默認(rèn)是final修飾的灶伊!

public void 方法名();

在接口里默認(rèn)的方法是抽象方法寒跳!接口中的方法是由實(shí)現(xiàn)來(lái)完成

接口中不能定義非抽象方法聘萨!可以定義成員變量!

};

結(jié)構(gòu):

class 類 implements 接口名童太,可以添加多個(gè)

一個(gè)非抽象的類實(shí)現(xiàn)接口米辐,就必須要實(shí)現(xiàn)接口中的所有方法,抽象類的例外书释,抽象的可以不實(shí)現(xiàn)儡循,但繼承抽象類的子類必須現(xiàn)實(shí)抽象類里的接口中的方法!U骼洹!

接口與接口的關(guān)系:接口是個(gè)特殊的類誓琼,一個(gè)接口可繼承多個(gè)接口

第八天

面向?qū)ο?---->多態(tài):一個(gè)類具有多種的表現(xiàn)形態(tài)(父類的引用類型變量指向子類的對(duì)象)必須繼承的情況下才有多態(tài)

引用類型的變量:1.數(shù)組 2.字符串 3.對(duì)象

父類 a = new 子類();

多態(tài)注意:1.子父類存在同名的成員變量检激,默認(rèn)訪問(wèn)父類的成員變量,無(wú)論靜態(tài)和非靜態(tài)的腹侣!

2.子父類存在同名的非靜態(tài)方法叔收,訪問(wèn)的是子類的非靜態(tài)方法

3.字符類存在同名的靜態(tài)方法,訪問(wèn)的是父類的靜態(tài)方法傲隶!

4.在多態(tài)情況下不能訪問(wèn)子類特有的成員變量和方法饺律!

總結(jié):多態(tài)情況下,子父類如果存在同名的成員跺株,訪問(wèn)的都是父類复濒,除了非靜態(tài)方法是訪問(wèn)子類 脖卖!

Java編譯器的編譯原理導(dǎo)致!

編譯看左邊巧颈,運(yùn)行不一定看右邊畦木!

編譯看左邊:Java編譯器在編譯時(shí)會(huì)檢測(cè)引用類型是否含有指定的成員,如果沒(méi)有就會(huì)報(bào)錯(cuò)砸泛! 引用類型 s = new 子類()十籍;

多態(tài)使用場(chǎng)景:

1.多態(tài)可用于做形式參數(shù),可以讓方法接收更多的類型

2.多態(tài)可以用于返回值唇礁,可以返回更多的數(shù)據(jù)類型

多態(tài)的另一種表現(xiàn)方式:

接口的引用類型指向?qū)崿F(xiàn)類勾栗!

實(shí)現(xiàn)關(guān)系 :? 接口? 變量 = new 接口實(shí)現(xiàn)對(duì)象。

可以用接口來(lái)接收對(duì)象U悼稹围俘!在java中用的比較多

List list = new ArrayList();多態(tài)的使用机断!

內(nèi)部類:一個(gè)類可以定義另外一個(gè)類楷拳,叫內(nèi)部類。

內(nèi)部類的文件名:外部類名$內(nèi)部類名

內(nèi)部類分兩種:

1.成員內(nèi)部類:

如何訪問(wèn)內(nèi)部類:

方式一:在外部類中提供一個(gè)方法吏奸,通過(guò)外部類的方法來(lái)創(chuàng)建內(nèi)部類對(duì)象欢揖! 外部類 外部類名 = new 外部類();

調(diào)用外部類的方法

方法二:直接在其他類中創(chuàng)建內(nèi)部類對(duì)象奋蔚,通過(guò)對(duì)象訪問(wèn)她混!

外部類.內(nèi)部類? 變量名? =? new? 外部類().new? 內(nèi)部類();

內(nèi)部類使用注意:

1.如果外部類和內(nèi)部類有同名的成員變量泊碑,在內(nèi)部類中Java虛擬機(jī)默認(rèn)訪問(wèn)內(nèi)部類中的成員變量坤按,可以通過(guò)“外部類.this.成員變量”來(lái)訪問(wèn)外部類的成員變量;

2.如果內(nèi)部類中的成員被private修飾時(shí)只能用方式一來(lái)訪問(wèn)內(nèi)部類的成員馒过!

3.如果內(nèi)部類中有變量被static修飾時(shí)那么這個(gè)內(nèi)部類也必須被static修飾

內(nèi)部類的好處:

1.在內(nèi)部類可以直接訪問(wèn)外部類的所有成員臭脓。

一般在什么情況下使用外部類:

在描述a對(duì)象,發(fā)現(xiàn)對(duì)象中有需要有一個(gè)對(duì)象b很復(fù)雜腹忽,b又要訪問(wèn)a中的數(shù)據(jù)来累,這個(gè)時(shí)候用內(nèi)部類來(lái)描述b對(duì)象會(huì)很方便

2.局部?jī)?nèi)部類:

在類的方法中定義的一個(gè)類叫局部?jī)?nèi)部類!

局部?jī)?nèi)部類只能通過(guò)第一種方法進(jìn)行創(chuàng)建>阶唷嘹锁!

局部?jī)?nèi)部類注意點(diǎn):

1.如果局部?jī)?nèi)部類訪問(wèn)了方法中的局部變量,方法中的局部變量必須用final來(lái)修飾着裹!

3.匿名內(nèi)部類 :沒(méi)有類名的類叫匿名內(nèi)部類

好處:簡(jiǎn)化書寫A旎!用于實(shí)際參數(shù)的傳遞!

使用前提:匿名類必須有繼承或?qū)崿F(xiàn)關(guān)系摔竿!

在方法中

繼承的父類? 子類名? =? new 父類(){------->匿名的內(nèi)部類面粮,這是個(gè)子類

重寫父類中的方法

};

第九天

異常: 在Java程序中也會(huì)出現(xiàn)程序不正常的情況拯坟,這個(gè)就叫異常但金!

Java中提供了很多異常類!

異常的體系:

Thorwable ---->所以異常和錯(cuò)誤的父類

--->error

--->Exception

Thorwable---的使用:

主要學(xué)習(xí)的三個(gè)方法:

類完整的名稱:包名+類名

1.toString()對(duì)thorwable的簡(jiǎn)短的描述:類的完整的名稱--Message的信息也會(huì)打印出來(lái)郁季!有返回值需要System.out.println()打印

2.getMessage()對(duì)thorwable的詳細(xì)的描述冷溃,有返回值需要System.out.println()打印

3.printStackTrace()打印的是異常的棧內(nèi)存,系統(tǒng)默認(rèn)的也是打印的棧內(nèi)存梦裂;直接調(diào)用打印就可以了似枕!

Erroe錯(cuò)誤:

錯(cuò)誤一般是Java虛擬機(jī)或者是硬件導(dǎo)致的問(wèn)題,所以一般不會(huì)用代碼來(lái)處理錯(cuò)誤 年柠!

------------------------------------------------------------------------------------------------

異常才是重點(diǎn)內(nèi)容

Exception:所有的異常都繼承于Exception

異常和錯(cuò)誤的區(qū)別:是在結(jié)尾凿歼,以Exception是異常可以用代碼來(lái)處理冗恨,Erroe是錯(cuò)誤不能用代碼來(lái)處理答憔!

異常的處理:

方式一:捕獲處理

注意點(diǎn):1.如果try代碼處理問(wèn)題處理后,會(huì)繼續(xù)執(zhí)行try-catch外的代碼掀抹!

2.catch里的代碼只有在try里的代碼出現(xiàn)異常的時(shí)候才會(huì)出現(xiàn)執(zhí)行虐拓!

3.一個(gè)try后面可以接多個(gè)catch塊,一個(gè)try可以處理多個(gè)異常

4.try捕獲異常是從小到大來(lái)捕獲傲武,否則就會(huì)報(bào)錯(cuò)

5.一定要把最大的異常寫在最后面

捕獲異常到底有什么用蓉驹?

學(xué)習(xí)JavaEE時(shí)會(huì)很有用!

為什么不直接用最大的異常揪利?

為了快速的找到錯(cuò)誤的态兴!

try{

可能發(fā)生異常的代碼

}catch(Exception e? 捕獲異常的類型的變量名){

處理異常

}

方式二:拋出處理

(throw? ? throws)使用注意點(diǎn):

1.關(guān)鍵字不能亂,throw 用于方法里疟位;throws 在方法聲明中

2.trow 用于方法內(nèi)部拋出異常瞻润,throws用于方法生命上拋出異常

3.throw關(guān)鍵字后只能有一個(gè)異常,throws 可以聲明多個(gè)異常

拋出異常使用注意:

1.如果在方法中拋出一個(gè)異常對(duì)象甜刻,就必須在方法聲明中聲明這個(gè)異常的拋出

2.如果一個(gè)方法調(diào)用拋出異常的方法绍撞,調(diào)用者就必須處理拋出的異常

3.如果一個(gè)方法拋出了異常,那么throw后面的代碼就不會(huì)在執(zhí)行罢吃!

4.在一種情況下只能拋出一種異常!

什么時(shí)候拋出異常昭齐,什么時(shí)候不拋尿招?

需要通知你的調(diào)用者,你的代碼可能存在問(wèn)題,這時(shí)需要拋出異常就谜。

如果你的代碼是直接和用戶打交道怪蔑,這是就不需要拋了

自定義異常:

如何區(qū)分編譯時(shí)異常和運(yùn)行時(shí)異常?

只要是runtimeException或子類都是運(yùn)行時(shí)異常丧荐!其他都是編譯時(shí)異常缆瓣!

運(yùn)行時(shí)異常:可以寫聲明調(diào)用者也可以不做處理!

編譯時(shí)異常:必須寫聲明虹统!

關(guān)鍵字:finally塊? 與try一起連用

作用:無(wú)論出了什么問(wèn)題弓坞,finally里的代碼都會(huì)執(zhí)行!

finally{

這里的代碼無(wú)論出現(xiàn)異常车荔!還是直接return都會(huì)執(zhí)行下去6啥场!除非jvm退出很牛逼忧便!

}

finally非常適合做資源釋放工作族吻,這樣可以保證!我的資源文件在任何時(shí)候都可以釋放掉珠增!

包的使用: Java中的包相當(dāng)于電腦的文件夾超歌!

作用:可以將編譯的class放入指定的包中!防止兩個(gè)java文件里的類名相同

定義包:

package 關(guān)鍵字定義包

package 文件夾.文件夾

javac -d . 類名.java? 載入5俳獭巍举!

java package的文件夾.java的名

如果加了包之后類與類之間的訪問(wèn)注意:

1.類需用public修飾

2.被訪問(wèn)的類需要先編譯出來(lái)!

3.在其他類使用其他類的話需要用到類的全名

可以用導(dǎo)包來(lái)解決問(wèn)題三悴品。

導(dǎo)包用關(guān)鍵字 :import

格式:import 包名一.包名二.....類名

import 包名.*禀综;

好處:

1.防止同名的類文件的沖突

2.將原文件與編譯后的文件分離,便于軟件的發(fā)布苔严!

注意事項(xiàng):

1.一個(gè)Java類中只能定義一個(gè)包

2.包的定義一定是類描述信息的第一個(gè)語(yǔ)句定枷!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市届氢,隨后出現(xiàn)的幾起案子欠窒,更是在濱河造成了極大的恐慌,老刑警劉巖退子,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岖妄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寂祥,警方通過(guò)查閱死者的電腦和手機(jī)荐虐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)丸凭,“玉大人福扬,你說(shuō)我怎么就攤上這事腕铸。” “怎么了铛碑?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵狠裹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我汽烦,道長(zhǎng)涛菠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任撇吞,我火速辦了婚禮俗冻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梢夯。我一直安慰自己言疗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布颂砸。 她就那樣靜靜地躺著噪奄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪人乓。 梳的紋絲不亂的頭發(fā)上勤篮,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音色罚,去河邊找鬼碰缔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛戳护,可吹牛的內(nèi)容都是我干的金抡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腌且,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼梗肝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铺董,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巫击,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后精续,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坝锰,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年重付,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顷级。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡确垫,死狀恐怖弓颈,靈堂內(nèi)的尸體忽然破棺而出拣凹,到底是詐尸還是另有隱情,我是刑警寧澤恨豁,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站爬迟,受9級(jí)特大地震影響橘蜜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜付呕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一计福、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徽职,春花似錦象颖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至潮瓶,卻和暖如春陶冷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背毯辅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工埂伦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人思恐。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓沾谜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胀莹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子基跑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法嗜逻,內(nèi)部類的語(yǔ)法涩僻,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法栈顷,線程的語(yǔ)...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • 一:java概述:1逆日,JDK:Java Development Kit,java的開(kāi)發(fā)和運(yùn)行環(huán)境萄凤,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,629評(píng)論 0 11
  • Win7下如何打開(kāi)DOS控制臺(tái)室抽? a:開(kāi)始--所有程序--附件--命令提示符 b:開(kāi)始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,588評(píng)論 4 12
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,485評(píng)論 0 3
  • 詭訪店 … 彌足珍貴的記憶呈現(xiàn) 屬于每個(gè)人的故事 用店主的心頭血 換取客人消失的記憶 同時(shí)客人將付出代價(jià) 這是店里...
    十七妄度閱讀 270評(píng)論 0 2