第一階段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】