JAVASE基礎

第一階段java基礎復習

1.軟件開發(fā)基礎

1.1開發(fā)軟件的目的

提高人個計算機之間的交互方式

1.2軟件

軟件=數(shù)據(jù)+指令+文檔

1.3軟件開發(fā)

學習指令操作數(shù)據(jù)并編寫使用說明書

1.4交互方式

1.圖形交互方式

如:QQ ?thunder

2.命令行交互方式

如:DOS ?java

運行--》cmd

d:

cd

cd ..

cd \

dir

md

rd

echo "數(shù)據(jù)" >文件名

del

cls

exit

1.5軟件的分類

1.系統(tǒng)軟件

2.應用軟件(需要開發(fā)的)

2.計算機語言

2.1計算機語言

是人和計算機交流的載體

2.2計算機語言的分類

基于過程的計算機語言

C

面向對象的計算機語言

java

3. java語言

3.1 java語言的介紹

SUN ?Oracle

詹姆斯.高斯林

1995.5.23日

標記:咖啡和公爵

JDK的發(fā)展歷史

7.0 ?--> ?1.7.0

3.2語言的特點

1.面向對象

2.擴平臺的

3.編譯型語言( C java )

解釋型語言( javascript )

3.3環(huán)境搭建

1.下載

http://www.oracle.com

2.安裝

路徑中最好不要出現(xiàn)中文物延、空格

3.測試

進入到安裝目錄\bin在DOS窗口中輸入:

java -version

4.環(huán)境變量配置

4.1永久設置

4.2臨時設置

set

path: ??????設置java的開發(fā)工具所在的根目錄(bin) ?%java_home%\bin;

classpath: ?設置要運行的class文件所在的目錄

java_home:為了避免頻繁的修改paht環(huán)境變量提出來的耀找。一般為JDK的根目錄

5. JDK、JRE和JVM

JDK : Java開發(fā)工具集

JRE:Java運行環(huán)境

JVM:Java虛擬機帅容,主要用于運行java的字節(jié)碼(class)文件

JDK > JRE > JVM

6.程序體驗

class HelloWorld{

public static void main( String [] args ){

System.out.println( "hello world!!" );

}

}

編譯:javac HelloWorld.java

運行:java HelloWorld

4. java的基礎語法

4.1關鍵字

length不是關鍵字

main不是關鍵字

staitc是

關鍵字嚴格區(qū)分大小寫

保留字:goto

4.2標識符

java源代碼中出現(xiàn)的各種名字(類名拂共、包名螺句、屬性名沿猜、接口名芳肌、函數(shù)名碾局、變量名荆残、常量名)。

組成:數(shù)字净当、字母内斯、_、$

約束:

1.不能以數(shù)字開頭

2.區(qū)分大小寫

類名|接口名: ?單詞首字母大寫

屬性名|函數(shù)名:從第二個單詞開始首字母大寫

常量:全部大寫像啼,單詞之間使用_分隔

包名:全部小寫俘闯,單詞之間使用.分隔。每一個單詞代表一個文件夾

是域名的反寫忽冻。

4.3常量

正數(shù)常量34

小數(shù)常量34.0

布爾常量true ?false

字符常量'\n' ?'中' ?'\u0000'

引用常量null

4.4常量的表現(xiàn)形式

十進制默認16

二進制0001 0000

八進制020

十六進制0x10 ??F ?f

進制之間的相互轉換

4.5變量

主要用于存儲可變數(shù)據(jù)的容器真朗。

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

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

整型

byte ??1byte ?-128~127

short ?2byte

int ???4byte默認

long ??8byte ?L

浮點型

float ?4byte

double 8byte

布爾型

boolean4byte ??boolean[] ?1byte

字符型

char ??2byte

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

數(shù)組類型

類類型

接口

4.5.2默認的數(shù)據(jù)類型

小數(shù):double

正數(shù):int

4.6注釋

對程序進行顯示的說明,給開發(fā)者看的僧诚。

1.單行注釋//可以嵌套

2.多行注釋/* */不能嵌套

3.文檔注釋/** ?*/不能嵌套javadoc

4.6操作符

算術運算符

+

-

*

/ ?????0正數(shù)報錯 ?小數(shù)無窮大

%結果的符號取決于第一個操作數(shù)

++

--

byte short char在運算的自動提升為int類型

賦值運算符

=

+=

-=

*=

/=

%=

自動的進行強制類型轉換

byte a = 1;

a+=1; ?a = (byte)( a + 1 )

a = a+1;報錯

比較運算符

==

>

<

!=

<=

>=

結果一定是布爾類型true ?false

邏輯運算符

&

|

!

^

&&當?shù)谝粋€表達式為false時候短路第二個表達式

||當?shù)谝粋€表達式為true時候短路第二個表達式

位運算符

&

|

~

^

全部采用數(shù)值的二進制補碼方式進行運算遮婶。

原碼:

反碼:

補碼:

正數(shù)的原碼即為補碼

負數(shù)的補碼=反碼+ 1

移位運算符

算術移位

>>

<<

最高位為符號位,當右移的時候最高位補全符號位湖笨。

左移的時候右邊補0

邏輯移位

>>>最高位補0

4.7語句

每一條java語言后面需要加;

int a , b ;

順序語句

判斷語句

if(){

}

if(){

}else{

}

if(){

}else if(){

}...

當if或else控制的只有一條語句的時候{}可以省略旗扑。

選擇語句

switch(){

case 1:語句

break;

case 2:語句

break;

default:語句;

}

switch中可以傳遞的參數(shù)只能是byte short ?int char枚舉(enum)

原理:

先執(zhí)行case再執(zhí)行default與順序無關

使用細節(jié):

break是否存在

循環(huán)語句

while(){

}

do{

}while();

for(;;){

}

當循環(huán)的時候如果次數(shù)清楚,使用for慈省,如果不明確使用while或do{}while();

其他控制語句

break:停止循環(huán)和選擇

continue:繼續(xù)下一次循環(huán)

都可以結合標簽使用臀防。

outer: for(;;){

break outer;

}

4.8代碼塊

使用{}包含起來的代碼稱之為代碼塊

1.隔離變量的作用域

2.將功能相同的語句進行封裝

代碼塊的分類:

局部代碼塊:在函數(shù)中

成員代碼塊:在類的描述中

構造代碼塊:主要初始化對象的屬性

靜態(tài)代碼塊:主要初始化靜態(tài)成員

4.9函數(shù)

封裝具有獨立功能的代碼塊。

函數(shù)定義的格式:

修飾符返回值類型函數(shù)名(參數(shù)列表)異常的聲明{ ?//方法簽名

//具備的功能

return返回值;

}

函數(shù)的調(diào)用:

[類名|對象名].函數(shù)名(實參);

函數(shù)的重載:

1.函數(shù)名相同

2.參數(shù)列表不同

順序不同

類型不同

個數(shù)不同

3.與方法簽名的其他部位沒有任何的關系

4.10數(shù)組

數(shù)組是用來存儲多個相同數(shù)據(jù)類型的變量的容器。

一維數(shù)組:

數(shù)組定義:

int [] ?a ?= new int[4];

數(shù)組初始化:

默認初始化:

new int[4] ??0 0 0 0

靜態(tài)初始化:

new int[]{23,45,67};

{45,576,78}

動態(tài)初始化:

for(;;){

a[i] = i+1;

}

數(shù)組操作常見錯誤:

1.數(shù)組的角標越界異常

2. null指針異常

3.數(shù)組一旦聲明好不可變

4.數(shù)組的是引用類型變量清钥,如果打印數(shù)組名琼锋,輸出類型@哈希值的十六進制形式

5. []可以放在變量的前或后

數(shù)組操作:

1.遍歷

for(; i < a.length ;){

}

2.求最值

遍歷和比較

3.查找

值查找

索引查找

4.排序

遍歷、比較祟昭、交換

5.反序

兩個指針、判斷怖侦、交換

6.去除重復值

二維數(shù)組:(存儲一維數(shù)組的一維數(shù)組)

定義:

int [][] a = new int[4][];必須指定一維數(shù)組的長度

a[0] = null

初始化:

a = { {},{} };

for(;;){

for(;;){

}

}

重點練習以下打印幾何圖形篡悟。

5. OOP面向對象編程

5.1類和對象的關系

is a繼承關系

has a組合或聚合關系

5.2類的描述

class類名{

//屬性(變量)

//方法(函數(shù))

//構造函數(shù)(函數(shù))

}

5.3對象的創(chuàng)建

new關鍵字,在堆中開辟空間匾寝,存儲對象的內(nèi)容搬葬。

對象的成員訪問:

對象.屬性名;

對象.函數(shù)名(實參);

5.4構造函數(shù)

構造函數(shù)是特殊的函數(shù)。

1.函數(shù)名和類名一致

2.調(diào)用的時候使用new關鍵字

3.沒有返回值類型也不能用void

4.構造函數(shù)主要用來初始化對象的屬性

5.構造函數(shù)可以被重載

6.構造函數(shù)可以使用this和super進行相互調(diào)用

this訪問本類中的其他構造函數(shù)

super訪問父類的構造函數(shù)

7.如果描述一個類沒有聲明構造函數(shù)艳悔,那么編譯器默認添加一個無參數(shù)的構造函數(shù)

但是如果開發(fā)者自己顯示的定義了構造函數(shù)急凰,那么編譯器不會再創(chuàng)建無參數(shù)的構造函數(shù)。

8.子類的構造函數(shù)中默認在第一行會調(diào)用父類的無參數(shù)構造函數(shù)猜年,可以顯示的調(diào)用其他構造函數(shù)抡锈。

9.構造函數(shù)中調(diào)用構造函數(shù)的語句只能在第一行位置,所以只能調(diào)用一次乔外。

5.5 this關鍵字

代表具體的一個對象床三,誰調(diào)用就代表是哪個對象。

1.封裝的時候如果在函數(shù)中形參和成員屬性命名沖突了杨幼,可以使用this加以區(qū)分撇簿。

2.可以調(diào)用本類中的其他構造函數(shù)

3.一定不能在靜態(tài)上下文中使用this和super關鍵字

4.類中成員函數(shù)如果訪問成員屬性默認省略了this關鍵字

5.6 static關鍵字

static修飾的內(nèi)容在類裝載的時候就被初始化。主要存儲在共享區(qū)差购。

static修飾類:該類只能是成員內(nèi)部類四瘫,如果一個成員內(nèi)部類中包含靜態(tài)屬性,那么該內(nèi)部類必須聲明為靜態(tài)的

static修飾屬性:多個對象之間該屬性共享

static修飾方法:對象共享

static修飾代碼塊:初始化靜態(tài)屬性

static修飾的內(nèi)容使用類名可以直接訪問欲逃,但是也可以通過對象來訪問找蜜。

5.7對象的初始化(構造代碼塊)

1.屬性的聲明

2.屬性的默認初始化 ?正數(shù)0小數(shù)0.0布爾false字符'\u0000'引用null

3.顯示初始化

4.構造代碼塊初始化

5.構造函數(shù)初始化

注意:構造代碼塊初始化和顯示初始化的語句默認會按照出現(xiàn)的順序加載到構造函數(shù)中去,

在構造函數(shù)本身代碼之前暖夭。

5.8封裝

為了提高代碼的安全性锹杈,描述類的屬性和方法的時候需要對屬性和有些方法進行封裝。

封裝的實現(xiàn):

封裝屬性:

1.私有化所有的成員屬性

2.提供publie修飾的get和set方法

在設置方法中可以過濾無效數(shù)據(jù)迈着。

封裝方法:

1.將函數(shù)聲明為private竭望,此時該方法只能在該類中被使用。

5.9繼承

主要用于解決類和類之間的數(shù)據(jù)重復裕菠,進而提高代碼的復用性咬清。

繼承的實現(xiàn):

class A extends B{

}

類A繼承類B

繼承的特點:

1.私有的成員子類無法繼承

2.構造函數(shù)無法繼承

3.靜態(tài)的成員也無法繼承

4.繼承只能是單繼承

5.10子類對象的初始化過程(super)

子類對象的初始化會先創(chuàng)建父類對象加以屬性的初始化。

子類的構造函數(shù)中默認第一條語句super()調(diào)用父類的無參數(shù)構造函數(shù)。

注意:描述一個類的時候旧烧,一定要顯示的定義無參數(shù)構造函數(shù)影钉。

5.11函數(shù)的重寫

前提:必須有繼承

子類可以有和父類完全相同的函數(shù)。

函數(shù)重寫的特點:

1.函數(shù)名和參數(shù)列表必須相同

2.子類的修飾符必須大于等于父類的修飾符

3.子類的返回值類型必須小于等于父類的返回值類型

4.子類的異常聲明類型必須小于等于父類的異常聲明類型

5.12 final關鍵字

final修飾類掘剪、屬性平委、方法、形參

類:該類不能被繼承

屬性:是常量

方法:不能被重寫

形參:函數(shù)中不能被修改夺谁,可以打印或使用

5.13抽象類

當一個類在描述的時候如果不清楚函數(shù)的具體實現(xiàn)廉赔,那么該函數(shù)可以被聲明為抽象的,而該類一定要

為抽象類匾鸥。

abstract class{

//屬性

//構造函數(shù)

//函數(shù)

public abstract void print();

}

抽象類中不一定有抽象方法

但是包含抽象方法的類一定是抽象類蜡塌。

特點:

1.使用abstract進行描述

2.不能被創(chuàng)建對象(實例化)

3.強制子類必須實現(xiàn)父類沒有具體實現(xiàn)的函數(shù)

4.抽象類不能和final關鍵字一同修飾類

5.14接口

主要使用接口對類進行功能的擴展。

接口的定義:

interface A{

//靜態(tài)常量

public static final

//公有的抽象方法

public abstract

}

接口的特點:

1.使用interface創(chuàng)建接口

2.不能被創(chuàng)建對象

3.需要子類進行實現(xiàn)implements

4.接口中可以相互多繼承

5.實現(xiàn)類可以多實現(xiàn)接口

6.接口中定義的常量一定要初始化

7.接口中不能顯示的定義靜態(tài)代碼塊

5.15多態(tài)

前提:繼承勿负、重寫

表現(xiàn)形式:

父類的引用指向子類的對象

多態(tài)下訪問對象的成員:

如果子類重寫了父類的非靜態(tài)函數(shù)馏艾,那么調(diào)用該函數(shù)的時候一定調(diào)用子類的,其他訪問的

都是父類的奴愉。

多態(tài)的應用:

1.形參

2.返回值類型

5.16內(nèi)部類

將聲明在一個類中的類稱之為內(nèi)部類琅摩。

內(nèi)部類的分類:

成員內(nèi)部類:

靜態(tài)內(nèi)部類:當內(nèi)部類中包含了靜態(tài)成員

私有內(nèi)部類:當想要封裝外部類的時候

局部內(nèi)部類:

定義在函數(shù)中的類。

局部內(nèi)部類中只能訪問函數(shù)中fianl的屬性躁劣。

內(nèi)部類可以直接訪問外部類的所有的成員迫吐。

外部類如果要訪問內(nèi)部類的成員,需要創(chuàng)建內(nèi)部類的對象账忘。

外部類.內(nèi)部類a = new外部類().new內(nèi)部類(); ?//創(chuàng)建一個非靜態(tài)的內(nèi)部類對象

外部類.內(nèi)部類a = new外部類.內(nèi)部類(); ???????//創(chuàng)建一個靜態(tài)內(nèi)部類對象

匿名內(nèi)部類:是一種特殊的成員內(nèi)部類的簡寫形式志膀。

abstract class A{

int x = 21;

abstract void add();

}

class B{

class C extends A{

public void add(){

}

}

public void print(){

new C().add();

}

}

簡寫形式:

abstract class A{

int x = 21;

abstract void add();

}

class B{

public void print(){

new A(){

public void add(){

}

}.add();

}

}

5.17異常

程序中的不正常情況統(tǒng)稱為異常,SUN將程序的各種不正常狀態(tài)描述為不同的類鳖擒。

異常的體系:

---| Throwable實現(xiàn)類

toString() ?getMessage() ?printStackTrace()

-----| Error

-----| Exception

--------| RuntimeException

該異常在運行時出現(xiàn)后溉浙,開發(fā)者可以不用處理,編譯器直接通過蒋荚。

--------|受檢異常

該異常是受檢異常戳稽,如果程序發(fā)生了該異常,必須處理期升,否則編譯報錯惊奇。

異常的處理:

1.自行處理

try{ ?//可能發(fā)生異常的代碼}catch(異常類型 變量) { //異常的處理方式}

特點:

1. try catch語句塊不能相互訪問,如果要訪問播赁,需要將變量寫在代碼塊的外面

2. catch語句塊可以是多條

3.多態(tài)catch語句的時候需要由小到大處理異常颂郎,否則報錯。

2.拋出處理

函數(shù)內(nèi)部拋出給函數(shù)外部用throw異常的對象;

函數(shù)上使用throws將異常聲明給調(diào)用者容为,由調(diào)用者處理異常乓序,如果沒有人處理寺酪,

那么最終拋出給JVM,JVM直接打印異常棧信息替劈。

3. throw和throws的區(qū)別

使用位置不同:函數(shù)中函數(shù)外

后面接受的類型不同:異常對象異常類型

后面接受的內(nèi)容個數(shù)不同:一個對象多個類型

throw同一條件下后面不能出現(xiàn)其他語句寄雀。

finally:主要用于釋放資源

1. try{} catch(){}catch(){}。陨献。盒犹。

2. try{} catch(){}finally{ //釋放資源的代碼

if( a != null ){

try{

a.close();

}catch(){

}

}

}

3. try{}finally{}

finally代碼塊中的語句除了虛擬機退出意外其他任何情況都會執(zhí)行。

異常的自定義

1.繼承異常父類(受檢異常)

2.編寫無參和帶參數(shù)的構造函數(shù)

受檢異常(非運行時異常)和非受檢異常(運行時異常):

受檢異常必須處理

非受檢異痴R担可以通過開發(fā)者的編程習慣解決掉阿趁,所以不用處理。

要掌握常見的受檢和非受檢異常坛猪。

如果一個函數(shù)中聲明了一個異常,那么一般情況下該異常一定是受檢異常皂股。

異常類型的轉換:

將受檢異常轉換為非受檢異常

new RuntimeException(受檢異常)

將非受檢異常轉換為受檢異常

new Exception(非受檢異常)

5.18包和導包

包:package包名;域名反寫

導包:import包名.類名|*;

* :不會導入子包中的類墅茉。

編譯:javac -d class的目錄(.) java源文件

運行:java包名.類名

使用細節(jié):

1. package必須是描述類的第一條語句,且是有一條

2. import可以出現(xiàn)多條呜呐,但是盡量不要使用*

5.19訪問控制符

public ???protected ??default ??private

本類true ????true ????????true ????true

同一包類true ????true ????????true

子類true ????true

不同包類true

注意:protected不能修飾類就斤。

5.20 JDK常見的開發(fā)工具

javac編譯源程序

java運行字節(jié)碼文件

javap反編譯class文件

javadoc生成軟件說明書( @author ?@version ?@param ?@return ?@exception )

jar打包class文件

壓縮:

jar -cvf jar文件名 需要打包進來的文件或目錄

查看:

jar -tvf jar文件名[ >重定向文件名]

解壓:

jar -xvf jar文件名 ?解壓在當前目錄

注意:可運行jar的制作。Main-Class: 主類

第二階段Java基礎復習

6.多線程

6.1線程的概念

程序:下載回來的靜態(tài)的文件數(shù)據(jù)集合蘑辑。

進程:運行著的程序洋机。

線程:程序運行的多條路徑。

6.2線程的模型

CPU ?????Thread

代碼run()

數(shù)據(jù)run()使用的數(shù)據(jù)

6.3線程的實現(xiàn)

方式一:繼承Thread類洋魂,并重寫run(),默認是空實現(xiàn)

class MyThread extends Thread{

public void run(){

//線程的代碼

}

}

方式二:實現(xiàn)Runnable接口绷旗,并實現(xiàn)run()

class MyThread implements Runnable{

public void run(){

//線程的代碼

}

}

區(qū)別:

1.如果使用繼承方式,該類無法繼承其他的類

2.如果使用繼承方式副砍,體現(xiàn)不出面向對象的編程思想

3.如果使用接口實現(xiàn)衔肢,可以多實現(xiàn)其他的接口的同時還可以繼承其他的類

注意:

1.線程的啟動

start()內(nèi)部調(diào)用的是重寫的run(){}

2.如果直接調(diào)用run方法,不會以線程的方式運行

3.一個線程的只能啟動一次

IllegalThreadStateException無效線程狀態(tài)異常

6.4線程的生命周期

new ????start()搶到CPU ????????????run()

新建狀態(tài)---------》可運行狀態(tài)-----------》運行態(tài)-----------》終止

||

休眠時間到|| ?CPU被搶走/sleep()

|------阻塞狀態(tài)--------|

6.5線程的常用方法(Thread)

getName()

getPriority() ??1~10 ??5

currentThread()

getId()

sleep(毫秒值)

join()

Object

wait()

notify()

6.6線程的安全性問題

線程安全問題:當多個線程并發(fā)訪問同一資源的時候豁翎,會導致同一資源的數(shù)據(jù)紊亂角骤,稱之為線程安全問題。

解決方案:線程同步

同步實現(xiàn):synchronized

給調(diào)用的同一資源的代碼加鎖:

1.同步代碼塊

synchronized(鎖對象){ ??// java中任意對象都可以最為鎖 ?一般是this

//需要同步的代碼

}

2.同步非靜態(tài)函數(shù)

public synchronized void add(){ ?//默認的鎖是this關鍵字

}

3.同步和靜態(tài)函數(shù)

public synchronized static void add(){ ??//默認的鎖是所屬類的Class對象Class類名.class

}

6.7死鎖

前提:

1.多線程環(huán)境下

2.每個線程完成任務需要獲取多個資源

表現(xiàn):

線程1拿到可以執(zhí)行任務的一個資源心剥,想獲取第二個資源邦尊,但是第二個資源被線程二獲取了,

而且線程二想獲取完成任務的第一個資源优烧,但是第一個資源被線程一加鎖了蝉揍,所以導致死鎖。

實現(xiàn):

......

避免死鎖的算法:

銀行家算法

6.8線程的終止

1.正常死亡

run()被執(zhí)行完畢

2.通過標記變量死亡

run(){

while( tag ){

}

}

tag = false

3.設置為后臺線程死亡

setDaemon(boolean on)

當系統(tǒng)中所有的線程為后臺線程的時候匙隔,JVM退出疑苫。

6.9線程的通信

1.鎖

synchronized(this)

2. wait()和notify()

3.管道流

PipedInputStream

PipedOutputStream

注意:管道流之間數(shù)據(jù)通信的時候一定要進行管道的連接connect()

7. API( Applaction Program Interface)

6.1 Object

所有類的終極父類熏版,該類中定義的方法,其他類中都有捍掺。該類可以直接創(chuàng)建對象撼短。

常見方法:

String toString()返回一個描述對象的字符串信息

boolean equals()比較兩個對象的內(nèi)存地址是否相等,默認使用==實現(xiàn)

int hashCode()如果兩個對象equals()返回true挺勿,那么該方法的返回值也要一致

Class getClass()返回當前對象的Class對象

注意:

在開發(fā)者自定義類的時候曲横,必須要記得重寫這三個函數(shù)。

6.2 String

1.創(chuàng)建對象

String str = "abc";對象在常量池中

String str = new String("abc")對象在堆中

==比較的是字符串對象的內(nèi)存地址是否相等

equals比較是的兩個對象的內(nèi)容是否相等

2.判斷

equals()

contains()

isEmpty()

endsWith()

startWith()

3.查看

charAt()

indexOf()

lastIndexOf()

4.截取和替換

trim()

substring( start,end )不包含end索引

split()

replace()

replaceAll()

matches()

5.轉換

toUpperCase()

toLowerCase()

toCharArray()

getBytes("") ???????????????//編碼

new String( byte[] bs,"" ) ?//解碼

6.3字符串緩沖區(qū)對象

因為String不可變(數(shù)組不可變),所以提出了字符緩沖區(qū)對象不瓶。

-----| StringBuffer線程安全的

append()

toString()

String substring(int start)

insert(int offset, float f)

delete(int start, int end)

-----| StringBuilder推薦使用

6.4 System

屬性:

InputStream ?in

PintStream ??out

方法:

getProperties()獲取系統(tǒng)素有屬性os.name=Window XP ?file.encoding=GBK

currentTimeMillis()獲取當前系統(tǒng)的時間值

exit(int status) ????0為正常退出

getenv(String name)獲取系統(tǒng)環(huán)境變量

console()獲取控制臺對象

setIn(InputStream in)重定向標準輸入流

setOut(OutStream out)重定向標準輸出流

6.5 Runtime

描述的是運行環(huán)境對象禾嫉。

static Runtime getRuntime()通過該方法獲取該類的對象

exit()

gc()

Process exec()執(zhí)行一個命令行命令程序,可以指定參數(shù)

6.6 Date(java.util.*)

描述的是系統(tǒng)的當前的日期蚊丐,包含年熙参、月、日麦备、時孽椰、分和秒

getYear()

.......都過期了

Calendar.set(year + 1900, month, date)

格式化日期類:(java.text.*)

SimpleDateFormat

"yyyy-MM-dd a E hh:mm:ss"

String str = format( Date date );

6.7 Calendar

static Calendar getInstance()只能通過該靜態(tài)方法獲取

Calendar.get( Calendar.YEAR )獲取年份

6.8 Math

ceil()向上取整

floor()向下取整

round()四舍五入

random() ??0~1

6.9 Random

nextInt(10)

nextLong(10)

nextDouble(23.7)

8.集合(Collection)

7.1集合的概念

1.主要用于存儲對象

2.數(shù)組VS集合

2.1數(shù)組是不可變

2.2數(shù)組操作比較麻煩

7.2集合體系結構

-----| Iterable接口

Iterator iterator()

-------| Collection接口

add() ?remove() ??clear()

---------| List有序,可重復

get() ?remove() ??set() ?listIterator()

------------| ArrayList數(shù)組實現(xiàn)凛篙,默認10黍匾,增長0.5操作慢,查詢快

------------| Vector線程安全的ArrayList

------------| LinkedList鏈表實現(xiàn)呛梆,操作快锐涯,查詢慢, 數(shù)據(jù)結構: 棧填物、隊列

---------| Set無序纹腌,不可重復

------------| HashSet哈希表,底層使用HashMap, hashCode()且eauqls()則兩個對象重復

------------| TreeSet紅黑樹融痛,底層采用TreeMap,如果比較的結果為0說明對象重復

Comparable ?conpareTo( Object o )

Comparator ?compare( Object o1, Object o2 ) ?new TreeSet(比較器對象);

-----| Iterator接口

hasNext() ?next() ?remove()

-------| ListIterator接口

add() ?hasPrevious() ?previou() ?set()

-----| Comparable接口 ?實現(xiàn)自然排序

compareTo( Obejct o ) ????String Integer

-----| Comparator

compare( Object o1, Object o2 )

equals()

-----| Map主要存儲關聯(lián)對象Key --- Value

--------| HashMap哈希表壶笼,對Key對象進行hash存儲,Key對象的hashCode()且eauqls()則兩個對象重復

--------| TreeMap紅黑樹雁刷,如果Key比較的結果為0說明對象重復

如果比較出來Key對象重復了覆劈,那么會使用新值對象進行替換原來的舊值對象

--------| Properties代表一個配置文件對象,可以將配置文件映射為內(nèi)存的中Map對象

load()將某一個配置文件裝載為Map對象

get(key)獲取某一個key關聯(lián)的值對象

getProperty()

setProperty( key , value )內(nèi)存

store( Writer )

7.3集合的遍歷

1.直接打印集合對象

System.out.println(list);

2. for循環(huán)(只能遍歷List)

for( int i = 0; i < list.size() ; i++ ){

list.get(i)

}

3.增強for循環(huán)

for( T t ?: list ){

System.out.println(t);

}

4.迭代器

4.1 while

Iterator it = list.iterator();

while( it.hasNext() ){

it.next()

}

4.2 for

for( Iterator it = list.iterator(); it.hasNExt() ; ){

it.next()

}

Iterator it = list.iterator();

for( ; it.hasNExt() ; ){

it.next()

}

5. Map的遍歷

5.1直接打印Map對象

5.2獲取key的set

Set keys = map.keySet();

for( Iterator it = list.iterator(); it.hasNExt() ; ){

it.next()

}

5.3獲取value對象

Collecion vs = map.values();

for( Iterator it = list.iterator(); it.hasNExt() ; ){

it.next()

}

5.4 EntrySet

Set ?set = map.entrySet();

for( Iterator it = list.iterator(); it.hasNExt() ; ){

Map.Entry entry = it.next();

T key = entry.getKey();

T value = entry.getValue();

}

6.使用泛型的迭代器進行遍歷

ArrayList list = new ?ArrayList();

Iterator it = ?list.iterator();

for( ; it.hasNext(); ){

String v = it.next();

}

for( String temp ?: ?list ){

}

7.4泛型(Generic)

泛型的概念:泛型即類型的參數(shù)化沛励。

1.泛型的應用

集合中使用泛型可以提高數(shù)據(jù)的安全性责语。

ArrayList list = new ArrayList ();推薦使用

ArrayList list = new ArrayList ();

ArrayList list = new ArrayList ();

注意:

泛型不能自動類型轉換

2.泛型的自定義

2.1非靜態(tài)方法

public void ?print( T t ){

}

2.2類泛型

如果一個類中屬性和方法幾乎都用到泛型了,那么可以將泛型的自定義聲明到類上目派。

class Person{

public void eat( T t){

}

}

注意:

1.如果創(chuàng)建給類的時候沒有指定具體的數(shù)據(jù)類型坤候,默認是Object

2.具體的類型只能是對象類型,不能是基本數(shù)據(jù)類型

2.3靜態(tài)方法的泛型聲明

靜態(tài)方法不能使用類上的泛型聲明企蹭,所以要自己單獨的聲明

public static void ?print( T t ){

}

3.泛型的繼承

3.1 class A extends B

3.2 class A extends B

注意:

1.接口可以有泛型

interface A{}

4.泛型的約束

Collection任意的對象類型

Collection必須是Number的子類或自身

Collection必須是Integer的父類或自身

注意:

一個類是自己本身的子類或父類白筹。

7.5工具類

1.數(shù)組的工具類(Arrays)

sort()自然排序

binarySearch()前提是先排序

toString()遍歷數(shù)組[,]

asList()

2.集合的工具類(Collections)

sort()自然排序

binarySearch()前提是先排序

reverse()

max()

synchronizedCollection(Collection c)將線程不安全的集合對象轉換為線程安全的

所有的集合類都有一個方法

toArray()轉換為數(shù)組

注意:

1.根據(jù)源代碼學習二分查找的實現(xiàn)原理

2.在項目的實際開發(fā)中要學會定義工具類

所有的屬性和方法都是靜態(tài)的智末。該類一定是一個final的。

9. IO流

9.1 IO的概念

主要做設備和設備之間的數(shù)據(jù)傳輸徒河。

9.2 IO的分類

單位:

字節(jié)流(主要操作二進制數(shù)據(jù))

字符流(主要操作字符文本數(shù)據(jù))

方向:

輸入流

輸出流

以代碼為基準:輸入流系馆、輸出流

9.3 IO的體系結構

字符流(使用了緩沖區(qū))

-----| Writer抽象類 ??每次操作一個字符

write(int) ?write( char[] ) ?flush() ?close()

--------| FileWriter

--------| OutputStreamWriter

--------| BufferedWriter

newLine()

-----| Reader抽象類 ??每次操作一個字符

read() ?read(char[]) ?close()

--------| FileReader

--------| InputStreamReader

--------| BufferedReader

readLine()

----------| LineNumberReader

getLineNumber()

setLineNumber()

mark(34242)

reset()

skip()

注意:

文本文件的拷貝練習。

字節(jié)流不是用緩沖區(qū)

-----| OutputStream抽象類 ?每次操作一個字節(jié)

write(byte) ?write(byte[]) close()

--------| FileOutputStream

--------| ObjectOutputStream

--------| BufferOutputStream ?(有緩沖區(qū)了)

--------| PipedOutputStream

-----| InputStream抽象類 ?每次操作一個字節(jié)

--------| FileInputStream

--------| BufferedInputStream

--------| ObjectInputStream

--------| SequenceInputStream

--------| PipedInputStream

注意:

拷貝一個圖片文件顽照。

9.4字符流

1.操作單位為字符

2.使用了內(nèi)存中的緩沖區(qū)由蘑,所以需要刷新

3.操作文本數(shù)據(jù),不能操作二進制數(shù)據(jù)

4.內(nèi)部做了碼表的轉換代兵,所以要注意亂碼

編碼和解碼的碼表必須一致尼酿。

getBytes()

new String()

9.5字節(jié)流

1.操作單位是字節(jié)

2.沒有使用緩沖區(qū),不需要刷新

3.主要操作二進制數(shù)據(jù)植影,無需編碼

9.6轉換流

字節(jié)流到字符流的橋梁裳擎。

InputStreamReader將字節(jié)輸入流轉換為字符輸入流

OutputStreamWriter將字節(jié)輸出流轉換為字符輸出流

new BufferedReader( new InputStreamReader( (System.in) ) );

9.7標準輸入和輸出流

InputStream System.in

PrintStream System.out

接受控制臺輸入的數(shù)據(jù):

BufferedReader read = ?new BufferedReader( new InputStreamReader( (System.in) ) );

---》23

String age = read.readLine();

Person age int

int age = Integer.parseInt(age);

---》34.8

String price = read.readLine();

double price = Double.parseDouble(price);

注意:

學會使用標準流重定向實現(xiàn)日志文件。

9.8順序流

SequenceInputStream

new SequenceInputStream( InputStream in1 , InputStream in2 )

new SequenceInputStream( Enumeration< ? extends ?InputStream > )

new Enumeration(){

public boolean hasMoreElements(){

return it.hasNext()

}

public Object nextElement(){

return it.next()

}

}

注意:

文件的切割和合并思币。

9.9 File類

該類描述的是一個文件或文件夾句惯。

0.屬性

separator ????\ ????/

pathSeparator ;

1.構造函數(shù):

new File(String name)

new File( File dir , String name)

2.常見的方法

boolean createNewFile()

delete()

deleteOnExit()

createTempFile(String prefix, String suffix) ??.tmp存儲在系統(tǒng)的默認的臨時文件夾中

exists()目錄或是否存在

isFile()

isDirectory()

String[] list()返回一個文件夾下面的所有的目錄和文件

File[] ?listFiles()返回一個文件夾下面的所有的目錄和文件對象

File [] listFiles(FileFilter filter)

-----| FileFilter接口

public boolean accept(File pathname){

return pathname.getName().endsWith(".java");

}

mkdir()創(chuàng)建一級目錄

mkdirs()常見多級目錄

renameTo()重命名 ??如果指定的路徑不相同實現(xiàn)的是剪切

注意:

1.實現(xiàn)遍歷一個多級目錄的文件夾

2.刪除一個目錄

3.拷貝一個帶目錄的文件夾

3.遞歸

3.1遞歸的概念

函數(shù)自身調(diào)用自身。

3.2遞歸的實現(xiàn)

1.函數(shù)中自己調(diào)用自己

2.退出條件

3.3遞歸的練習

1.遞歸目錄的刪除

2.遞歸目錄的拷貝

public void print( int x ){

if( x > 3 ){

print(--x);

}

Systenm.out.println(x);

}

print( 5 );

4.帶File的流操作

new FileWriter( new File("a.txt") , true );

9.10序列化和反序列化流

序列化:對象------》 目標設備

反序列換:目標設備----》對象

ObjectInputStream

ObjectOutputStream

注意:

1.序列化的類對象一定要實現(xiàn)Serializable接口

2.為了避免整容后不認識該對象支救,在序列化的類定義的時候需要定義一個

public static final long serialVersionUID = 1L;

3.如果A實現(xiàn)了Serializable接口,B繼承了A拷淘,那B可以被序列化各墨。

9.11管道流

主要做的是線程之間的數(shù)據(jù)通信

PipedInputStream

PipedOutputStream

注意:

需要相互連接

9.12打印流

打印方便開發(fā)者格式化輸出日志信息或其他數(shù)據(jù)信息。

PrintStream

PrintWriter

println()

print()

printf()

%s字符串

%d正數(shù)

%f小數(shù)

%c字符

9.13其他流

RandomAccessFile

new RandomAccessFile(文件設備, "rw" );

writeUTF();

readUTF();

seek();

DataInputStream

DataOutputStream

......

10. IDE

10.1 IDE概念

10.2常見IDE

10.3 eclipse的使用

1.管理模式

1.1創(chuàng)建工作區(qū)

1.2創(chuàng)建java項目

1.3在項目的src目錄下創(chuàng)建java源文件

2.快捷鍵

Ctrl+1

Alt+/

Ctrl+Shift+O

Ctrl+/

Ctrl+Shift+/ ??Ctrl+Shift+\

Ctrl+Shift+F

Ctrl+D

Ctrl+單擊

3.代碼重構

抽取方法

抽取接口

4.關聯(lián)源代碼

選擇源代碼

5.代碼的調(diào)試

5.1進入調(diào)試視圖debug as

5.2單步启涯、進入

5.3調(diào)試后的清理

清除斷點

清楚變量

關閉JVM

切換編輯java視圖

6.項目的導入和導出

.....

11. JDK5.0新特性

11.1靜態(tài)導入

import static包名.類名.靜態(tài)屬性|靜態(tài)方法|*

11.2增強for循環(huán)

for(臨時變量:需要遍歷的容器){

}

注意:在循環(huán)中改變臨時變量的值贬堵,不會改變?nèi)萜鞯闹怠?/p>

11.3可變參數(shù)

...

public long gerSum( int... a ){

}

特點:

1.可變參數(shù)底層是可變數(shù)組

2.可以直接創(chuàng)建數(shù)組對象接受并按照數(shù)組操作來操作

3.可變參數(shù)只能在參數(shù)列表的最后一個位置

4.可變參數(shù)只能且只有一個

11.4枚舉

實現(xiàn):enum枚舉值

enum枚舉類名{

//所有的枚舉值 ?大寫形式

}

特點:

1.枚舉類是一個類

2.默認繼承java.lang.Enum

3.所有的枚舉值都是枚舉類的常量對象

public static final枚舉類 ?枚舉常量名

4.可以做作為switch的參數(shù)

5.內(nèi)部可以定義屬性、構造函數(shù)结洼、函數(shù)黎做、以及抽象函數(shù)。

12.正則表達式

12.1正則的概念

Regular Expresion正則表達式松忍,描述的是數(shù)據(jù)要滿足的規(guī)則蒸殿。

12.2正則的適用范圍

String

matches()

split()

replaceAll()

java.util.regex

Pattern描述的正則的編譯形式Pattern pattern = Pattern.compile("正則");

Matcher描述的是要匹配的文本Matcher matcher = pattern.matches(str);

find()查找符合規(guī)則的字符集,如果有返回true鸣峭,否則返回false

group()返回匹配的文本字符

12.3正則的語法

1. .匹配任意一個字符

a匹配一個a

abc

2.數(shù)量匹配

? ?0 1

+ ?1 ~ n ?n>=1

* ?0 ~ n

{4}

{4, }

{4,8}

"a{5}" ??aaaaa

3.簡寫形式

\d數(shù)字范圍0 ~ 9

\D非數(shù)字

\s空白字符

\S

\w單詞字符[a-zA-Z0-9]

\W

"^[^0]\\d{5,10}$"

4.規(guī)則范圍

[a-z] ?a ?7

[a-z[1-4]]并集

[a-z&&[a-b]]交集

[a-z&&[^a-b]] [c-z]

5.邊界

^

$

\b

6.練習

由5~10個字母組成的用戶名"[a-zA-Z]{5,10}"

身份證18位數(shù)字0 ???????????"^[^0]\\d{16}[0-9x]{1}"

email ???????????????????????"\\w+@\\w+(\\.\\w+)+"

密碼是6為大寫字母"[A-Z]{6}"

12.4正則的應用

1.基本的數(shù)據(jù)的校驗

2.特殊的字符正則應用

jiao.ning.bo ??"\\."

jiao ning ?bo ?" +"

jiao\ning\bo ??"\\\\"

aabbbbcccccf ??"(.)\\1" ?#

aabbbbcccccf ??"(.)\\1" $1

3.從頁面上搜集email

4.從頁面上搜集url連接

13. GUI圖形界面編程(了解)

GUI圖形界面編程:java中主要使用的是AWT(java.awt.*)或Swing(javax.swing.*)

GUI體系

----| Component

-------| Container

----------| Window

-------------| Frame

-------------| Dialog

----------| Panel

-------|普通的組件

----------| Button

----------| Label

對于Swing而言宏所,所有的容器對象和普通的組件對象前面都加一個"J"即可。

GUI的容器:

---| Window默認不顯示摊溶、JFrame是頂層的容器爬骤。

-----| JFrame默認的布局管理器是BorderLayout

-----| JDialog

---| JPanel默認必須添加在另外一個頂層容器中使用,不能單獨的使用莫换。默認布局管理器是FlowLayout

常見的方法如下:

add() :添加組件的方法

setLayout():修改布局管理器的方法

setVisiable():設置容器的可見性

setSize() ???:設置窗口大小

setLocation():設置窗口的位置

setBounds() ??:一次性設置大小和位置

GUI組件:

常見的組件:JButton JLabel ?JTextField ?JPasswordField ?JCheckBox ?JTextArea

GUI布局管理器:BorderLayout(5) ?FlowLayout(居中) ?GridLayout(行列) CardLayout(JPanel)

GUI事件監(jiān)聽器:

ActionListener一個處理動作事件的action方法

WindowListener處理窗口事件的

MourseListener鼠標監(jiān)聽器

KeyListener鍵盤監(jiān)聽器

因為實現(xiàn)接口需求全部實現(xiàn)所有的方法霞玄,但是在實際的項目開發(fā)中不需要將所有的實現(xiàn)骤铃,所以SUN提供了

默認的監(jiān)聽器的所有的方法的空實現(xiàn)的適配器。

GUI事件適配器:

WindowAdapter處理窗口事件的

MourseAdapter鼠標監(jiān)聽器

KeyAdapter鍵盤監(jiān)聽器

編寫GUI程序的一個模版寫法:

public class GUI{

// 1.聲明所有的組件對象

// 2. init()提供對象的初始化

// 3. setConponent()設置所有的組件對象

// 4. bindEvent()給需要的組件監(jiān)聽事件

public static void ?main(String [] args){

// 5.創(chuàng)建GUI對象坷剧,一次調(diào)用2/3/4方法

}

}

14.網(wǎng)絡編程

前面的所有知識惰爬,無論是文件的操作,還是線程的管道通信都是在本地PC上進行的听隐,但是在實際的項目

開發(fā)中需要實現(xiàn)網(wǎng)絡中的多臺PC之間的數(shù)據(jù)通信补鼻,所以SUN提供了java.net.*幫助開發(fā)人員進行網(wǎng)絡操作。

該網(wǎng)絡操作也被形象的稱之為Socket編程雅任。

網(wǎng)絡基礎知識:

IP ??????IPV4 ??IPV6 ??192.168.10.1 ??0~255 ?256 ?= 2(8) ?4字節(jié)

port主要是為了區(qū)分一個pc上的多個網(wǎng)絡應用程序

protocol主要約束的是數(shù)據(jù)的傳輸?shù)母袷絋CP/IP ?UDP ?TCP

網(wǎng)絡模型:

網(wǎng)絡的5層模型

通信的協(xié)議:

UDP: ?數(shù)據(jù)的接收端可以不在

TCP: ?數(shù)據(jù)的接收端必須在發(fā)送端發(fā)送數(shù)據(jù)之前存在

UDP通信:

1傲茄、InetAddress描述的是發(fā)送的數(shù)據(jù)的ip和port

有兩個子類:Inet4Address, Inet6Address

獲取對象: InetAddress getByName(String host)

2液走、客戶端

DatagramSocket主要用于接受可發(fā)送數(shù)據(jù)包

發(fā)送:send(DatagramPacket p)

DatagramPacket主要用于打包數(shù)據(jù)

DatagramPacket(byte[] buf, int length, InetAddress address, int port)

3、接收端

receive(DatagramPacket p)

TCP通信(重點):

1、InetAddress描述的是發(fā)送的數(shù)據(jù)的ip和port

2寺滚、Socket主要描述的是客戶端用于發(fā)送數(shù)據(jù)的節(jié)點對象

Socket(String host, int port)

getOutputStream()獲取輸出流進行數(shù)據(jù)的發(fā)送

3、ServerSocket

Socket accept()接受客戶端發(fā)送過來的數(shù)據(jù)Socket對象

4艇搀、客戶端和服務器端相互的發(fā)送和接收數(shù)據(jù)遣耍。全雙工的數(shù)據(jù)通信

多線程下的TCP通信:

將通信的數(shù)據(jù)代碼寫在Thread的run()或Runnable的run()

可以啟動多個線程來進行通信。

面試:

問殉摔?是不是多線程可以提高通信的效率州胳?

理論上:多線程是降低效率的。

15. HTML網(wǎng)頁結構設計

后期的主要學習的是JavaEE逸月,主要開發(fā)的是網(wǎng)站的管理系統(tǒng)栓撞,基于頁面的,所以必須要學習網(wǎng)頁的開發(fā)碗硬。

網(wǎng)頁:

1瓤湘、 后綴為.html或.htm的文件

2、 該文件內(nèi)容主要由HTML標記組成

HTML標記

HTML是一種超文本標記語言恩尾,主要用于開發(fā)頁面弛说,還頁面中的所有的標記都是預先定義好的,不能自己修改翰意。

文本標簽:

h1~h6

p == 2

ul

ol

li

font

pre

sub

sup

span語義標簽

div分區(qū)標簽

表格標簽:

table

caption

thead

tbody

tfoot

tr

td

th默認作為表格的表頭木人,文本加粗

屬性:

align

border

rowspan

clospan

cellspacing

多媒體標簽:

embed

bgsound

object

滾動標簽:

marquee

屬性:

scrollamount滾動的速度

scrolldelay滾動的延遲

direction滾動的方向

超鏈接標簽:

的錨鏈接

的超鏈接

注意一個屬性:

target: _self ??_blank ?_top ?_parent可以是一個子窗口的name屬性值

集合框架標簽(幀標簽):

實現(xiàn)的是畫中畫的效果

該標簽不能和body

rows屬性切割行

clos屬性切割列

一般使用相對單位的%數(shù)據(jù)來充當切割的數(shù)值。

name屬性:指定該子窗口的名稱

src屬性: 指定該窗口打開的頁面URL

表單標簽(重點):

表單標記的出現(xiàn)主要是為快速的從頁面上采集用的輸入信息冀偶。

表單:

屬性:

action該屬性指定將表單的數(shù)據(jù)提交個誰(動態(tài)頁面的路徑)虎囚? ?默認提交給自己。

method指定數(shù)據(jù)傳輸?shù)姆绞絞et ?post

get方式數(shù)據(jù)在瀏覽器的地址欄的信息的后面

www.baidu.com?keywords=java&name=jiao

1蔫磨、明碼 ??????不能傳遞密碼

2淘讥、長度受限 ??必須小于1K所以如果要實現(xiàn)文件的上傳只能post

post方式將表單的數(shù)據(jù)寫在HTTP協(xié)議的請求體中傳輸,對于數(shù)據(jù)的長度沒有限制堤如。

enctype是一種組合表單數(shù)據(jù)的格式蒲列。

application/x-www-form-urlencoded默認值,一般情況下使用窒朋。

multipart/form-data將不同的數(shù)據(jù)類型進行分類發(fā)送給服務器。

text/plain以純文本的形式進行發(fā)送

主要用于郵件的發(fā)送表單中蝗岖。

項目應用:

如果要實現(xiàn)文件上傳和下載侥猩,form表單的,method屬性必須是post且

enctype屬性必須是multipart/form-data抵赢。

表單項:用于搜集用戶數(shù)據(jù)的具體標記欺劳。

是空標簽

type:

text

password

button

submit

reset

file

hidden

checkbox

radio

name:

如果要傳遞數(shù)據(jù),那么表單項中的元素一定要有name屬性铅鲤,否則數(shù)據(jù)無法傳輸划提,

獲取到一定是null。

表單提交:

在表單的form標記中有一個事件屬性:onsubmit="return指定處理函數(shù)"

16. CSS網(wǎng)頁美化

在HTML中既有結構化的標簽又有樣式標簽(font邢享、b鹏往、i),后期HTML中摒棄了所有的樣式標簽骇塘,

一定要使用CSS樣式語言進行頁面的修飾伊履。這樣可以使得頁面結構和樣式進行分離,進而便于

網(wǎng)站的維護款违。

CSS語言:Cascading Style ?Sheet語言唐瀑。

CSS的頁面引入:

行內(nèi):元素的style屬性

內(nèi)部:

/*樣式*/

外部: ?link標簽屬于HTML

@import URL("xx.css");該關鍵字屬于CSS

選擇器:

h1{ ?}標記選擇器

#my{ ?} ID選擇器

.c1{ ?}類選擇器

h1,h2{ }并集選擇器

關系選擇器

p a{ ?}后代選擇器

p>a{ ?}直接后代選擇器

p a:first-child老大選擇器

p a:first-child+a老二選擇器

讀懂以下選擇器:

p>a:first-child+a+a{

color:#F00;

}

超鏈接的特殊偽類選擇器:

LoVeHAte

a:link{}鏈接在顯示的時候的樣式

a:visited{}鏈接在訪問過后的樣式

a:hover{}鏈接在鼠標移上去之后的樣式

a:active{}鏈接被激活的一瞬間的樣式

CSS屬性:

在實際的項目中如果要使用DOM動態(tài)操作帶-的CSS屬性,那么必須要進行命名的調(diào)整插爹。

some text

window.document.getElementByTagName("P").iterm(0).style.backgroundColor = "#00f";

text-decoration

CSS屬性值:

!important

BOXModel:

padding:是內(nèi)容到邊框之間的間距

margin:是邊框到外部空白區(qū)域的舉例

margin:10px;上下左右都為10px

margin:0px 10px;上下0px左右10px

margin:1px ?2px 3px 10px;上右下左

浮動:

1介褥、浮動的元素脫離文檔流,如果頁面文檔流中的元素遇到浮動的元素递惋,元素內(nèi)容的環(huán)繞。

2溢陪、浮動元素的雖脫離了文檔流萍虽,但是浮動的位置坐標取決于文檔流中的頁面位置。

作用:布局

練習:

1形真、使用浮動+div技術模擬框架集杉编。

2、使用浮動+ul技術實現(xiàn)動態(tài)鏈表菜單咆霜。

定位:

position:absolute fixed relative

absolute:絕對定位邓馒,脫離文檔流z-index:12;

使用left ?top ?bottom right來模擬x和y坐標

fixed: ??固定定位在頁面的一個位置,不會隨著頁面滾動條的滾動來滾動蛾坯。

relative:相對的是該元素在標準文檔流中沒有定位之前的位置光酣。

擴展:濾鏡

*,html{

filter:gray

}

17. JavaScript網(wǎng)頁行為

參見javascript上課文檔.doc

18.總結

30天基礎結束!端午節(jié)快樂!

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

擴展設計模式

1單例模式

惡漢式:

懶漢式:

1.將構造函數(shù)私有化

2.聲明一個該類的靜態(tài)變量

3.給該變量進行賦值

4.提供public static的返回靜態(tài)變量的方法

getInstance(){

if( == null ){

new對象();

}

}

2模版模式

1.創(chuàng)建模版代碼并形成一個獨立的函數(shù)

2.抽取模版函數(shù)中的可變部分形成一個抽象方法

3.將該類聲明為抽線該類

4.創(chuàng)建子類實現(xiàn)父類的抽象方法

5.將模版函數(shù)為final的

3.修飾模式

1.在修飾類中維護一個被修飾類的變量引用

2.在修飾類的構造函數(shù)中初始化1中的變量

3.在修飾類的方法中調(diào)用被修飾對象的方法,并寫修飾代碼

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

上就業(yè)班JAVA基礎知識歸類:

必須的

環(huán)境搭建

語法基礎【關鍵字脉课、操作符救军、語句控制财异、break、continue唱遭、return戳寸、數(shù)組 、函數(shù) 】

面向對象【類描述拷泽、創(chuàng)建對象(new)疫鹊、構造函數(shù)初始化、this司致、final拆吆、super、static】

高級OOP【封裝蚌吸、繼承(extends)锈拨、多態(tài) 、抽象類羹唠、接口(interface implements)】

異侈仁啵【處理異常、自定義異常佩微、throws缝彬、throw】

API【String】

集合【ArrayList、LinkedList哺眯、TreeSet谷浅、TreeMap、Map.Entry奶卓、Iterator】

IO【字節(jié)流和字符流一疯、文件的拷貝】

HTML【基本的常用標簽、會寫表單】

CSS【基本選擇器】

JavaScript【 變量夺姑、函數(shù)墩邀、事件、基本的DOM操作 】

可選的

環(huán)境搭建【classpath盏浙、java_home】

語法基礎【保留字(goto)眉睹、位運算、死循環(huán)废膘、標記使用竹海、數(shù)組的常見操作、函數(shù)的重載 】

面向對象【代碼塊丐黄、子類的初始化過程斋配、內(nèi)部類、包、修飾符】

高級OOP【類的加載许起、多態(tài)的原理】

異呈迹【異常的體系、受檢和非受檢異吃跋福】

線程【線程定義惦积、線程聲明周期、線程安全猛频、synchronized狮崩、線程的通信 】

API【StringBuffer,StringBudiler】

集合【HashSet鹿寻、HashMap睦柴、Vector】

IO【 順序流、序列換流毡熏、打印流 坦敌、轉換流(可以指定碼表)】

JDK5.0【 可變參數(shù)、增強for循環(huán) 痢法、泛型使用 】

HTML【 框架頁狱窘、iframe】

CSS【偽類選擇器、關系選擇器财搁、浮動蘸炸、定位、盒子模型】

JavaScript【 函數(shù)覆蓋尖奔、特殊值轉換為boolean搭儒、自定義對象 】

設計模式【可以查看文檔讀懂】

沒必要

環(huán)境搭建【臨時環(huán)境變量的設置】

語法基礎【進制的表示形式、以及之間的轉換原理】

面向對象【構造函數(shù)的調(diào)用】

高級OOP【Class ?getClass()/class】

異程嶙拢【異常的類型轉換和日志的編寫】

線程【生產(chǎn)者和消費者】

API【Object淹禾、System、Runtime茴扁、Math铃岔、Random】

集合【Vector、Properties丹弱、LinkedHashMap】

GUI【】

Socket編程【】

IO【 行流、其他的數(shù)據(jù)流 】

JDK5.0【 反射铲咨、注解躲胳、泛型的復雜應用、動態(tài)代理 】

HTML【 多媒體纤勒、滾動標簽 】

CSS【濾鏡】

JavaScript【 異常的處理坯苹、繼承、prototype】

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摇天,一起剝皮案震驚了整個濱河市粹湃,隨后出現(xiàn)的幾起案子恐仑,更是在濱河造成了極大的恐慌,老刑警劉巖为鳄,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裳仆,死亡現(xiàn)場離奇詭異,居然都是意外死亡孤钦,警方通過查閱死者的電腦和手機歧斟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偏形,“玉大人静袖,你說我怎么就攤上這事】∨ぃ” “怎么了队橙?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萨惑。 經(jīng)常有香客問我捐康,道長,這世上最難降的妖魔是什么咒钟? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任吹由,我火速辦了婚禮,結果婚禮上朱嘴,老公的妹妹穿的比我還像新娘倾鲫。我一直安慰自己,他們只是感情好萍嬉,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布乌昔。 她就那樣靜靜地躺著,像睡著了一般壤追。 火紅的嫁衣襯著肌膚如雪磕道。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天行冰,我揣著相機與錄音溺蕉,去河邊找鬼。 笑死悼做,一個胖子當著我的面吹牛疯特,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肛走,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼漓雅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起邻吞,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤组题,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抱冷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崔列,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年徘层,在試婚紗的時候發(fā)現(xiàn)自己被綠了峻呕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡趣效,死狀恐怖瘦癌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跷敬,我是刑警寧澤讯私,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站西傀,受9級特大地震影響斤寇,放射性物質發(fā)生泄漏。R本人自食惡果不足惜拥褂,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一娘锁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饺鹃,春花似錦莫秆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茄螃,卻和暖如春缝驳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背归苍。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工用狱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拼弃。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓夏伊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肴敛。 傳聞我的和親對象是個殘疾皇子署海,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

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

  • 、6一医男、基本知識 1.JDK和JRE的區(qū)別 答:JDK是java語言開發(fā)工具包砸狞,包含JRE和開發(fā)工具(javac....
    夢游的沙師弟閱讀 1,195評論 0 4
  • 一:java概述:1,JDK:Java Development Kit镀梭,java的開發(fā)和運行環(huán)境刀森,java的開發(fā)工...
    ZaneInTheSun閱讀 2,629評論 0 11
  • 你是一個女生,你應該溫柔嫻靜报账,顯然你沒有研底,你說話大嗓門,不顧忌透罢,所以你被歲月淬成了漢子榜晦。 小學時,你孤僻內(nèi)向羽圃,不善...
    冬梔閱讀 1,209評論 0 0
  • 02. 北荒夏周--白真府邸 折顏走進白真府邸的院子便看到阿離和滾滾在追逐嬉戲乾胶。 兩個小孩一看到折顏來了便停下。 ...
    于傾于貍閱讀 4,514評論 8 27
  • 12月15號的兩張草稿朽寞。 第11天打卡
    望氨閱讀 108評論 0 0