JAVA整理的笔记
java:使用Eclipse開發(fā)java程序
集成開發(fā)環(huán)境(IDE)是一類軟件將程序開發(fā)環(huán)境和程序調(diào)試環(huán)境集合在一起,提高開發(fā)效率
1.創(chuàng)建java項(xiàng)目
2.創(chuàng)建程序包(一般為域名的反向如hell.com則為com.hello)
3.編寫Java源程序
4.運(yùn)行Java程序
第一步我們創(chuàng)建一個(gè)Java項(xiàng)目,第二步我們?cè)贘ava項(xiàng)目的SRC下創(chuàng)建了一個(gè)包,第三步我們?cè)诎锩鎰?chuàng)建一個(gè)類并且編寫JAVA程序最后運(yùn)行這個(gè)程序。
main():main()方法程序的入口比如拿鑰匙開門一樣不能從窗戶進(jìn)去,這里的main()方法就是程序的入口.
Java中的關(guān)鍵字:
abstract boolean break byte case catch char class continue default do double else
extends false final finaly float for if implements import instanceof int interface long
native new null package private protected public return short static super switch synchronized
this throw throws transient true try void volatile while(區(qū)分大小寫如void是關(guān)鍵字但是Void就不是)
java標(biāo)識(shí)符:
標(biāo)識(shí)符就是用于給java程序中變量、類、方法等命名的符號(hào)。
使用標(biāo)識(shí)符時(shí),需要遵守幾條規(guī)則:
1.標(biāo)識(shí)符可以由字母、數(shù)字、下劃線、美元符($)組成,但不能包含@、%、空格等其他字符,不能以數(shù)字開頭。譬如:123name就是不合法的
2.標(biāo)識(shí)符不能是java關(guān)鍵字和保留字(java預(yù)留的關(guān)鍵字,以后的升級(jí)版本中可能作為關(guān)鍵字),但可以包含關(guān)鍵字和保留字。如:不可能使用void作為標(biāo)識(shí)符,但是MYvoid是可以的
3.標(biāo)識(shí)符時(shí)嚴(yán)格區(qū)分大小寫的.所以呢,一定要區(qū)分imooc和IMooc是兩個(gè)不同的標(biāo)識(shí)符。
4.標(biāo)識(shí)符的命名最好能反映出其作用,做到見名知意.
變量:
Java中通過變量類型、變量名、變量值這三個(gè)元素來描述變量
如何命名java變量
給變量取名字需要遵守一定規(guī)則
正確示范:
String myname=“tom”;
String _love=“imooc”;
String $hobby2=“l(fā)ol”;
錯(cuò)誤示范:
String 3hobby=“wow”;(不能以數(shù)字開頭)
String %sex=“男”;(不能以下劃線和美元符之外的其他特殊字符開頭)
String private=“www.imooc.com”;(不能使用java關(guān)鍵字)
java編程習(xí)慣:
1.變量名由多個(gè)單詞組成時(shí),第一個(gè)單詞的首字母小寫,其后首字母大寫,俗稱駝峰式命名法,如myAge
2.變量命名時(shí),盡量簡短且能清楚地表達(dá)變量的作用,做到見名知意。如:定義變量名stuName保存"學(xué)生姓名"信息
PS:java變量名的長度沒有限制,但是java語言是區(qū)分大小寫的,所以price和Price是兩個(gè)完全不同的變量
Java中的數(shù)據(jù)類型
java語言是一種強(qiáng)類型語言。java中存儲(chǔ)的數(shù)據(jù)都是有類型的,而且必須在編譯時(shí)就確定其類型。
java中有兩類數(shù)據(jù)類型;
1.整數(shù)類型(byte、short、int、long)
1.數(shù)值型2.浮點(diǎn)類型(float、double)
基本數(shù)據(jù)類型 2.字符型(char)
3.布爾型(boolean)
數(shù)據(jù)類型
1.類(class)
2.接口(interface)
引用數(shù)據(jù)類型 3.數(shù)組
在java中基本數(shù)據(jù)類型變量存的是數(shù)據(jù)本身,而引用數(shù)據(jù)類型變量存的是保存數(shù)據(jù)的空間地址
通俗而言基本數(shù)據(jù)類型存儲(chǔ)的是放在抽屜里的東西而引用數(shù)據(jù)類型則是存儲(chǔ)打開這個(gè)抽屜的鑰匙 抽屜鑰匙一一對(duì)應(yīng)
常用的基本數(shù)據(jù)類型有:
int 整型 4byte 用于存儲(chǔ)整數(shù),如年齡,個(gè)數(shù) int age=21;
double 雙精度浮點(diǎn)型 8byte 用于存儲(chǔ)小數(shù),如商品價(jià)格、成績平均分 double price=15.5;
float 單精度浮點(diǎn)型 4byte 用于存儲(chǔ)小數(shù)如身高 float height=175.2f;
char 字符型 2byte 用于存儲(chǔ)單個(gè)字符,如性別’男’、‘女’ char sex=‘男’;
boolean 布爾型 1byte 表示“真”或“假”,取值只能為 true或flase boolean flag=true;
String 是一種常見的引用數(shù)據(jù)類型,用來表示字符串。在程序開發(fā)中,很多操作都要使用字符串來完成,例如系統(tǒng)中的用戶名、密碼、電子郵箱等。
java中變量的使用規(guī)則
1.java中的變量需要先聲明后使用
2.變量使用時(shí),可以聲明變量的同時(shí)進(jìn)行初始化,也可以先聲明后賦值。
3.變量中每次只能賦一個(gè)值,但是可以修改多次。
4.main方法中定義的變量必須先賦值,然后才能輸出。
java中的自動(dòng)類型轉(zhuǎn)換
不同的基本數(shù)據(jù)類型之間是需要進(jìn)行相互轉(zhuǎn)換的
如:?int score1=82;
double score2=score1;
System.out.println(score2);
代碼中將int類型score1賦值給score2并且轉(zhuǎn)換為double類型。
1.目標(biāo)類型與源類型兼容,如double 型兼容int型,但是char型不能兼容int型
2.目標(biāo)型大于源類型,如double類型長度為8字節(jié),int類型為4字節(jié),因此double類型的變量里直接可以存放int類型的數(shù)據(jù),但是反過來就不可以了。
java中的強(qiáng)制類型轉(zhuǎn)換
java強(qiáng)制類型轉(zhuǎn)換語法
double avg1=78.5;
int vag2=(int)avg1;
System.out.println(avg1);
System.out.println(avg2);
此時(shí)就強(qiáng)制把double類型轉(zhuǎn)換成int類型。PS(強(qiáng)制類型容易造成數(shù)據(jù)丟失所以需要謹(jǐn)慎使用,
java常量的應(yīng)用
所謂常量可以理解為是一種特殊的變量在程序運(yùn)行過程中不允許被改變。
語法:final 常量名 =值;
java中注釋的使用
java中有三種注釋類型:單行,多行,文檔三種注釋
/** /文檔注釋
/ */多行注釋
// 單行注釋
@exception 對(duì)方法可能拋出的異常進(jìn)行說明
什么是運(yùn)算符
運(yùn)算符是一種“功能”符號(hào),用以通知java進(jìn)行相關(guān)的運(yùn)算。如我們需要將變量age的值設(shè)置為20,這時(shí)則需要一個(gè)“=”號(hào)來將其連接告訴程序需要進(jìn)行的輔助操作。
java語言中常用的運(yùn)算符可以分為如下幾種;
1.算術(shù)運(yùn)算符
2.賦值運(yùn)算符
3.比較運(yùn)算符
4.邏輯運(yùn)算符
5.條件運(yùn)算符
java中的算術(shù)運(yùn)算符
算術(shù)運(yùn)算符主要用于基本的算術(shù)運(yùn)算,如加法、減法、乘法、除法、等。
java中常用的算術(shù)運(yùn)算符:
- 加法 5+12=17
- 減法 25-10=15
- 乘法 3*8=24
/ 除法 24/6=4
% 求余 24%7=3
++ 自增1 int i=5;i++
– 自減1 int i=5;i–
3 其中++和–既可以出現(xiàn)在操作數(shù)的左邊,也可以出現(xiàn)在右邊,但結(jié)果是不同的
java中的賦值運(yùn)算符
= 賦值 c=a+b將把a(bǔ)+b得到的值賦給c
+= 加等于 c+=a等價(jià)于c=c+a
-= 減等于 c-=a等價(jià)于c=c-a
= 乘等于 c=a等價(jià)于c=a*c
/= 除等于 c/=a等價(jià)于c=c/a
%= 模等于 c%=a等價(jià)于c=c%a
java中的比較運(yùn)算符
比較運(yùn)算符用于判斷兩個(gè)數(shù)據(jù)的大小,例如:大于、等于、不等于。比較的結(jié)果是一個(gè)布爾值(true或false)。
< >= <= == !=
1.>、<、>=、<=只支持左右兩邊操作數(shù)是數(shù)值類型
2.==、!=兩邊的操作數(shù)既可以是數(shù)值類型也可以是引用類型
java中的邏輯運(yùn)算符
&& 與 a&&b 如果a與b都為true,則返回true;
|| 或 a!!b 如果a與b任一個(gè)為true,則返回true
! 非 !a 如果a為false,則返回true,即取反
^ 異或 a^b 如果a與b有僅有一個(gè)為true,則返回true
java中的條件運(yùn)算符
條件運(yùn)算符(?:)也稱為“三元運(yùn)算符”。
語法形式:布爾表達(dá)式?表達(dá)式1:表達(dá)式2;
運(yùn)算過程:如果布爾表達(dá)式的值為true,則返回表達(dá)式1的值,否則返回表達(dá)式2的值
例如:
String str=(8>5)?“8大于5”:“8不大于5”;
System.out.println(str);
因?yàn)楸磉_(dá)式的值8>5所以返回的值為8大于5;
1 ()
2 !+(正) -(負(fù))++ ——
3 */%
4 +(加)-(減)
5 < <= > >=
6 == !=
7 ^
8 &&
9 ||
10 ?:
11 = += -= *= /= %=
級(jí)別為1的優(yōu)先級(jí)最高,11的優(yōu)先級(jí)最低。
java條件語句之if
if(條件){
條件成立時(shí)執(zhí)行的代碼
}
java條件語句之if…else
語法
if(條件的布爾表達(dá)行){
代碼塊1
}else{
代碼塊2
}
執(zhí)行過程:當(dāng)if中的條件滿足時(shí)則執(zhí)行代碼塊1,否則執(zhí)行代碼塊2;和if相比 if…else不管條件是否滿足都會(huì)執(zhí)行一條語句;
java條件語句之多重if
語法:
if(條件1){
代碼塊1
}else if(條件2){
代碼塊2
}else{
代碼塊3
}
執(zhí)行過程:先判斷條件1如果滿足則執(zhí)行代碼1,否則繼續(xù)判斷條件2,如果條件2滿足則輸出代碼塊2,否則輸出代碼塊3,與前兩者相比較這個(gè)會(huì)多判斷一次。
java條件語句之嵌套if
嵌套if語句,只有當(dāng)外層if的條件成立時(shí),才會(huì)判斷內(nèi)層if的條件。
if(條件1){
if(條件2){
代碼塊1
}else{
代碼塊2
}
}else{
代碼塊3
}
equals()用于判斷字符串的內(nèi)容是否相同,相同則返回true,反之則返回false;
java條件語句之switch
語法:
switch(表達(dá)式){
case 值1:
執(zhí)行代碼塊1
break;
case 值2:
執(zhí)行代碼塊2
break;
case 值n:
執(zhí)行代碼塊n
break;
default:
默認(rèn)執(zhí)行的代碼
}
執(zhí)行過程:當(dāng)switch后表達(dá)式的值和case語句后的值相同時(shí),從該位置開始向下執(zhí)行,直到遇到break語句或者switch語句塊結(jié)束;如果沒有匹配的case語句則執(zhí)行default塊的代碼。
PS:
1.switch后面的小括號(hào)中表達(dá)式的值必須是整型或字符型
2.case后面的值可以是常量數(shù)值,如1.2.;也可以是一個(gè)常量表達(dá)式,如2+2;但是不能是變量或帶有變量的表達(dá)式,如a*2
3.case匹配后,執(zhí)行匹配快里的程序代碼,如果沒有遇到break會(huì)執(zhí)行下一個(gè)的case塊的內(nèi)容,直到遇到break語句或者switch語句塊結(jié)束。
java循環(huán)語句之while
java中常用的3中循環(huán):while、do…while、for
while循環(huán):
語法:
while(判斷條件){
循環(huán)操作
}
執(zhí)行過程:
<1>:判斷while后面的條件是否成立(true/false)
<2>:當(dāng)條件成立時(shí),執(zhí)行循環(huán)內(nèi)的操作代碼,然后重復(fù)執(zhí)行<1>,<2>,直到循環(huán)條件不成立為止
特點(diǎn):先判斷,后執(zhí)行
do…while
do…while循環(huán)與while循環(huán)語法有些類似,但是執(zhí)行過程差別比較大。
語法:
do{
循環(huán)操作
}while(判斷條件);
執(zhí)行過程:
<1>:先執(zhí)行一遍程序,然后判斷條件是否成立
<2>:如果條件成立,繼續(xù)執(zhí)行<1>,<2>直到循環(huán)條件不成立為止
特點(diǎn):先執(zhí)行,后判斷
由此可見,do…while語句保證循環(huán)至少被執(zhí)行一次!
for循環(huán)
Java中的三種循環(huán)可以相互替換
語法:
for(循環(huán)變量初始化;循環(huán)條件;循環(huán)變量變化){
循環(huán)操作
}
執(zhí)行過程:
<1>、執(zhí)行循環(huán)變量初始化部分,設(shè)置循環(huán)的初始狀態(tài),此部分在整個(gè)循環(huán)中只執(zhí)行一次
<2>、進(jìn)行循環(huán)條件的判斷,如果條件為true,則執(zhí)行循環(huán)體內(nèi)代碼,如果為false,則直接退出循環(huán)
<3>、執(zhí)行循環(huán)變量變換部分,改變循環(huán)變量的值,以便進(jìn)行下一次條件判斷
<4>、依次重新執(zhí)行<2>、<3>、<4>,直到退出循環(huán)
特點(diǎn):相比while和do…while語句結(jié)構(gòu)更加簡潔易讀
PS:1.for關(guān)鍵字后面括號(hào)中的三個(gè)表達(dá)式必須用’;‘隔開,三個(gè)表達(dá)式可以省略但是’;‘不能省略。
省略’循環(huán)變化量初始化’,可以在for語句之前由賦值語句進(jìn)行變量初始化。
省略’循環(huán)條件’,即可能會(huì)造成程序一直執(zhí)行下去,也就是’死循環(huán)’現(xiàn)象
省略循環(huán)變量的變化部分,可以在循環(huán)體中進(jìn)行循環(huán)變換的部分。
2.for循環(huán)變量初始化和循環(huán)變量變化部分,可以是使用’,'同時(shí)初始化或改變多個(gè)循環(huán)變量的值。如
for(int i=1,j=5;i<=5;i++,j–){
System.out.println(i+"+"+j+"="+(i+j));
}
java循環(huán)跳轉(zhuǎn)語句之break
}
這個(gè)例子展示了Scanner類的導(dǎo)入例子2 實(shí)現(xiàn)了三個(gè)班級(jí)的各4個(gè)學(xué)生的成績,并且求出了他們的平均分package com.vb;import java.util.Scanner;public class LX28 { public static void main(String[] args) {Scanner input=new Scanner(System.in);//創(chuàng)建Scanner對(duì)象int classNum=3;//班級(jí)數(shù)量int stuNum=4;//學(xué)生數(shù)量double sum=0;//成績總和double avg=0;//成績平均分for(int i=1;i<=classNum;i++) {//外層循環(huán)控制班級(jí)的數(shù)量System.out.println("請(qǐng)輸入第"+i+"個(gè)班級(jí)的成績");for(int j=1;j<=stuNum;j++) {//內(nèi)層循環(huán)控制學(xué)生的數(shù)量System.out.print("第"+j+"個(gè)學(xué)生成績?yōu)?#34;);int score=input.nextInt();sum=sum+score;//成績累加總和}avg=sum/stuNum;//計(jì)算平均分System.out.println("第"+i+"個(gè)班級(jí)學(xué)生的平均分為:"+avg);sum=0;//成績清0}}}
java之?dāng)?shù)組
數(shù)組可以理解為是一個(gè)巨大的“盒子”,里面可以按順序存放多個(gè)類型相同的數(shù)據(jù),比如可以定義int型的數(shù)組scores存儲(chǔ)45名學(xué)生的成績
int[] scores={76,83,92,87};
數(shù)組里面每個(gè)值都有一個(gè)索引,索引從0開始;
例如可以通過scores[0]獲取數(shù)組中的第一個(gè)元素,scores[2]就可以獲取第三個(gè)元素。
如何使用java中的數(shù)組
java中操作數(shù)組只需要4步;
1.聲明數(shù)組
語法:數(shù)據(jù)類型[] 數(shù)組名;
或者 數(shù)據(jù)類型 數(shù)組名[];
其中,數(shù)組名可以是任意合法的變量名,如:
int[] scores;
double height[];
String[] names;
2.分配空間
簡單來說就是指定數(shù)組中最多可存儲(chǔ)多少個(gè)元素
語法:數(shù)組名=new 數(shù)據(jù)類型[數(shù)組長度];(其中數(shù)組長度就是數(shù)組中能存放元素的個(gè)數(shù))如:
scores=new int[5];
height=new double[5];
names=new String[5];
上面聲明數(shù)組和分配空間可以合并如:
int[] scores=new int[5];
3.賦值
語法:
scores[0]=89;
scores[1]=79;
4.處理數(shù)組中數(shù)據(jù)
java中還提供了另外一種直接創(chuàng)建數(shù)組的方式,它將聲明數(shù)組,分配空間和賦值合并完成,如
int[] scores={78,91,84,68};他等價(jià)于:
int[] scores=new int[此括號(hào)中不能指定長度不然報(bào)錯(cuò)]{78,91,84,68};
int[] scores={78,91,84,68};
for(int i=1;i<scores.length;i++){
System.ou.println(“數(shù)組中的第”+(i+1)“個(gè)元素的值是:”+scores[i])
}
其中,數(shù)組名.length 用于獲取數(shù)組的長度
PS:
1.數(shù)組下標(biāo)從0開始。因此 scores[3],代表數(shù)組中第4個(gè)元素,而非第三個(gè)元素
2.數(shù)組下標(biāo)是0到數(shù)組長度-1,如果越界訪問,就會(huì)報(bào)錯(cuò)。
循環(huán)遍歷數(shù)組
package com.vb;
public class LX31 {
public static void main(String[] args) {
String[] hobbys= {“sports”,“game”,“movie” };
System.out.println(“循環(huán)輸出數(shù)組中元素的值:”);
for(int i=0;i<hobbys.length;i++) {
System.out.println(hobbys[i]);
}
}
}
例子: package com.vb;
重點(diǎn)復(fù)習(xí):package com.vb;
import java.util.Arrays;
public class LX44 {
public static void main(String[] args) {
LX44 hello=new LX44();
int[] nums=hello.getArray(8);
System.out.println(Arrays.toString(nums));
}
public int[] getArray(int length) {
int[] nums=new int[length];
for(int i=0;i<nums.length;i++) {
nums[i]=(int)(Math.random()*100);
}
return nums;
}
定義類:
1.類的重要性:所有java程序都以類calss為組織單元
2.什么是類:
類是模子,確定對(duì)象將會(huì)擁有的特征(屬性)和行為(方法){屬性:這個(gè)類這個(gè)東西所具有的東西比如手機(jī)所具有CPU 為多少 屏幕多大;方法是指這個(gè)東西能做什么比如手機(jī)可以打電話,發(fā)短信}
類的特點(diǎn)
類是對(duì)象的類型
具有相同屬性和方法的一組對(duì)象的集合·
3.類的組成:屬性和方法。
4.定義一個(gè)類的步驟:
a.定義類名 public class 類名(){}
java對(duì)象
使用對(duì)象的步驟:
1.創(chuàng)建對(duì)象:
類名 對(duì)象名=new 類名();
LX1 phone=new LX1();
2.使用對(duì)象:
引用對(duì)象的屬性:對(duì)象名.屬性
phone.screen=5;//給scree屬性賦值5
引用對(duì)象的方法:對(duì)象名.方法名()
phone.sendMessage();//調(diào)用sendMessage()方法
}
java中的靜態(tài)內(nèi)部類靜態(tài)內(nèi)部類是static修飾的內(nèi)部類,這種內(nèi)部類的特點(diǎn)是:1.靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過new 外部類().成員的方式訪問2.如果外部類的靜態(tài)成員與內(nèi)部類的成員相同,可以通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員;如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱不相同,則可以通過“成員名”直接調(diào)用外部類的靜態(tài)成員3.創(chuàng)建靜態(tài)內(nèi)部類的對(duì)象,不需要為外部類的對(duì)象,可以直接創(chuàng)建 內(nèi)部類 對(duì)象名=new 內(nèi)部類();java中的方法內(nèi)部類方法內(nèi)部類就是內(nèi)部類定義在外部類的方法中,方法內(nèi)部類只在該方法的內(nèi)部可見,即只在該方法內(nèi)可以使用。PS:由于方法內(nèi)部類不能在外部類的方法以外的地方使用,因此方法內(nèi)部類不能使用訪問修飾符和static修飾符。 java中的繼承繼承是類與類的一種關(guān)系,是一種“is a”的關(guān)系PS:java中的繼承類是單向的繼承的好處:子類擁有父類的所有屬性和方法實(shí)現(xiàn)代碼復(fù)用3.語法規(guī)則:class 子類 extends 父類例:class Dog extends Animal{....}方法的重寫1.什么是方法的重寫:如果子類對(duì)繼承父類的方法不滿意,是可以重寫父類繼承的方法的,當(dāng)調(diào)用方法時(shí)會(huì)優(yōu)先調(diào)用子類的方法。2.語法規(guī)則:a.返回值類型b.方法名c.參數(shù)類型及個(gè)數(shù)都要與父類繼承的方法相同,才叫方法的重寫。 繼承的初始化順序1.初始化父類再初始化子類2.先執(zhí)行初始化對(duì)象中屬性,在執(zhí)行構(gòu)造方法中的初始化 final關(guān)鍵字使用final關(guān)鍵字做標(biāo)識(shí)有“最終的”含義final可以修飾類、方法、屬性和變量final修飾類,則該類不允許被繼承final修飾方法,則該方法不允許被覆蓋(重寫)final修飾屬性則該類的屬性不會(huì)進(jìn)行隱式的初始化(類的初始化屬性必須有值)或在構(gòu)造方法中賦值(但只能選其一)final修飾變量,則該變量的值只能賦一次值,即變?yōu)槌A縮uper關(guān)鍵字:在對(duì)象的內(nèi)部使用,可以代表父類對(duì)象1.訪問父類的屬性super.age2.訪問父類的方法super.eat()super的應(yīng)用子類的構(gòu)造的過程當(dāng)中必須調(diào)用其父類的構(gòu)造方法。如果子類的構(gòu)造方法中沒有顯示調(diào)用父類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類無參的構(gòu)造方法如果顯示的調(diào)用構(gòu)造方法,必須在子類的構(gòu)造方法的第一行。如果子類構(gòu)造方法中既沒有顯示調(diào)用父類的構(gòu)造方法,而父類中有沒有無參的構(gòu)造方法則編譯會(huì)報(bào)錯(cuò)。Object類Object類是所有類的父類,如果一個(gè)類沒有使用extends關(guān)鍵字明確標(biāo)識(shí)繼承另外一個(gè)類,那么這個(gè)類默認(rèn)繼承Object類。Object類中的方法,適合所有子類。1.toString()方法在Object類里面定義toString()方法的時(shí)候返回對(duì)象的哈希code碼(對(duì)象地址字符串)可以通過重寫toString()方法表示對(duì)象的屬性2.equals()方法比較的是對(duì)象的引用是否指向同一塊內(nèi)存地址。DOG dog=new DOG();一般情況下比較兩個(gè)對(duì)象時(shí)比較他的值是否一致,所以要進(jìn)行重寫多態(tài)對(duì)象的多種形態(tài)1.引用多態(tài)父類的引用指向本類的對(duì)象父類的引用指向子類的對(duì)象2.方法多態(tài)創(chuàng)建本類對(duì)象時(shí),調(diào)用的方法為本類方法創(chuàng)建子類對(duì)象時(shí),調(diào)用的方法為子類重寫的方法或者繼承的方法引用類型轉(zhuǎn)換1.向上類型轉(zhuǎn)換(隱式/自動(dòng)類型轉(zhuǎn)換),最小類型到大類型的轉(zhuǎn)換2.向下類型轉(zhuǎn)換(強(qiáng)制類型轉(zhuǎn)換),是大類型到小類型3.instanceof運(yùn)算符,來解決引用對(duì)象的類型,避免類型轉(zhuǎn)換的安全性問題抽象類1.語法定義抽象類前使用abstract關(guān)鍵字修飾,則該類為抽象類。2.應(yīng)用場(chǎng)景:a.在某些情況下,某個(gè)父類只是知道其子類應(yīng)該包含怎樣的方法,但是無法準(zhǔn)確知道這些子類如何實(shí)現(xiàn)這些方法。b.從多個(gè)具有相同特征的類中抽象出一個(gè)抽象類,以這個(gè)抽象類作為子類的模板,從而避免了子類設(shè)計(jì)的隨意性。3.作用:不關(guān)注子類的實(shí)現(xiàn)但是限制子類必須具有某些特征4.使用規(guī)則:a.abstract定義抽象類b.abstract定義抽象方法,只有聲明,不需要實(shí)現(xiàn)c.包含抽象方法的類是抽象類d.抽象類中可以包含普通的方法,也可以沒有抽象方法接口概念類是一種具體實(shí)現(xiàn)體,而接口定義了某一批類所需要遵守的規(guī)范,接口不關(guān)心這些類的內(nèi)部數(shù)據(jù),也不關(guān)心這些類里方法的實(shí)現(xiàn)細(xì)節(jié),它只規(guī)定這些類里必須提供某些方法。2.接口定義和類定義不同,定義接口不再使用class關(guān)鍵字,而是使用interface關(guān)鍵字。接口定義的基本語法:[修飾符] interface 接口名 [extends 父接口1,父接口2...]{零個(gè)到多個(gè)常量定義...零個(gè)到多個(gè)抽象方法的定義...}接口就是用來被繼承、被實(shí)現(xiàn)的、修飾符一般建議用publicPS:不能使用private和protected修飾接口3.接口定義常量:接口中的屬性是常量,即使定義時(shí)不添加public static final 修飾符,系統(tǒng)也會(huì)自動(dòng)加上。方法:接口中的方法只能是抽象方法,總是使用,即使定義時(shí)不添加public abstract修飾符,系統(tǒng)也會(huì)自動(dòng)加上。4.使用接口一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,實(shí)現(xiàn)接口使用implements關(guān)鍵字。java中一個(gè)類只能繼承一個(gè)父類,是不夠靈活的,通過實(shí)現(xiàn)多個(gè)接口可以做補(bǔ)充。繼承父類實(shí)現(xiàn)接口的語法為:[修飾符]class 類名 extends 父類 implements 接口1,接口2...{類體部分//如果繼承了抽象類,需要實(shí)現(xiàn)繼承的抽象方法;要實(shí)現(xiàn)接口中的抽象方法。} 如果要繼承父類,繼承父類必須在實(shí)現(xiàn)接口之前 使用接口:接口在使用過程當(dāng)中,還經(jīng)常與匿名內(nèi)部類配合使用匿名內(nèi)部類就是沒有名字的內(nèi)部類,多用于關(guān)注實(shí)現(xiàn)而不關(guān)注實(shí)現(xiàn)類的名稱語法格式:Interface i=new Interface(){public void method(){System.out.println("匿名內(nèi)部類實(shí)現(xiàn)接口的方式")}
};
一.項(xiàng)目背景介紹
根據(jù)所學(xué)知識(shí),編寫一個(gè)控制臺(tái)版的“答答租車系統(tǒng)”
功能:
1.展示所有可租車輛
2.選擇車型、租車量
3.展示租車清單,包含:總金額、總載貨量及其車型、總載人量及車型
二.項(xiàng)目分析
1.數(shù)據(jù)模型分析
2.業(yè)務(wù)模型分析
3.顯示和流程分析
數(shù)據(jù)模型分析
1.通過對(duì)現(xiàn)實(shí)世界的事與物主要特征的分析、抽象,為信息系統(tǒng)的實(shí)施提供數(shù)據(jù)存取的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的約束。
2.數(shù)據(jù)結(jié)構(gòu)的組成:操作(方法)、屬性
業(yè)務(wù)模型分析
1.在設(shè)計(jì)應(yīng)用程序之前,應(yīng)該明確該應(yīng)用程序必須執(zhí)行那些任務(wù)。分析業(yè)務(wù)需求是應(yīng)用程序開發(fā)中最重要的步驟之一。
確定業(yè)務(wù)需求的目的在于創(chuàng)建一個(gè)能同時(shí)滿足零售商和消費(fèi)者需要的解決方案。
2.答答租車系統(tǒng)中,只需要考慮消費(fèi)者需求就可以了。
顯示和流程分析
1.顯示:用戶可以看到的信息提示界面。
2.流程:顯示信息的執(zhí)行過程、步驟。
3.答答租車系統(tǒng)中,要以命令行的方式顯示提示信息和輸出結(jié)果信息,要考慮其樣式,用戶輸入的數(shù)據(jù)不同,信息該如何提示、如何處理并顯示出結(jié)果,這部分知道囊括了顯示與流程的內(nèi)容。
例:請(qǐng)選擇車輛->請(qǐng)輸入序號(hào)->輸出總金額…
java中基本類型和包裝類之間的轉(zhuǎn)換
Integer a=new Integer(3);
int b=a+5;
裝箱:把基本類型轉(zhuǎn)換成包裝類,使其具有對(duì)象的性質(zhì),又可分為手動(dòng)裝箱和自動(dòng)裝箱
int i=10;
Integer x=new Integer(i);
Integer y=i;
拆箱:和裝箱相反,把包裝類對(duì)象轉(zhuǎn)換成基本類型的值,又可分為手動(dòng)拆箱和自動(dòng)拆箱
Integer j=new Integer(8);
int m=j.intValue();
int n=j;
java中基本類型和字符串之間的轉(zhuǎn)換
在程序開發(fā)中,我們經(jīng)常需要在基本數(shù)據(jù)類型和字符串之間進(jìn)行轉(zhuǎn)換。
其中,基本類型轉(zhuǎn)換為字符串有三種方法:
1.使用包裝類的toString()方法
2.使用sTRING類的valueOf()方法
3.用一個(gè)空字符串加上基本數(shù)據(jù)類型,得到的就是基本類型數(shù)據(jù)對(duì)應(yīng)的字符串
將字符串轉(zhuǎn)換成基本類型有兩種方法;
1.調(diào)用包裝類的parseXxx靜態(tài)方法
2.調(diào)用包裝類valueOf()方法轉(zhuǎn)換為基本類型的包裝類,會(huì)自動(dòng)拆箱
使用Date和SimpleDateFormat類表示時(shí)間
在程序開發(fā)中,經(jīng)常需要處理日期和時(shí)間的相關(guān)數(shù)據(jù),此時(shí)我們可以使用java.util包中的Date類。這個(gè)類最主要的作用就是獲取當(dāng)前的時(shí)間,我們來看下Date類的使用:
Calendar類的應(yīng)用
Date類最主要的作用就是獲得當(dāng)前時(shí)間,同時(shí)這個(gè)類里面也具有設(shè)置時(shí)間以及一些其他的功能,但是由于本身設(shè)計(jì)的問題,這些方法卻遭到眾多批評(píng),不建議使用,更推薦使用Calendar類進(jìn)行時(shí)間和日期的處理。
java.util.Calendar類是一個(gè)抽象類,可以通過調(diào)用getInstance()靜態(tài)方法獲取一個(gè)Calendar對(duì)象,此對(duì)象已由當(dāng)前日期時(shí)間初始化,即魔人代表當(dāng)前時(shí)間,如Calendar c=Calendar.getInstance();
使用Math類操作數(shù)據(jù)
Math類位于java.lang包中,包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法,Math類的所有方法都是靜態(tài)方法,所以使用該類中的方法時(shí),可以直接使用類名.方法名,如:Math.round();
常用的方法:
返回值 方法名 解釋
long round() 返回四舍五入的整數(shù)
double floor() 返回小于參數(shù)的最大整數(shù)
double cell() 返回大于參數(shù)的最小整數(shù)
double random() 返回[0,1]之間的隨機(jī)數(shù)浮點(diǎn)數(shù)
LinkedList
ArrayList LinkedList HashSet
Collection接口,子接口以及實(shí)現(xiàn)類
Collection接口
List接口及其實(shí)現(xiàn)類—ArrayList
List是元素有序并且可以重復(fù)的集合,被稱為序列
List可以精確的控制每個(gè)元素的插入位置,或刪除某個(gè)位置元素
ArrayList–數(shù)組序列,是List的一個(gè)重要實(shí)現(xiàn)類
ArrayList底層是由數(shù)組來實(shí)現(xiàn)的
方法的重寫:有繼承關(guān)系的子類中
方法名相同,參數(shù)列表相同,{參數(shù)順序,個(gè)數(shù),類型,方法返回值相同}
與重寫方法的參數(shù)名無關(guān)
訪問修飾符的限定范圍大于等于父類方法。
方法的重載:在同一個(gè)類中
方法名相同
參數(shù)個(gè)數(shù),順序,類型不同
返回值類型,訪問修飾符任意
List接口排序用
Collections.sort();方法進(jìn)行排序
數(shù)組排序 Arrays.sort()
集合排序 Collections.sort();
Comparator接口中包含一個(gè) int compare(T o1,T o2)方法的 用來比較排序的兩個(gè)參數(shù)
如果o1<o2 返回負(fù)整數(shù)
如果o1==o2;返回0;
如果o1>o2,返回正整數(shù)
還包含一個(gè) boolean equals(Obkect obj)方法 指示某個(gè)其他對(duì)象是否 “等于” 此 Comparator
此方法可以被Object類中的equals方法覆蓋,不必重寫
Comparable java.lang包中的
此接口強(qiáng)行對(duì)實(shí)現(xiàn)它的每個(gè)類的對(duì)象進(jìn)行整體排序
這種排序被稱為類的自然排序,類的 compareTo方法 被稱為它的自然比較方法
對(duì)于集合,通過調(diào)用Collections.sort方法進(jìn)行排序
對(duì)于數(shù)組,通過調(diào)用Arrays.sort方法進(jìn)行排序.
int compareTo(T o)方法
該對(duì)象小于,等于或大于指定對(duì)象,則分別返回負(fù)整數(shù),零或正整數(shù).
Comparable和Comparator的區(qū)別
排序所用的的方法 collections 前者 一個(gè)參數(shù) 后者兩個(gè)參數(shù)
重寫compareTo方法前者直接在定義的類中重寫并與之當(dāng)前的屬性進(jìn)行比較
后者 則單獨(dú)創(chuàng)建一個(gè)類并重寫該方法在排序的參數(shù)中實(shí)例化該類對(duì)象
package com.demo25.sort;
public class Goods implements Comparable{
private String id;//商品編號(hào)
private String name;//商品名稱
private double price;//商品價(jià)格
public class FileInputStreamDemo {
public static void main(String[] args) {FileInputStream fis;try {fis = new FileInputStream("imooc.txt");byte[] b=new byte[100];fis.read(b,0,5 );System.out.println(new String(b));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {e.printStackTrace();}}通過數(shù)組形式進(jìn)行輸出文件內(nèi)容
緩沖輸入流 BufferedInputStream
緩沖輸出流 BufferedOutputStream
字符輸入流 Reader
字符數(shù)出流 Writer
字節(jié)字符轉(zhuǎn)換流 InputStreamReader
OutputStreamWrite
對(duì)象序列化
步驟:
創(chuàng)建一個(gè)類,繼承Serializable接口
創(chuàng)建對(duì)象
將對(duì)象寫入文件
從文件讀取對(duì)象信息
對(duì)象輸入流 ObjectInputStream;
對(duì)象輸出流 ObjectOutputStream;
Library
Lorem Ipsum is simply dummy text of the printing and typesetting industy
Lorem Ipsum has been the industry’s tsandard dummy text ever since the 1500s,When an unknown printer took a galley of type and scrambled it to make a tyle specimen book.
element.getAttribute//獲取屬性
element.setAttribute//添加或者修改屬性
element.src//修改圖片名稱
element.href//修改網(wǎng)址
DOM事件不同寫法
1)
請(qǐng)點(diǎn)擊該文本
2)Element.οnclick=function(){displayDate()};
3)Element.addEventListener(“click”,function(){ })
DOM節(jié)點(diǎn)
document.createElement("");新增一個(gè)元素標(biāo)簽
document.createTextNode("")新增的內(nèi)容
parent.appendChild(child);//把子類的元素插入到父類中
parent.removeChild(child);//移除子類中的元素
window的方法
window.open()//打開新窗口 //四個(gè)參數(shù)第一個(gè)打開的頁面 第二個(gè)窗口的名字 第三個(gè)寬 第四個(gè)高
window.close()//關(guān)閉當(dāng)前窗口
window.moveTo()//移動(dòng)當(dāng)前窗口
window.resizeTo()//調(diào)整當(dāng)前窗口的尺寸
window.screen
screen.availWidth//可用的屏幕寬度
screen.availHeight//可用的屏幕高度
window.inner
window.innerWidth//當(dāng)前文檔可顯示的寬度
window.innerHeight//當(dāng)前文檔可顯示的高度
window.Location
location.hostname 返回web主機(jī)的域名
location.pathname返回當(dāng)前頁面的路徑和文件名
location.protocol返回所使用的web協(xié)議(http://或https//)
location.href 返回(當(dāng)前頁面的)整個(gè)URL
window.aler(’’)在網(wǎng)頁中輸出警告框
document.write(’’)輸出內(nèi)容到網(wǎng)頁中
document.getElementById(’’).innerHTML輸出內(nèi)容到html元素中
console.log(’’)輸出元素到控制臺(tái)
prompt() 方法用于顯示可提示用戶進(jìn)行輸入的對(duì)話框。有確定和取消選項(xiàng) 確定返回true 反之false
confirm(“文本”)用于提示用戶需要輸入的值并且創(chuàng)建一個(gè)接受用戶輸入的文本框
xml
1.標(biāo)簽名要有意義
2.建議使用,小寫字母,單詞之間使用"-"分割
3.建議多級(jí)標(biāo)簽之間不要存在重名的情況
適當(dāng)?shù)淖⑨屌c縮進(jìn)
適當(dāng)?shù)淖⑨屌c縮進(jìn)可以讓XML文檔更容易閱讀
合理使用屬性
1.標(biāo)簽屬性用于描述標(biāo)簽不可或缺的信息
2.對(duì)標(biāo)簽分組或者標(biāo)簽設(shè)置id時(shí)常用屬性表示
xml支持五中實(shí)體引用
CDATA標(biāo)簽
學(xué)生姓名:$(student.name)
作用域?qū)ο?EL表達(dá)式內(nèi)置四種作用域?qū)ο?忽略書寫作用域?qū)ο髸r(shí),el則按作用域從小到大一次嘗試獲取 作用域?qū)ο?描述 pageScope 從當(dāng)前頁面取值 requestScope 從當(dāng)前請(qǐng)求中獲取屬性值 sessionScope 從當(dāng)前會(huì)話中獲取屬性值 applicationScope 從當(dāng)前應(yīng)用獲取全局屬性值 EL表達(dá)式輸出 1.語法 ${[作用域.]屬性名[.子屬性]} 2.EL表達(dá)式支持將運(yùn)算結(jié)果進(jìn)行輸出 3.EL支持絕大多數(shù)對(duì)象輸出,本質(zhì)是執(zhí)行toString()方法 EL輸出參數(shù)值 1.EL表達(dá)式內(nèi)置param對(duì)象來簡化參數(shù)的輸出 2.語法:${param.參數(shù)名} JSTL標(biāo)簽庫 1.JSTL(JSP Standard Tag Libray)JSP標(biāo)準(zhǔn)標(biāo)簽庫 2.JSTL用于簡化JSP開發(fā),提高代碼的可讀性與可維護(hù)性 3.JSTL由SUN(Oracle)定義規(guī)范,由Apache Tomcat團(tuán)隊(duì)實(shí)現(xiàn) JSTL的標(biāo)簽庫種類 1.JSTL按功能劃分可分為五類標(biāo)簽庫 類別 核心標(biāo)簽庫-core 格式化輸出標(biāo)簽庫-fmt SQL操作標(biāo)簽庫-sql XML操作標(biāo)簽庫-xml 函數(shù)標(biāo)簽庫-functions 引用JSTL核心庫 1.核心標(biāo)簽庫(Core)是JSTL最重要的標(biāo)簽庫,提供了JSTL的基礎(chǔ)功能 2.<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3.JSTL核心標(biāo)簽庫在taglibs-standard-impl.jar由META-INF/c.tld定義 判斷標(biāo)簽 1.JSTL核心庫提供了兩組判斷標(biāo)簽 2.-單分支判斷 3.、、-多分支判斷 遍歷集合 1.標(biāo)簽用于遍歷集合{Collection}中的每一個(gè)對(duì)象 第${idx.index+1}位姓名:${p.name} 性別:${p.sex} 年齡:${p.age} fmt格式化標(biāo)簽庫 1.fmt格式化標(biāo)簽庫 URI:http://java.sun.com/jsp/jstl/fmt 2.格式化日期標(biāo)簽 3.格式化數(shù)字標(biāo)簽 web注冊(cè)登錄案例 MVC設(shè)計(jì)模式 Web案例開發(fā) MVC的概述 SUN公司推出JSP技術(shù)后,同時(shí)也推薦了兩個(gè)web應(yīng)用程序的開發(fā)模式,一種是JSP+JavaBean模式——簡單程序開發(fā),一種是Servlet+JSP+JavaBean模式 Servlet + JSP +JavaBean(MVC)——>復(fù)雜web程序 丨 丨 丨 處理用戶 數(shù)據(jù)顯示 數(shù)據(jù)封裝 請(qǐng)求 web開發(fā)模式 Servlet Servlet缺陷: 丨 1.需要配置 丨 2.顯示HTML元素的時(shí)候很復(fù)雜 丨 丨 JSP JSP缺陷: 丨 1.封裝和處理數(shù)據(jù)麻煩 丨 丨 JSP+JavaBean JSP+JavaBean模式優(yōu)點(diǎn) 1.JSP顯示數(shù)據(jù) 2.JavaBean封裝和處理數(shù)據(jù) Model1:使用JSP+JavaBean模式開發(fā) Servlet 丨 丨 丨 丨 JSP Servlet+JSP+JavaBean模式優(yōu)點(diǎn): 丨 1.使用Servlet處理用戶的請(qǐng)求 丨 2.JSP顯示數(shù)據(jù) 丨 3.JavaBean封裝和處理數(shù)據(jù) JSP+JavaBean 丨 丨 丨 Servlet+JSP+JavaBean Model2:使用 Servlet+JSP+JavaBean模式開發(fā)稱為MVC模式 M:Model模型層——JavaBean V:View視圖層——JSP C:Controller控制層——Servlet 用戶的請(qǐng)求都提交到Servlet(C),由C統(tǒng)一調(diào)度JavaBean(M)封裝和處理數(shù)據(jù), 由JSP(V)進(jìn)行數(shù)據(jù)顯示 模式一 應(yīng)用了Java Web開發(fā)中的兩種技術(shù) 1.JSP完成邏輯上的處理很顯示 2.JavaBean封裝數(shù)據(jù),處理數(shù)據(jù) 瀏覽器 request(請(qǐng)求) JSP 瀏覽器 response(響應(yīng)) 丨 JavaBeans (Web服務(wù)器) 模式二 1.Model2分為三部分 1.Servlet控制顯示那個(gè)JSP頁面給用戶、調(diào)用那個(gè)JavaBean 2.JSP響應(yīng)用戶請(qǐng)求,把結(jié)果數(shù)據(jù)展現(xiàn)給用戶 3.JavaBean對(duì)數(shù)據(jù)庫的數(shù)據(jù)的存取,復(fù)雜的業(yè)務(wù)功能和邏輯處理 瀏覽器 request(請(qǐng)求) Servlet———— 丨 丨 JSP<———>JavaBeans MVC開發(fā)流程 瀏覽器 ————>Servlet調(diào)用JavaBean(封裝數(shù)據(jù)) 調(diào)用另外一個(gè)JavaBean(處理數(shù)據(jù)) 最后將處理的結(jié)果通過JSP響應(yīng)給瀏覽器 Get與Post請(qǐng)求方法 1.Get方式是將數(shù)據(jù)通過在URL附加數(shù)據(jù)顯性向服務(wù)器發(fā)送數(shù)據(jù) http://localhost:8080/FirstServer/sam-ple?name=zhangsan 2.Post方式會(huì)將數(shù)據(jù)存放在"請(qǐng)求體" 中隱性向服務(wù)器發(fā)送數(shù)據(jù) 請(qǐng)求體:name=zhangsan Get與Post處理方式 1.所有請(qǐng)求-servlet()方法 2.Get請(qǐng)求-doGet()方法 3.Post請(qǐng)求-doPost()方法 Get與Post應(yīng)用場(chǎng)景 1.Get常用于不包含敏感信息的查詢功能 2.Post用于安全性要求較高的功能或者服務(wù)器的"寫"操作 1.用戶登錄 2.用戶注冊(cè) 3.更新公司賬目 xml是可擴(kuò)展標(biāo)記語言 編寫xml就是編寫標(biāo)簽,與html很相似 良好的人機(jī)可讀性 xml與html比較 xml和html非常相似,都是編寫標(biāo)簽 xml沒有預(yù)定義標(biāo)簽,html存在大量預(yù)定義標(biāo)簽 xml重在保存與傳輸數(shù)據(jù),html用于顯示信息 html xml 首頁 三年級(jí) 1班 三年級(jí) 2班 xml用途 配置描述文件 用于保存程序產(chǎn)生的數(shù)據(jù) 網(wǎng)絡(luò)間的數(shù)據(jù)傳輸 xml文檔結(jié)構(gòu) 第一行必須是xml聲明 有且只有一個(gè)根節(jié)點(diǎn) xml聲明 xml聲明說明xml文檔的基本信息,包括版本號(hào)與字符集,寫在xml第一行 <?xml version="1.0" encoding="UTF-8"?> version代表版本號(hào)1.0/1.1 encoding UTF-8設(shè)置字符集,用于支持中文 xml標(biāo)簽書寫規(guī)則 1.合法的標(biāo)簽名 2.適當(dāng)?shù)目s進(jìn)與注釋 3.合理使用屬性 4.特殊字符與CDATA標(biāo)簽 5.有序的子元素 xml支持五種實(shí)體引用 實(shí)體引用 對(duì)應(yīng)符號(hào) 說明 < < 小于 > > 大于 & & 和號(hào) ' ' 單引號(hào) " " 雙引號(hào) CDATA標(biāo)簽 1.CDATA指的是不應(yīng)由XML解析器進(jìn)行解析的文本數(shù)據(jù) 2.從 <![CDATA[ 不需要解析的代碼 ]]> 結(jié)束
有序的子元素
在xml多層嵌套的子元素中,標(biāo)簽前后順序應(yīng)保持一致.
xml語義約束
1.xml文檔結(jié)構(gòu)正確,但可能不是有效的
2.例如,員工檔案xml中絕不允許出現(xiàn)其他類型的標(biāo)簽
xml語義約束有兩種定義方式:DTD與xml Schema
Document Type Definition
1.DTD(Document Type Definition,文檔類型定義)是一種簡單易用的語義約束方式
2.DTD文件的擴(kuò)展名為.dtd.
xml引用dtd文件
在xml中使用<!DOCTYPE>標(biāo)簽來引用DTD文件
書寫格式
示例
XML Schema
1.xml schema比dtd更為復(fù)雜,提供了更多功能
2.xml schema提供了數(shù)據(jù)類型,格式限定,數(shù)據(jù)范圍等特性
3.xml schema是w3c標(biāo)準(zhǔn)
DOM文檔對(duì)象模型
1.DOM(Document Object Model)定義了訪問和操作XML文檔的標(biāo)準(zhǔn)方法,DOM把XML文檔
當(dāng)做樹結(jié)構(gòu)來查看,能夠通過DOM樹來讀寫所有元素.
DOM文檔對(duì)象模型
Dom4j
1.Dom4j是一個(gè)易用的,開源的庫,用于解析XML。它應(yīng)用于Java平臺(tái),具有性能優(yōu)異,功能強(qiáng)大和極其易使用的特點(diǎn).
2.Dom4j將XML視為Document對(duì)象.
3.XML標(biāo)簽被Dom4j定義為Element對(duì)象
XPath路徑表達(dá)式
1.Xpath路徑表達(dá)式是XML文檔中查找數(shù)據(jù)的語言
2.掌握XPath樂意極大的提高在提取數(shù)據(jù)時(shí)的開發(fā)效率。
3.學(xué)習(xí)Xpath本質(zhì)就是掌握各種形式表達(dá)式的使用技巧.
XPath基本表達(dá)式
1.最常用的基本表達(dá)式
表達(dá)式 描述
nodename 選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)
/ 從根節(jié)點(diǎn)選取
// 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮他們的位置
. 選取當(dāng)前節(jié)點(diǎn)
… 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
@ 選取屬性
XPath基本表達(dá)式案例
路徑表達(dá)式 結(jié)果
bookstore 選取bookstore元素的所有子節(jié)點(diǎn)
/bookstore 選取根元素bookstore。
bookstore/book 選取屬于bookstore的子元素的所有book元素
//book 選取所有book子元素,而不是他們?cè)谖臋n的位置
//bookstore//book 選取屬于bookstore元素的后代的所有book元素,而不管他們位于bookstore之下的什么位置
//@lang 選取名為lang的所有屬性
XPath謂語表達(dá)式案例
路徑表達(dá)式 結(jié)果
/bookstore/book[1] 選取屬于bookstore子元素的第一個(gè)book元素
/bookstore/book[last()] 選取屬于bookstore子元素的最后一個(gè)book元素
/bookstore/book[last()-1] 選取屬于bookstore子元素的倒數(shù)第二個(gè)book元素
/bookstore/book[position()??] 選取最前面的兩個(gè)屬于bookstore元素的子元素的book元素
//title[@lang] 選取所擁有名為lang的屬性的title元素
//title[@lang=‘eng’] 選取所有title元素,且這些元素?fù)碛兄禐閑ng的lang屬性
/bookstore/book[price>35.00] 選取bookstore元素的所有book元素,且其中的price元素的值須大于35.00
/bookstore/book[price>35.00]/title 選取bookstore元素的book元素的所有title元素,且其中的price元素的值須大于35.00
jaxen
1.jaxen是一個(gè)java編寫的開源的XPath庫,這是適應(yīng)多種不同的對(duì)象模型,包括DOM,XOM,dom4j和
JDOM.
2.Dom4j底層依賴jaxen實(shí)現(xiàn)XPath查詢
標(biāo)準(zhǔn)Java Web工程結(jié)構(gòu)
組織結(jié)構(gòu) 描述
tomcat Tomcat應(yīng)用根目錄
/web應(yīng)用目錄 Java Web應(yīng)用目錄
/web應(yīng)用目錄/index.html |.jsp 默認(rèn)首頁
/WEB-INF WEB應(yīng)用的安全目錄,用于存放配置文件
/WEB-INF/web.xml web.xml是"部署描述文件",是該Web項(xiàng)目核心配置文件
/WEB-INF/classes 存放編譯后的classes文件
/WEB-INF/lib 用于存放web應(yīng)用依賴的jar文件
/META-INF/MANIFEST.MF 包含Web應(yīng)用的版本等信息
Servlet開發(fā)步驟
1.創(chuàng)建Servlet類,繼承HttpServlet
2.重寫service方法,編寫程序代碼
3.配置web.xml,綁定URL
Servlet訪問方法
1.http://IP地址:端口/context-path/url-mapping
2.遠(yuǎn)程訪問使用,本地訪問localhost (127.0.0.1)
3.context-path稱為’上下文路徑’,默認(rèn)工程名
請(qǐng)求參數(shù)
1.請(qǐng)求參數(shù)是指瀏覽器通過請(qǐng)求向Tomcat提交的數(shù)據(jù)
2.請(qǐng)求參數(shù)通常是用戶輸入的數(shù)據(jù),待Sevlet進(jìn)行處理
Servlet接收請(qǐng)求參數(shù)
request.getParameter()–接收單個(gè)參數(shù)
request.getParameterValues()—接收多個(gè)同名參數(shù)
Get與Post請(qǐng)求方法
1.Get方式是將數(shù)據(jù)通過在URL附加數(shù)據(jù)顯性向服務(wù)器發(fā)送數(shù)據(jù)
1.http://localhost:8080/FirstServlet/sample?name=zhangsan
2.Post方式會(huì)將數(shù)據(jù)存放在"請(qǐng)求體"中隱性向服務(wù)器發(fā)送數(shù)據(jù)
2.請(qǐng)求體:name=zhangsan
request.getMethod();獲取當(dāng)前請(qǐng)求方法
Servlet生命周期
1.裝載-web.xml
2.創(chuàng)建-構(gòu)造函數(shù)
3.初始化-init()
4.提供服務(wù)-service()
5.銷毀-destory()
啟動(dòng)時(shí)加載Servlet
1.web.xml使用設(shè)置啟動(dòng)加載
2.0~9999
3.啟動(dòng)時(shí)加載在工作中常用于系統(tǒng)的預(yù)處理
JSP執(zhí)行過程
Tomcat 將jsp—轉(zhuǎn)譯為Servlet源代碼-----在進(jìn)行編譯成Servlet字節(jié)碼
JSP基本語法
1.JSP語法按功能可分為以下四種
1.JSP代碼塊 2.JSP聲明構(gòu)造塊
3.JSP輸出指令 4.JSP處理指令
JSP聲明構(gòu)造快
1.JSP聲明構(gòu)造快用于聲明變量或方法
2.JSP聲明構(gòu)造快語法:<%!聲明語句 %>
例如 <%! public int add(int a,int b){return a+b;} %>
JSP常用處理指令
1.<%@ page %>定于當(dāng)前jsp頁面全局設(shè)置
2.<%@ include %>將其他JSP頁面與當(dāng)前JSP頁面合并
3. <%@ taglib %>引入JSP標(biāo)簽庫
JSO九大內(nèi)置對(duì)象
HTTP請(qǐng)求的結(jié)構(gòu)
1.HTTP請(qǐng)求包含三部分:請(qǐng)求行,請(qǐng)求頭,請(qǐng)求體
響應(yīng)的結(jié)構(gòu)
1.HTTP響應(yīng)包含三部分:響應(yīng)行,響應(yīng)頭,響應(yīng)體
狀態(tài)碼 錯(cuò)誤描述
200 服務(wù)器處理成功
404 無法找到文件
500 內(nèi)部服務(wù)器錯(cuò)誤
403 服務(wù)器拒絕訪問
301.302 請(qǐng)求重定向
400 無效的請(qǐng)求
401 未經(jīng)過授權(quán)
503 服務(wù)器超負(fù)載或正停機(jī)維護(hù),無法處理請(qǐng)求
ContentType的作用
1.ContentType決定瀏覽器采用何種方式對(duì)響應(yīng)體進(jìn)行處理
MIME類型 描述
text/plain 純文本
text/html HTML文檔
text/xml XML文檔
application/x-msdownload 需要下載的資源
image/jpeg 圖片資源
image/gif
image/…
請(qǐng)求轉(zhuǎn)發(fā)與重定向
1.多個(gè)Servlet(JSP)之間跳轉(zhuǎn)有兩種方式
2.request.getRequestDispatcher().forward() -請(qǐng)求轉(zhuǎn)發(fā)
3.response.sendRedirect() --響應(yīng)重定向
請(qǐng)求轉(zhuǎn)發(fā)
1.請(qǐng)求轉(zhuǎn)發(fā)是服務(wù)器跳轉(zhuǎn),只會(huì)產(chǎn)生一次請(qǐng)求
2.重定向會(huì)產(chǎn)生兩次請(qǐng)求
瀏覽器Cookie
1.Cookie(小甜餅) 是瀏覽器保存在本地的文本內(nèi)容
2.Cookie常用于保存登錄狀態(tài),用戶資料等小文本
3.Cookie具有時(shí)效性,Cookie內(nèi)容會(huì)伴隨請(qǐng)求發(fā)送給Tomcat
Session–用戶會(huì)話
1.Session(用戶會(huì)話) 用于保存與"瀏覽器窗口"對(duì)應(yīng)的數(shù)據(jù)
2.Session的數(shù)據(jù)存儲(chǔ)在Tomcat服務(wù)器的內(nèi)存中,具有時(shí)效性
3.Session通過瀏覽器Cookie的SessionId值提取用戶數(shù)據(jù)
Session原理
ServletContext
1.ServletContext(Servlet上下文對(duì)象),是Web應(yīng)用全局對(duì)象
2.一個(gè)Web應(yīng)用只會(huì)創(chuàng)建一個(gè)ServletContext對(duì)象
3.ServletContext隨著Web應(yīng)用啟動(dòng)而自動(dòng)創(chuàng)建
Java Web三大作用域?qū)ο?br /> 1.HttpServletRequest–請(qǐng)求對(duì)象 作用域范圍一次遞增
2.HttpSession–用戶會(huì)話對(duì)象
3.ServletCotext-web應(yīng)用全局對(duì)象
web.xml常用配置
1.錯(cuò)誤頁面
2.映射配置
JSP九大內(nèi)置對(duì)象
內(nèi)置對(duì)象 描述
request 請(qǐng)求對(duì)象-HttpServletRequest
response 響應(yīng)對(duì)象-HttpServletResponse
session 用戶會(huì)話-HttpSession
application 應(yīng)用全局對(duì)象-ServletContext
out 輸處對(duì)象-PrintWriter
page 當(dāng)前頁面對(duì)象-this
pageContext 頁面上下文對(duì)象-PageContext
config 應(yīng)用配置對(duì)象-ServletConfig
exception 應(yīng)用異常對(duì)象-Throwable
EL表達(dá)式
1.EL(Expression Language)表達(dá)式語言,用于簡化JSP的輸出
2.EL表達(dá)式的基本語法:${表達(dá)式}
EL的作用域?qū)ο?br /> 1.EL表達(dá)式內(nèi)置四種作用域?qū)ο?/p>
作用域?qū)ο?描述
pageScope 從當(dāng)前頁面取值
requestScope 從當(dāng)前會(huì)話中獲取屬性值
sessionScope 從當(dāng)前會(huì)話中獲取屬性值
applicationScope 從當(dāng)前應(yīng)用獲取全局屬性值
El表達(dá)式的輸出
1.語法:${[作用域.]屬性名[.子屬性]}
2.EL表達(dá)式支持將運(yùn)算結(jié)果進(jìn)行輸出
3.EL支持絕大多數(shù)對(duì)象輸出,本質(zhì)是執(zhí)行toString()方法
EL輸出參數(shù)值
1.EL表達(dá)式內(nèi)置param對(duì)象來簡化參數(shù)的輸出
2.語法:${param.參數(shù)名}//可以代替request.getParameter
JSTL標(biāo)簽庫
1.JSTL(JSP Standard Tag Library),JSP標(biāo)準(zhǔn)標(biāo)簽庫
2.JSTL用于簡化JSP代碼開發(fā),提高代碼的可讀性與可維護(hù)性
3.JSTL由SUN(Oracle)定義規(guī)范,由Apache Tomcat實(shí)現(xiàn)
JSTL的標(biāo)簽庫種類
1.JSTL按功能規(guī)劃可分為五類標(biāo)簽庫
類別
核心標(biāo)簽庫–core
格式化輸出標(biāo)簽庫–fmt
SQL操作標(biāo)簽庫–sql
XML操作標(biāo)簽庫–xml
函數(shù)標(biāo)簽庫–functions
判斷標(biāo)簽
1.JSTL核心庫提供了兩組判斷的標(biāo)簽
2.<c:if>-單分支判斷
3.<c:choose>、<c:when>、<c:otherwise> -多分支判斷
fmt格式化標(biāo)簽庫
1.fmt格式化標(biāo)簽庫 URI:http://java.sun.com/jsp/jstl/fmt
2.<fmt:formatDate value="" pattern ="" >格式化日期標(biāo)簽
3.<fmt:formatNumber value = “” pattern ="">格式化數(shù)字標(biāo)簽
MVC模式
Servlet + JSP + JavaBena(MVC)---->復(fù)雜的web程序
控制層 視圖層 模型層
處理用戶請(qǐng)求 數(shù)據(jù)顯示 數(shù)據(jù)封裝
*****************接收表單中存在文件類型數(shù)據(jù)時(shí)的接收方式,request.getparameter不可以接收文件
//1.創(chuàng)建一個(gè)磁盤文件項(xiàng)工廠對(duì)象
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
//2.創(chuàng)建一個(gè)核心解析類
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
//3.解析request請(qǐng)求,返回的是List集合,List中存放的是Fileitem對(duì)象
List list= servletFileUpload.parseRequest(request);
//4.遍歷集合,獲得每個(gè)Fileitem對(duì)象,判斷是表單項(xiàng)還是文件上傳項(xiàng)
for (FileItem fileItem:list) {
//判斷是否為表單項(xiàng)還是普通項(xiàng)
if (fileItem.isFormField()) {
//普通表單項(xiàng)
//接收表單項(xiàng)參數(shù)的值
fileItem.getFieldName();//獲取表單項(xiàng)的name
fileItem.getString(“UTF-8”);//獲取表單項(xiàng)Value的值
} else {
//文件上傳項(xiàng)
//文件上傳功能
}
文件讀取固定代碼
int len = 0;
byte[] b = new byte[1024];
while ((len = is.read(b)) != -1) {
os.write(b,0,len);
}
JSON
1.JavaScript Object Notation(JavaScript對(duì)象表示法)
2.JSON是輕量級(jí)的文本數(shù)據(jù)交換格式
3.JSON獨(dú)立于語言,具有自我描述性,更易于理解
JSON語法規(guī)則
1.數(shù)據(jù)由鍵(key)值(value)描述,由逗號(hào)分隔
2.大括號(hào)代表一個(gè)完整的對(duì)象,擁有多個(gè)鍵/值對(duì)
3.中括號(hào)保存數(shù)組,多個(gè)對(duì)象之間使用逗號(hào)分隔
JSON與字符串互相轉(zhuǎn)換
1.JSON.parse()方法將字符串裝換為JSON對(duì)象
2.JSON.stringify()方法將JSON對(duì)象轉(zhuǎn)換為字符串
@JSONField(format = “yyyy-MM-dd”)//對(duì)時(shí)間進(jìn)行注釋格式化
Calendar c = Calendar.getInstance();
c.set(2019, 0, 30, 0, 0, 0); 設(shè)置時(shí)間方式
employee.setHdate(c.getTime());
JSON和JAVA的交互
JSON.toJSONString將json進(jìn)行序列化返回的是一個(gè)字符串
JSON.parseObject將JSON轉(zhuǎn)換為JSON對(duì)象
JSON和JavaScript的交互
JSON.stringify()將json進(jìn)行序列化返回的是一個(gè)字符串
JSON.parse()將JSON轉(zhuǎn)換為JSON對(duì)象
document.getElementById //選中表單Id
$("#id") ID選擇器,指定id元素的對(duì)象
$(“標(biāo)簽”) 元素選擇器,選擇指定標(biāo)簽名的選擇器
$(".class") 類選擇器,選中擁有指定css類的元素
$(“S1,S2,SN”) 組合選擇器,對(duì)元素進(jìn)行組合
層疊選擇器
1.層疊選擇器是根據(jù)元素的位置關(guān)系來獲取元素的選擇器表達(dá)式
語法 說明
$(“ancestor descendant”) 后代選擇器
$(“ancestor>descendant”) 子選擇器
$(“prev~siblings”) 兄弟選擇器
屬性選擇器
1.屬性選擇器是根據(jù)元素的屬性值來選擇元素的選擇器表達(dá)式
語法 說明
$(“selector[attribute=value]”) 選中屬性值等于具體值得組件
$(“selector[attribute^=value]”) 選中屬性值以某值開頭的組件
("selector[attribute("selector[attribute("selector[attribute=value]") 選中屬性值以某值結(jié)尾的組件
$(“selector[attribute*=value]”) 選中屬性值包含某值得組件
$(“selector:first”) 獲取第一個(gè)元素
$(“selector:last”) 獲取最后一個(gè)元素
$(“selector:even”) 獲取偶數(shù)位置的元素
$(“selector:odd”) 獲取奇數(shù)位置的元素
$(“selector:eq(n)”) 獲取指定位置的元素
attr() 獲取或者設(shè)置元素屬性
removeAttr(name) 移除元素屬性
操作元素的CSS樣式
1.css() 獲取或設(shè)置匹配元素的樣式屬性
2.addClass() 為每個(gè)匹配的元素添加指定的類名
3.removeClass() 從所有匹配的元素中刪除全部或者指定的類
設(shè)置元素內(nèi)容
1.val() 獲取或設(shè)置輸入項(xiàng)的值
2.text() 獲取或設(shè)置元素的純文本
3.html() 獲取或設(shè)置元素內(nèi)部的HTML
jQuery事件處理方法
1.on(“click”,function) 為選中的頁面元素綁定單機(jī)事件
2.click(function) 是綁定事件的簡寫形式
3.處理方法中提供了event參數(shù)包含了事件的相關(guān)信息
Ajax的使用流程
1.創(chuàng)建XmlHttpRequest對(duì)象
2.發(fā)送Ajax請(qǐng)求
3.處理服務(wù)器響應(yīng)
1.XMLHttpRequest用于在后臺(tái)與服務(wù)器交換數(shù)據(jù),是AJAX的核心
2.XMLHttpRequest并不是W3C的標(biāo)準(zhǔn),不同瀏覽器的創(chuàng)建方式不一樣
處理服務(wù)器響應(yīng)
1.xmlHttp.onreadystatechange() 事件用于監(jiān)聽AJAX的執(zhí)行過程
2.xmlhtto.readyState屬性說明XMLHttpRequest當(dāng)前狀態(tài)
readyState = 0 請(qǐng)求未初始化
readyState = 1 服務(wù)器連接已建立
readyState = 2 請(qǐng)求已被接收
readyState = 3 請(qǐng)求正在處理
readyState = 4 響應(yīng)文本已被接收
獲取響應(yīng)體的文本
var responseText = xmlhttp.responseText;
jQuery對(duì)Ajax的支持
常用設(shè)置項(xiàng) 說明
url 發(fā)送請(qǐng)求地址
type 請(qǐng)求類型(get|post)
data 向服務(wù)器傳遞的參數(shù)
dataType 服務(wù)器響應(yīng)的數(shù)據(jù)類型
text|json|xml|html|jsonp|script
success 接收響應(yīng)時(shí)的處理函數(shù)
error 請(qǐng)求失敗時(shí)的處理函數(shù)
-----------------------當(dāng)id為lv1的屬性發(fā)生改變時(shí)自動(dòng)觸發(fā)后面的function()函數(shù)
$(function () {
$("#lv1").on(“change” , function () {
var parent = $(this).val(); //可以接收當(dāng)前id為lv1的表單選項(xiàng)發(fā)生改變時(shí)對(duì)應(yīng)選項(xiàng)的value值
})
})
正則表達(dá)式語法規(guī)則
1.[abc] a,b或c(簡單類)
2.[a-zA-Z]a到z或者A到Z,兩頭的字母包括在內(nèi)(范圍)
3.\d 數(shù)字 : [0-9]
4.X{n} X,恰好n次
5.X{n,} X,至少n次
6.X{n,m} X,至少n次,但是不超過m次
1.\D:非數(shù)字
2.\s:空白字符(如空格,\t,\n換行等)
3.\S:非空白字符(除了空白字符以外的其他都可以)
4.\w:單詞字符:[a-zA-Z_0-9]
5.\W:非單詞字符
matches方法的含義是將獲取過來的值與想匹配的正則表達(dá)式相比較,滿足返回true反之false
Java過濾器概述
過濾器的作用
1.實(shí)現(xiàn)對(duì)web資源請(qǐng)求的攔截,完成特殊的操作,尤其是對(duì)請(qǐng)求的預(yù)處理
Web 圖片 常常會(huì)忽略過濾器也會(huì)對(duì)請(qǐng)求處理完成后的一個(gè)響應(yīng)做出后處理的操作
文件
過濾器的應(yīng)用場(chǎng)景
1.Web資源權(quán)限訪問控制
2.請(qǐng)求字符集的編碼處理
3.內(nèi)容敏感字符詞匯過濾
4.響應(yīng)信息壓縮 //響應(yīng)后處理的應(yīng)用
過濾器的工作流程圖解
過濾器請(qǐng)求預(yù)處理客戶端 響應(yīng)后處理 servlet.service()過濾器的生命周期
1.web應(yīng)用程序啟動(dòng)時(shí),web服務(wù)器創(chuàng)建Filter的實(shí)例對(duì)象,以及對(duì)象的初始化
2.當(dāng)請(qǐng)求訪問與過濾器關(guān)聯(lián)的Web資源時(shí),過濾器攔截請(qǐng)求,完成指定功能
3.Filter對(duì)象創(chuàng)建后會(huì)駐留在內(nèi)存,在web應(yīng)用移除或服務(wù)器停止時(shí)才銷毀
4.過濾器的創(chuàng)建和銷毀由WEB服務(wù)器實(shí)現(xiàn)
過濾器的實(shí)現(xiàn)步驟
1.編寫java類實(shí)現(xiàn)Filter接口,并實(shí)現(xiàn)其doFilter方法
2.在web.xml文件中對(duì)filter類進(jìn)行注冊(cè),并設(shè)置所攔截的資源
過濾器鏈
1.在一個(gè)web應(yīng)用中,多個(gè)過濾器組合起來稱之為一個(gè)過濾器鏈
2.過濾器的調(diào)用順序取決于過濾器在web.xml文件中的注冊(cè)順序
引入表單樣式css文件格式
1.注冊(cè)過濾器
2.攔截映射配置CharacterEncodingFiter
config.getInitParameter(“charset”)//獲取初始化參數(shù)
Servlet中使用load-on-startup配合 init能夠在啟動(dòng)的時(shí)候就初始化init
response.sendError(404)//可以使當(dāng)前頁面變成404頁面
ServletContextWeb Web應(yīng)用服務(wù)器 監(jiān)聽器 HttpSession
ServletRequestJava監(jiān)聽器簡介
java監(jiān)聽器定義
1.Servlet規(guī)范定義的一種特殊類
2.用于監(jiān)聽ServletContext,HttpSession,ServletRequest等的創(chuàng)建
,銷毀及其屬性修改發(fā)生變化的事件
3.監(jiān)聽器可以在事件發(fā)生前后進(jìn)行一些必要的處理操作
單例模式:
1. 構(gòu)造器的私有化 private LoginCache() {
關(guān)機(jī)/重啟命令
關(guān)機(jī):shutdown -h now
重啟:shutdown -r now 或者 reboot
/bin 命令存放目錄 /opt 第三方軟件放置目錄
/boot 啟動(dòng)目錄 /root 超級(jí)用戶家目錄
/dev 設(shè)備文件存放目錄 /tmp 臨時(shí)目錄
/etc 配置文件存放目錄 /sbin 命令存放目錄
/lib 函數(shù)庫存放目錄 /proc 放置數(shù)據(jù)到內(nèi)存
/home 普通用戶家目錄 /srv 服務(wù)存放數(shù)據(jù)目錄
/mnt 系統(tǒng)掛載目錄 /usr 系統(tǒng)軟件資源目錄
/media 媒體設(shè)備掛載目錄 /var 系統(tǒng)相關(guān)文檔內(nèi)容目錄
目錄查看,切換,顯示當(dāng)前目錄
目錄查看:ls [-al] [文件或目錄名稱]
目錄切換:cd [目錄名稱]
顯示當(dāng)前目錄:pwd
路徑格式
絕對(duì)路徑:
從根目錄/開始寫起
相對(duì)路徑:
當(dāng)前目錄 .
上級(jí)目錄 …
家目錄 ~
目錄創(chuàng)建,刪除
目錄創(chuàng)建:mkdir [-p] 目錄名稱
目錄刪除:rmdir [-p] 目錄名稱
文件的創(chuàng)建
文件創(chuàng)建:touch 文件名稱
文件編輯模式 vi 文件名
a在光標(biāo)后插入 A在當(dāng)前行之后插入
i在光標(biāo)前插入 I在當(dāng)前行之前插入
o在當(dāng)前行之下插入 O在上一行插入
文件內(nèi)容查看
cat 文件名稱
文件的復(fù)制,移動(dòng),刪除
復(fù)制:cp [-r] 來源文件 目標(biāo)文件
移動(dòng):mv 來源文件 目標(biāo)文件
刪除:rm [-rf] 文件或目錄
用戶管理
查看:who
創(chuàng)建用戶:useradd [-g 群組] 用戶名
設(shè)置密碼:passwd 用戶名
刪除用戶:userdel [-r] 用戶名
群組管理
查看群組:groups[用戶名]
創(chuàng)建群組:groupadd群組名
刪除群組:groupdel群組名
用戶群組修改:usermod [-g 群組名] 用戶名
權(quán)限,角色的作用
符號(hào) 權(quán)限 對(duì)文件的含義 對(duì)目錄的含義
r 讀權(quán)限 查看文件 查看目錄
w 寫權(quán)限 修改文件 修改目錄內(nèi)容
x 執(zhí)行權(quán)限 執(zhí)行文件 進(jìn)入目錄
權(quán)限,角色的設(shè)置
修改所有者:chown[-R] 用戶名 文件或目錄
修改所有者和組:chown[-R]用戶名:組名 文件或目錄
修改所屬組:chgrp[-R] 組名 文件或目錄
權(quán)限修改:chmod[-R] xyz 文件或目錄
x所有者權(quán)限 y所屬組權(quán)限 z其他用戶權(quán)限
r:4 w:2 x:1 rwx數(shù)字總和即權(quán)限
總結(jié)
- 上一篇: linux mysql 怎么启动客服端_
- 下一篇: 那些年我面过的「六年经验」的初级工程师