日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

[转载] java语言程序设计-基础篇

發(fā)布時間:2025/3/11 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] java语言程序设计-基础篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考鏈接: Java中的決策制定(if,if-else,switch,break,continue,jump)

第1章,計算機(jī)、程序和Java概述?

?

?包括【每個java初學(xué)者都應(yīng)該搞懂的問題】

?http://blog.csdn.net/haobo920/article/details/5784990

?

?

1,java背景?

?

?特點(diǎn):

?

?

?一次編譯,到處運(yùn)行(Write Once, Run Anywhere.)。

?原理:

?

?

?Java源程序經(jīng)編譯后生成.class字節(jié)碼文件,.class文件由Java虛擬機(jī)(JVM)解釋執(zhí)行。不同的操作系統(tǒng)下,只要有相應(yīng)的Java字節(jié)碼解釋程序,.class文件就能夠運(yùn)行,這是Java跨平臺性的根本。

?

?

?比較:

?

?

?c和java編程與執(zhí)行的過程如下圖所示:

?

?

?

??

?

分類:?

java application:應(yīng)用程序是獨(dú)立的程序,能夠在任何有JVM的計算機(jī)上運(yùn)行。?

java applet:? ?是一種特殊的Java程序,可以在web瀏覽器中直接運(yùn)行。?

java servlet:? ?是一種特殊的Java程序,可以在web服務(wù)器上運(yùn)行,創(chuàng)建動態(tài)的web內(nèi)容?!綣ava Server Pages(JSP)則可以在服務(wù)器端生成動態(tài)網(wǎng)頁】??

2,創(chuàng)建、編譯和運(yùn)行Java程序?

?

?示例:

?

?

public class Welcome{

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

? ? ? ? System.out.println("welcome");

? ? }

}?

創(chuàng)建:?

將該文件保存為Welcome.java:注意文件名必須與公用類名完全相同,這里是public class Welcome,所以文件名必須是Welcome.java?

編譯:?

再將文件Welcome.java編譯為Welcome.class:??

?

javac? Welcome.java?

?

運(yùn)行:?

再執(zhí)行字節(jié)碼文件Welcome.class:?

?

java? ?Welcome?

注意這里不再需要擴(kuò)展名".class",JVM把命令的第一個參數(shù)當(dāng)做文件名,如果寫作 java? Welcome.class則實際上會去查找Welcome.class.class。?

?

3,Java語法特點(diǎn)?

大小寫:?

Java是大小寫敏感的。?

注釋:? ? ??

除了//和/*這兩種注釋,Java還支持一種稱為Java文檔注釋的特殊注釋,以/**開頭,*/結(jié)尾,主要用于描述類、數(shù)據(jù)和方法,它可以通過JDK的javadoc命令轉(zhuǎn)換為HTML文件。?

?

/**Title: XXXX DRIVER 3.0

*Description: XXXX DRIVER 3.0

*Copyright: Copyright (c) 2003

*Company:XXX

*

* @author Java Development Group

* @version 3.0

*/?

命名習(xí)慣: 1、包名中的字母一律小寫。如:xxxyyyzzz。

?2、類名、接口名應(yīng)使用名詞,每個單詞的首字母大寫。如:XxxYyyZzz。

?3、方法名,第一個單詞小寫,后面每個單詞的首字母大寫。如:xxxYyyZzz。

?4、變量名,第一個單詞小寫,后面每個單詞的首字母大寫。如:xxxYyyZzz。

?5、常量名中的每個字母一律大寫。如:XXX_YYY_ZZZ。?

?

JDK常用包: 1、java.lang——包含一些Java語言的核心類,如String、Math、Thread、System、Integer類等。

?2、java.awt——包含構(gòu)成抽象窗口工具集的多個類,用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUI)。

?3、java.applet——包含applet運(yùn)行所需的一些類。

?4、java.net——包含執(zhí)行與網(wǎng)絡(luò)相關(guān)操作的類。

?5、java.io——包含能提供多種輸入/輸出功能的類。

?6、java.util——包含一些實用工具類。

?

Java關(guān)鍵字: 1、用于類和接口的聲明:class, extends, implements, interface

?2、包引入和包聲明:import, package

?3、數(shù)據(jù)類型:byte, boolean, char, double, int, long, float, short

?4、某些數(shù)據(jù)類型的可選值:flase, ture, null

?5、流程控制:break, case, continue, default, do, else, for, if, return, switch, while

?6、異常處理:catch, finally, throw, throws, try

?7、修飾符:abstract, final, native, private, protected, public, static, synchronilzed, transient, volatitle

?8、操作符:instanceof

?9、創(chuàng)建對象: new

?10、引用:this, supper

?11、方法返回類型:void

?12、保留字:const, goto

?

??

4,java語法之基本數(shù)據(jù)類型和基本操作?

?

?基本數(shù)據(jù)類型分類:

?

?

?字符類型char布爾類型boolean數(shù)值類型整數(shù)類型: byte short int long 浮點(diǎn)類型: float double?

??

?

?

?基本數(shù)據(jù)類型特點(diǎn):

?

?

?Java

?不是純的面向?qū)ο蟮恼Z言,不純的地方就是這些基本數(shù)據(jù)類型不是對象。當(dāng)然初期Java的運(yùn)行速度很慢,基本數(shù)據(jù)類型能在一定程度上改善性能。

?如果你想編寫純的面向?qū)ο蟮某绦?#xff0c;用包裝器類是取代基本數(shù)據(jù)類型就可以了。

?

?

?Java中的基本數(shù)據(jù)類型不是對象,但有對應(yīng)的包裝類。

?

?

?Java中的數(shù)組是對象。

?

?

?Java中的字符串是對象。

?

?

?Java中也內(nèi)置實現(xiàn)了一些高級的數(shù)據(jù)結(jié)構(gòu),比如堆棧、集合、列表。

?

?

??

?

?

?1、基本類型的存儲空間固定:

?

?

?byte--8位,short--16位,int--32位,long--64位,float--32位,double--64位。這六種數(shù)字類型都是有符號的。

?固定的存儲空間正是Java可移植性、跨平臺的原因之一!

??

?2、Java不是純面向?qū)ο蟮?#xff1a;

?

?

?基本類型的存在導(dǎo)致了

?Java OOP的不純粹性。因為基本類型不是對象,一切皆對象是個小小的謊言。這是

?出于執(zhí)行效率的權(quán)衡。

??

?3、整數(shù)類型范圍計算公式:

??

?使用公式(-2)^(位數(shù)-1)次冪到2^(位數(shù)-1)次冪-1確定整數(shù)類型(byte、short、int、long)的范圍。

?

?

?例如,byte范圍是:(-2)^7~(2)^7-1即-128~127

??

?4、布爾類型范圍:

?

?

?char是16位Unicode字符或者說是16位無符號整數(shù),范圍從0到65535。即便如此,可以強(qiáng)制轉(zhuǎn)換非法的數(shù)據(jù),如:char c1 = (char) 10000;? char c2 = (char) -200;??梢詮亩M(jìn)制存儲的角度理解這點(diǎn)。

?

?

?

? 5、浮點(diǎn)類型的科學(xué)表示法:

??

?

? 在數(shù)學(xué)中e代表自然對數(shù)(Math.E給出了double值),而在Java中e代表10的冪次。浮點(diǎn)型的數(shù)可以這樣表示float f = 1e-27f; 代表1乘以10的負(fù)27次冪。

??

?6,浮點(diǎn)數(shù)的包裝類:

?

?

?BigInteger支持任意精度的整數(shù)。BigDecimal支持任意精度的定點(diǎn)數(shù)。

?

?

??

?

4.1 Java中的常量?

?

?1、整數(shù)常量表示方法:??

?

?

?

?十進(jìn)制

?

?

?十六進(jìn)制 ——以0x或0X開頭 八進(jìn)制 ——以0開頭 長整形 ——以L(l)結(jié)尾

?

?

?2、浮點(diǎn)常量表示方法:

?

?

?

? ??

? 單精度浮點(diǎn)數(shù)——后面加f(F)

?

?

?雙精度浮點(diǎn)數(shù)——后面加d(D)? ?注: a.小數(shù)常量的默認(rèn)類型是double型,所以float類型常量后一定要加f(F)。 b.浮點(diǎn)數(shù)常量可以用指數(shù)形式表示,如5.022e+23f?

?

?

?3、布爾常量表示方法:

?

?

?true或false

??

?4、字符常量表示方法:

?

?

?由英文字母、數(shù)字、轉(zhuǎn)義序列、特殊字符等的字符所表示,如'a'、'\t'等。

??

?Java中的字符占兩個字節(jié),是用Unicode碼表示的,也可以使用'\u'加Unicode碼值來表示對應(yīng)字符,如'\u0027'。

??

?常用的轉(zhuǎn)義字符有:

?

?

?\r——表示回車

??

?\n——表示換行

??

?\t——表示制表符,相當(dāng)于Tab鍵

??

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

??

?\'——表示單引號

??

?\”——表示雙引號

??

?\\——表示反斜杠“\”

?

?

?5、字符串常量表示方法:

?

?

?字符串常量用雙引號括起來?!癆”是一個字符串,而‘A’是一個字符。

?

?

?6、null常量表示方法:

?

?

?null常量表示對象的引用為空。

?

?

?7、自定義常量:

?

?

?final double PI=3.14159;?

?4.2 Java中的變量:?

?

?

?注意:

?

?

?1、

?不要用字符$命名標(biāo)示符,習(xí)慣上$只在機(jī)械地產(chǎn)生源碼時使用。

??

?4.3 Java算數(shù)運(yùn)算符:?

?

?

?1、除法操作符(/):

?

?

?整數(shù)除法的結(jié)果是整數(shù),

?小數(shù)部分被舍去。例如,5/2得2而不是2.5;-5/2得-2而不是-2.5。

?

?

?2、求余操作符(%):

?

?

?只有被除數(shù)是負(fù)數(shù)時,余數(shù)才是負(fù)的。例如,-7%3得-1。

?

3、短路操作符:?

&&邏輯與 也叫做短路與 因為只要當(dāng)前項為假,它就不往后判斷了,直接認(rèn)為表達(dá)式為假? ||邏輯或 也叫做短路或 因為只要當(dāng)前項為真,它也不往后判斷了,直接認(rèn)為表達(dá)式為真? ?

4.4 數(shù)據(jù)類型之間的轉(zhuǎn)換?

1、自動類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換)條件:

?a.兩種類型彼此兼容

?b.目標(biāo)類型的取值范圍要大于源類型

?

2、強(qiáng)制類型轉(zhuǎn)換(顯示類型轉(zhuǎn)換)格式:?

目標(biāo)類型 常量 = (目標(biāo)類型)值 注:

字符串可以使用加號“+”同其他的數(shù)據(jù)類型相連而形成一個新的字符串。

?

3、字符串與Int型之間的轉(zhuǎn)換:?

?

? ? ? ? //將整數(shù)值(2)轉(zhuǎn)換為字符串("2")

? ? ? ? String s = String.valueOf(2);

? ? ? ? String ss = Integer.toString(2);

? ? ? ? //將字符串("2")轉(zhuǎn)換為整數(shù)值(2)

? ? ? ? int i = Integer.parseInt(s); 字符串與double型之間轉(zhuǎn)換類似。?

?

4.5 控制臺輸入與對話框輸入?

1、控制臺輸入:?

?

? ? ? ? Scanner scanner = new Scanner(System.in);

? ? ? ? int intValue = scanner.nextInt();

? ? ? ? double doubleValue = scanner.nextDouble();

? ? ? ? String string = scanner.next();?

2、對話框輸入:??

?

import javax.swing.JOptionPane;

public class TestScanner {

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

? ? ? ? String x="Welcome to Java!";

? ? ? ? String y="Display the message!";

? ? ? ? /*

? ? ? ? ?*消息框輸入

? ? ? ? ?*/

? ? ? ? //其中x是用于提示信息的字符串,y是用于對話框標(biāo)題的字符串。

? ? ? ? String string = JOptionPane.showInputDialog(null,x,y,JOptionPane.QUESTION_MESSAGE);

? ? ? ? //其中x是用于提示信息的字符串。

? ? ? ? String string2= JOptionPane.showInputDialog(x);

? ??????

? ? ? ? /*

? ? ? ? ?*消息框輸出

? ? ? ? ?*/

? ? ? ? ?//其中x是所要顯示的字符串,y是對話框的標(biāo)題和字符串。

? ? ? ? ?JOptionPane.showMessageDialog(null,x,y,JOptionPane.INFORMATION_MESSAGE);

? ? ? ? ?//其中x是所要顯示的字符串。

? ? ? ? ?JOptionPane.showMessageDialog(null,x);? ? ?

? ? }

}

??

?

?

4.6 產(chǎn)生隨機(jī)數(shù)0~9?

?

(int)(Math.random()*10)?

?

4.7 Java的格式化輸出?

舉例:?

?

int count = 5;

double amount = 45.65;

String s=String.format("count is %d and amount is %f",count,amount);??

System.out.println(s);?

?

常用的格式描述符:?

?

?

描述符輸出舉例%b布爾值true或false%c字符‘a(chǎn)’%d十進(jìn)制整數(shù)200%f浮點(diǎn)數(shù)45.6400000%e標(biāo)準(zhǔn)科學(xué)計數(shù)法形式的數(shù)4.556000e+01%s? 字符串“Java is cool”?

?

指定寬度和精度:

?

?

舉例輸出%5c輸出字符并在它前面加4個空格%6b輸出布爾值,在false前面加一個空格,在true前面加兩個空格%5d輸出整數(shù)項,寬度至少為5。 如果項目數(shù)字的位數(shù)少于5個,前面加空格,如果項目的位數(shù)多于5個,寬度自動增加。%10.2f輸出寬度至少為10的浮點(diǎn)數(shù),包括小數(shù)點(diǎn)和小數(shù)點(diǎn)后面兩位。 這樣,小數(shù)點(diǎn)前有7位,數(shù)字前面加空格。如果小數(shù)點(diǎn)前的位數(shù)大于7,寬度自動增加。%10.2e輸出寬度至少為10的浮點(diǎn)數(shù),包括小數(shù)點(diǎn)和小數(shù)點(diǎn)后面兩位和指數(shù)部分。 如果按科學(xué)計數(shù)法顯示的數(shù)字小于10,前面加空格。%12s輸出寬度至少為12的字符串。 如果字符串少于12個字符,前面加空格。如果字符串項目多于12個字符,寬度自動增加。?

?

?

?在string中格式化:

?

?

?String s=String.format("count is %d and amount is %f",5,45.22);?

?

?

??

?

5,Java語法之程序控制流程?

5.1、if條件語句?

a.if...?

?

?

if(test)

{

? ? ...

}?

b.if...else...?

?

?

if(test)

{

? ? ...

}

else

{

? ? ...

} 可簡寫為:變量 = 布爾表達(dá)式? 語句1:語句2;

?

c.if...else if...else...?

?

?

if(test1)

{

? ? ...

}

else if(test2)

{

? ? ...

}

else

{

? ? ...

}?

?

?

5.2、switch選擇語句?

switch(表達(dá)式)

{

case 取值1:

? ? 語句塊1;

? ? break;

...

case 取值n:

? ? 語句塊n;

? ? break;

default:

? ? 語句塊n+1;

? ? break;

} 語句從匹配處開始執(zhí)行,

直到遇到break語句或是達(dá)到switch語句的末端。這種情形稱作向下貫通行為。

?

?

5.3、條件表達(dá)式?

?

y=(x>0)?1:-1;?

5.4、while循環(huán)語句?

while(條件表達(dá)式)

{

? ? 執(zhí)行語句

}?

5.5、do while循環(huán)語句?

do{

? ? 執(zhí)行語句

}while(條件表達(dá)式);?

5.6、for循環(huán)語句?

for(int i = 0; i<10;i++)

{

? ? 執(zhí)行語句

}?

5.7、增強(qiáng)for循環(huán)?

for (循環(huán)變量類型 循環(huán)變量名稱: 要被遍歷的對象)

{

? ? 執(zhí)行語句

}?

5.8、break與continue語句 a.無標(biāo)號的break語句會跳出最內(nèi)層循環(huán)(while,do,for,switch),執(zhí)行下一條語句。

?

b.無標(biāo)號的continue語句的作用是跳過當(dāng)前循環(huán)的剩余語句塊,接著執(zhí)行下一次循環(huán)。?

c.帶標(biāo)號的break或continue可以跳轉(zhuǎn)到指定的循環(huán)層次語句位置。?

?

? ? outer:

? ? ? ? for(int i = 1; i<10; i++)

? ? ? ? {

? ? ? ? inner:

? ? ? ? ? ? for(int j = 1; j<10; j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if(i*j>50)

? ? ? ? ? ? ? ? ? ? break outer;

? ? ? ? ? ? ? ? ? ? //continue outer;

? ? ? ? ? ? ? ? System.out.println(i*j);

? ? ? ? ? ? }

? ? ? ? }?

?

??

?6,Java語法之函數(shù)?

6.1、Java中函數(shù)的格式:?

?

?1、定義函數(shù)的格式

? 返回值類型 函數(shù)名(參數(shù)類型 形式參數(shù)1,參數(shù)類型形式參數(shù)2,...)

? {

? ? ? 程序代碼

? ? ? return 返回值;

? }

??

?2、函數(shù)的重載

? 函數(shù)的重載就是在一個類中可以同時存在一個以上的同名函數(shù),只要它們的參數(shù)個數(shù)或類型不同即可。

??

?

6.2、Java中函數(shù)的參數(shù)都是傳值的?

?

?眾所周知,java和C、C++中都不能通過值傳遞的方式實現(xiàn)兩個整數(shù)的交換。

??

?

?

?即下面的函數(shù)是不能成功交換兩個整數(shù)的:

?

?

?public void swap1(int a,int b)

{?

? ? //值參數(shù)傳遞不能實現(xiàn)交換兩個整數(shù)

? ? ? int t;

? ? ? t = a;

? ? ? a = b;

? ? ? b = t;

}?

??

?

?

?在C++,可以通過引用或者指針來實現(xiàn)兩個整數(shù)的交換,實質(zhì)上是通過地址傳遞來實現(xiàn)兩個整數(shù)的交換的。

??

?

?

?//c++代碼

void swap2(int &a,int &b)//引用傳遞?

{

?int temp;

?temp = a;

?a = b;

?b = temp;

}

?還可以通過指針來實現(xiàn)兩個整數(shù)的交換

??

?//C++代碼

void swap2(int *a,int *b)//指針,地址傳遞?

{

?int temp;

?temp = *a;

?*a = *b;

?* b = temp;

}?

??

?那么java中又是如何實現(xiàn)兩個整數(shù)的交換呢?

??

?

?

?方法1:通過數(shù)組方式交換(實際Java中數(shù)組也是對象,所以引用傳遞):

?

?

?這是因為java中數(shù)組的傳遞是引用傳遞,如果一定要通過一個? ?method? ?來實現(xiàn),下面的形式也許可以:

??

?

?

?void? swap(int[]? a)? ?//傳入數(shù)組,相當(dāng)于引用傳遞

{?

? ? if(a==null||a.length!=2)

? ? ? ? throw new IllegalArgumentException();

? ??????

? ? int temp=a[0];

? ? a[0]=a[1];

? ? a[1]=temp;

}??

? 方法2:構(gòu)造對象

?

?

?這也是因為對象是以引用傳遞方式:

?

?

?class Num

{

? ? int value;

}

?

?

public class TestSwap?

{

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

? ? {

? ? ? ? Num a=new Num();

? ? ? ? Num b=new Num();

? ? ? ? a.value=12;

? ? ? ? b.value=234;

? ? ? ? System.out.println("a="+a.value+" b="+b.value);

? ? ? ? swap(a,b);

? ? ? ? System.out.println("a="+a.value+" b="+b.value);

? ? }

? ? public static void swap(Num a,Num b)

? ? {

? ? ? ? Num temp=new Num();

? ? ? ? temp.value=a.value;

? ? ? ? a.value=b.value;

? ? ? ? b.value=temp.value;

? ? }

}

?

??

??

?

?

?而Integer不行,?

?

?

?1、Integer本身是值對象(value? ?object),不能修改它的內(nèi)容(初始化后不能改變其值)。實際上,串對象String都不能改變;?

? 2、就算Integer本身可以修改,自動裝箱、拆箱也不靈:?

?

?

?void swap(Integer a,Integer b)? ?

{? ?交換ao和bo中的實際數(shù)據(jù)? ?}?

int? ?a,b;?

swap(a,b);? ?//? ?自動裝箱機(jī)制生成了兩個臨時對象,不過調(diào)用返回時不能傳回a和b。?

最多只能這樣:?

Integer? ?a1=a;?

Integer? ?b1=b;?

swap(a1,b1);?

a? ?=? ?a1;?

b? ?=? ?b1;?

??

?

7,Java語法之?dāng)?shù)組?

7.1、數(shù)組的定義?

?

?數(shù)組是對象。

?如:

?

int [ ]? x = new int[100];

?或 :int x [ ]? = new int[100];(這種方式主要是為了適應(yīng)C/C++程序員)?

聲明一個數(shù)組變量:int [ ] x;并不會在內(nèi)存中給數(shù)組分配任何空間,僅創(chuàng)建一個引用數(shù)組的存儲地址。??

數(shù)組創(chuàng)建后,其元素賦予默認(rèn)值,數(shù)值型基本數(shù)據(jù)類型默認(rèn)值為0,char類型為‘\u0000’,boolean類型為false。?

7.2、數(shù)組的靜態(tài)初始化 如:int [ ] x = new int [ ] {3,4,5};

?

7.3、多維數(shù)據(jù) 如:

?int [ ][ ] xx = new int [3][ ];

?xx[0] = new int[3];

?xx[1] = new int[2];

?xx[2] = new int[3];?

?

7.4、數(shù)組的復(fù)制?

錯誤:array1 = array2; 該語句并不能將array2的內(nèi)容復(fù)制給array1,而是將array2的引用傳給了array1。使用array1 = array2 這個語句之后,array1,array2指向了同一個數(shù)組,如下圖所示:??

??

這樣,array2之前所引用的數(shù)組不能再引用了,變成了垃圾,會被JVM自動回收的。所以使用“=”是不能進(jìn)行數(shù)組的復(fù)制,它實際上是將=右邊的數(shù)組的引用傳給了=左邊的數(shù)組變量,達(dá)到兩個數(shù)組變量指向同樣的內(nèi)存地址。??

常用的數(shù)組復(fù)制的方法有以下3種: 1.使用循環(huán)語句逐個復(fù)制數(shù)組的元素(最簡單的方法)??

2.使用System類中的靜態(tài)方法arraycopy??

?

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) 參數(shù):

?src?

- 源數(shù)組。

?srcPos?

- 源數(shù)組中的起始位置。

?dest?

- 目標(biāo)數(shù)組。

?destPos?

- 目標(biāo)數(shù)據(jù)中的起始位置。

?length?

- 要復(fù)制的數(shù)組元素的數(shù)量。

?另外:arraycopy方法沒有給目標(biāo)數(shù)組分配內(nèi)存空間,復(fù)制前需要創(chuàng)建目標(biāo)數(shù)組并給它分配內(nèi)存。復(fù)制完成后,各自占有獨(dú)立空間。?

?

?

?//使用System中的靜態(tài)方法arraycopy復(fù)制數(shù)組? ?

int[] targetArray = new int[sourceArray.length];

System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);??

3.使用clone方法復(fù)制數(shù)組??

?

int[] targetArray = new int[sourceArray.length];

/*使用clone方法將int[]型數(shù)組,將sourceArray復(fù)制到targetArray

*由于clone方法返回值的類型是對象Object,所以要使用(int[])強(qiáng)制轉(zhuǎn)換為int[]

*/?

targetArray = (int[])sourceArray.clone();?

7.5、數(shù)組作為形參?

對于基本數(shù)據(jù)類型的參數(shù),傳遞的是實參的值。?

對于數(shù)組類型的參數(shù),傳遞的是數(shù)組的引用。?

7.6、Arrays類?

進(jìn)行排序:?

?

java.util.Arrays.sort(array);?

?二分查找:?

?

?

java.util.Arrays.binarySearch(array,key);?

?數(shù)組相當(dāng)判斷:?

?

?

java.util.Arrays.equals(array1,array2);?

?

8,面向?qū)ο蟮母拍?

8.1、面向?qū)ο笈e例?

?

//TestCircle.java

class Circle

{

? ? //---------------靜態(tài)數(shù)據(jù)-----------------

? ? static int numOfObjects=0;? ?//靜態(tài)數(shù)據(jù)

? ??

? ? //---------------靜態(tài)方法-----------------

? ? static int getNumOfObjects() //靜態(tài)方法,其中只能使用靜態(tài)數(shù)據(jù),不能用實例變量radius

? ? {

? ? ? ? return numOfObjects;

? ? }

? ??

? ? //---------------數(shù)據(jù)域-----------------

? ? double radius=1.0;

?

? ??

? ? //---------------構(gòu)造方法1-----------------

? ? //類如果沒有聲明構(gòu)造方法,類隱含聲明一個方法體為空的無參構(gòu)造方法,此稱之為默認(rèn)構(gòu)造函數(shù)

? ? Circle()

? ? {

? ? ? ? numOfObjects++;

? ? }

?

? ? ? ??

? ? //---------------構(gòu)造方法2-----------------

? ? //1,構(gòu)造方法可以重載

? ? //2,構(gòu)造方法無返回值,與類同名

? ? //3,構(gòu)造方法的調(diào)用是在創(chuàng)建一個對象使用new操作符時進(jìn)行的

? ? //4,構(gòu)造方法的作用是初始化對象

? ? Circle(double radius)

? ? {

? ? ? ? this.radius=radius;

? ? ? ? numOfObjects++;

? ? }

?

?

? ? double getArea()

? ? {

? ? ? ? return radius*radius*Math.PI;

? ? }

}

?

//文件中唯一的公共類:包含main方法,與文件名同名,public。

public class Main

{

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

? ? {

? ? ? ? Circle myCircle = new Circle(10);

? ? ? ? System.out.println(myCircle.getArea());

? ? }

}?

注意:?

?

1,可以把多個類放在一個文件中,但一個文件只能有一個公共類,且該公共類與文件名同名,包含main方法,如這里的TestCircle類。?

2,類的數(shù)據(jù)域如果沒有顯式賦值,會有默認(rèn)值:引用型(如String)會賦值null,數(shù)值型(如int)會賦值0,boolean型會賦值false,char型會賦值'\u0000';?

? ? ? 而Java中方法的局部變量則不會有默認(rèn)值,這時會報錯。 3,如果認(rèn)為對象不再需要,可以顯示賦值null,這樣Java虛擬機(jī)將自動回收其所占空間。??

8.2 、靜態(tài)變量、靜態(tài)方法和常量?

1,靜態(tài)變量、靜態(tài)方法都是屬于類而不是屬于對象。?

2,靜態(tài)方法只能調(diào)用靜態(tài)變量、靜態(tài)方法,不能調(diào)用實例變量和實例方法;反之,實例方法卻可以調(diào)用實例變量、實例方法、靜態(tài)變量、靜態(tài)方法。這是因為實例變量是各個對象所獨(dú)有的,直接調(diào)用就不知道是哪個對象了。?

3,常量的定義是:final double PI=3.14;它僅僅表示的是不可重新賦值。靜態(tài)常量則可以被大家直接公用:static final double PI=3.14;?

8.3、可見性修飾符(訪問控制)?

1,訪問修飾符是指private,默認(rèn)修飾符(不用修飾符),protected,public四種。這里按照了訪問修飾符所規(guī)定的被訪問范圍從小到大的順序排列。?

2,訪問修飾符是用來控制被訪問范圍的。用不同的訪問修飾符修飾一個對象是為了使該對象獲得不同的被訪問范圍。訪問修飾符所修飾的對象:可以是類的數(shù)據(jù)成員、類的方法成員或類本身和接口。訪問的方式其實也分為三種:在類內(nèi)直接訪問數(shù)據(jù)成員和調(diào)用方法成員,在類外通過類來訪問static成員或?qū)嵗龑ο髞碓L問非static成員,和以繼承的方式訪問(這里,“以繼承的方式訪問”如果深究下去,還可以包括直接訪問基類的數(shù)據(jù)成員和方法成員與對基類的方法成員進(jìn)行覆蓋以達(dá)到“多態(tài)”效果等方式)。因此,如果用簡單的乘法原理來說,可供陳述的情況就有4*3*3=36種之多。?

3,可見性修飾符用于類類的數(shù)據(jù)成員、類的方法成員或類本身和接口。但不能用于方法中的局部變量,否則引起編譯錯誤。?

4,舉個特別的例子:?

大多數(shù)情況下,構(gòu)造方法應(yīng)該是公用的。但是,如果想防止用戶創(chuàng)建類的實例,可以使用私有的構(gòu)造方法。比如,因為Math類的所有方法都是靜態(tài)的,沒有必要創(chuàng)建實例。一個解決辦法就是在類中定義一個虛設(shè)的私有的構(gòu)造方法,Math類中有一個如下所示的私有構(gòu)造方法,所以,Math類不能實例化:?

?

private Math(){

}?

?5,類本身只有兩種訪問控制:public和默認(rèn)(定義時無訪問控制符)。

?

1、public修飾的類能被所有的類訪問。

?

2、默認(rèn)修飾的類只能被同一包中所有的類訪問。

?

?

8.4、Java的可變類和不可變類?

?

1, 可變類? :當(dāng)你獲得這個類的一個實例引用時,你可以改變這個實例的內(nèi)容。 不可變類:當(dāng)你獲得這個類的一個實例引用時,你不可以改變這個實例的內(nèi)容。不可變類的實例一但創(chuàng)建,其內(nèi)在成員變量的值就不能被修改。??

2,如何創(chuàng)建一個自己的不可變類(Mutable and Immutable Objects):?

.所有成員都是private .不提供對成員的改變方法,例如:setXXXX .確保所有的方法不會被重載。手段有兩種:使用final Class(強(qiáng)不可變類),或者將所有類方法加上final(弱不可變類)。 .如果某一個類成員不是基本類型(primitive)或者不可變類,必須通過在成員初始化(in)或者get方法(out)時通過深度clone方法,來確保類的不可變。??

3,一個類的所有數(shù)據(jù)都是私有的,且沒有修改器,但它不一定是不可變類。這突出反映在2中的第四點(diǎn),可以有以下一個例子:?

?

public class Student

{

? ? private int id;

? ? private BirthDate birthDate;

?

?

? ? public Student(int id, BirthDate birthDate)

? ? {

? ? ? ? this.id = id;

? ? ? ? this.birthDate = birthDate;

? ? ? ? //深度復(fù)制:this.birthDate = new BirthDate(birthDate);

? ? }

?

?

? ? //Getters

? ? public int getId()

? ? {

? ? ? ? return id;

? ? }

? ? public? BirthDate getBirthDate()

? ? {

? ? ? ? return? birthDate;

? ? ? ? //深度復(fù)制:return new BirthDate(birthDate);

? ? }

}

?

?

public? class? BirthDate

{

? ? private int year;

? ? private int month;

? ? private int day;

?

?

? ? public BirthDate(int year, int month, int day)

? ? {

? ? ? ? this.year = year;

? ? ? ? this.month = month;

? ? ? ? this.day = day;

? ? }

?

?

? ? //Setters

? ? public void setYear(int year)

? ? {

? ? ? ? this.year = year;

? ? }

}?

?

其中,Student類所有數(shù)據(jù)均私有,且沒有Setters,但是使用getBirthDate()方法返回數(shù)據(jù)域birthDate,這是BirthDate對象的一個引用,而BirthDate有Setters,通過這個引用,可以用setYear()方法改變year,因此也就改變了Student對象的內(nèi)容,因此,也就沒有達(dá)到不可變對象的效果。?

?

要使一個類成為不可變類,必須將所有的數(shù)據(jù)域說明為私有的,并且不含返回引用“非不可變對象數(shù)據(jù)域的修改器和訪問器”。?

解決方法是:深度復(fù)制(具體見上代碼注釋部分)?

??

8.5、關(guān)鍵字this?

?

class Foo

{

? ? int i = 5;

? ? static double k = 0;

? ??

? ? void setI(int i)

? ? {

? ? ? ? this.i = i;

? ? }

? ??

? ? static void setK(int k)

? ? {

? ? ? ? Foo.k = k;

? ? }

}?

【注意】隱藏的實例變量用this來引用,隱藏的靜態(tài)變量用類名來引用。?

另外,可以使用"this(參數(shù))"形式調(diào)用其它構(gòu)造函數(shù)。?

8.6、垃圾回收: a.finalize()方法。finalize()方法的作用類似于C++中的析構(gòu)方法,其是在對象已變成垃圾即將從內(nèi)存中釋放前調(diào)用(不是在對象變成垃圾前調(diào)用)。這并不是一個可靠的機(jī)制。

?b.System.gc()。這個方法可以強(qiáng)制啟動垃圾回收器來回收垃圾。

??

?

9,String類?

9.1、String類概述?

?

?1、String是final類,不可繼承;

? 2、String類比較字符串相等時時不能用“ == ”,只能用“equals”;?

? 3、String類不可更改,StringBuilder和StringBuffer類能夠創(chuàng)建靈活可變的字符串。

??

?

9.2、String的字符串常量池?

?

?String s1="abc";

String s2="abc";

System.out.println(s1==s2);//true?

?

? ?

??

??

? String s1="abc";

String s2=new String("abc")

System.out.println(s1==s2);//false?

? ?

??

??

? String s1="abc";

String s2=s1.intern();

System.out.println(s1==s2);//true?

? ?

? 1,Java有一個初始時為空的

?字符串池,它由類 String 私有地維護(hù)。

?

?

?2,

?字符串對象的創(chuàng)建方式有兩種,如下:

?

?

?String s1 = new String("");? ?//第一種

? String s2 = "";? ? ? ? ? ? ?

? ? //第二種

??

?第一種始終不會入池的. 第二種要看情況而定(等號右邊如果是常量則入池,非常量則不入池)

? 例:

? String s3 = "a" + "b"; //"a"是常量,"b"是常量,常量+常量=常量,所以會入池.

? String s4 = s1 + "b";? ?//s1是變量,"b"是常量,變量+常量!=常量,所以不會入池.

??

?一旦入池的話,就會先查找池中有無此對象.如果有此對象,則讓對象引用指向此對象;如果無此對象,則先創(chuàng)建此對象,再讓對象引用指向此對象.

??

?

?

?現(xiàn)在考慮上述代碼,為了節(jié)省Java虛擬機(jī)的效率和內(nèi)存,在

?以String s1=“abc”的方式建立String引用聲明時,會首先去Java的字符串池中查找是否有這個對象,如果有了,則直接指向它。所以這里建立s1時,字符串池為空,所以在字符串池中建立對象“abc”,并將s1指向它,后又建立s2,會先去字符串池中查找,有了,所以也指向它,這樣,s1與s2指向的其實是同一個對象。

?

?

?而用String s2=new String("abc")方法聲明的,都不會去常量池,這時s2單獨(dú)會生成一個對象,二者指向不同。

?

?

?java字符串String的實例方法intern()【也叫字符串扣留】就是為解決這個問題而來的,但使用了intern()字符串扣留方法后能使用“==”操作符比較字符串的結(jié)果只是該方法的衍生品,它的主要目的是為了減少java程序中對同一字符串對象的重復(fù)引用(reference)從而減少內(nèi)存的使用提升效能,因為使用字符串扣留intern()實例方法就能夠確保不存在封裝有完全相同字符串的兩個String對象,因此所有的String對象封裝的字符串對象都唯一。

?

?

?當(dāng)調(diào)用

? intern 方法時,如果池已經(jīng)包含一個

?等于此 String 對象的字符串(該對象由 equals(Object) 方法確定),則返回池中的字符串。否則,將此 String 對象添加到池中,并且返回此 String 對象的引用。?

??

??

?

9.3、字符串轉(zhuǎn)換?

?

?注:

?字符串可以使用加號“+”同其他的數(shù)據(jù)類型相連而形成一個新的字符串。

??

?字符串與Int型之間的轉(zhuǎn)換:?

??

? ? ? ? ?//將整數(shù)值(2)轉(zhuǎn)換為字符串("2")

? ? ? ? String s = String.valueOf(2);

? ? ? ? String ss = Integer.toString(2);

? ? ? ? //將字符串("2")轉(zhuǎn)換為整數(shù)值(2)

? ? ? ? int i = Integer.parseInt(s); 字符串與double型之間轉(zhuǎn)換類似。

??

??

?

10,基本數(shù)據(jù)類型的包裝類?

Java為每一種基本數(shù)據(jù)類型提供類一個包裝類:?

?

基本類型包裝類charCharacterboolean BooleanbyteByteshortShortintIntlongLongfloatFloatdouble Double?

?

?

11,文本I/O?

示例代碼如下,編寫名為ReplaceText類,用新的文本字符串代替舊的文本字符串,使用方法:java ReplaceText sourceFile targetFile oldString newString?

主要使用Scanner來讀數(shù)據(jù),用PrintWriter來寫數(shù)據(jù):?

?

import java.io.*;

import java.util.*;

?

public class ReplaceText {

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

? ? ? ? // Check command line parameter usage

? ? ? ? if (args.length != 4) {

? ? ? ? ? ? System.out.println("Usage: java ReplaceText sourceFile targetFile oldStr newStr");

? ? ? ? ? ? System.exit(0);

? ? ? ? }

?

? ? ? ? // Check if source file exists

? ? ? ? File sourceFile = new File(args[0]);

? ? ? ? if (!sourceFile.exists()) {

? ? ? ? ? ? System.out.println("Source file " + args[0] + " does not exist");

? ? ? ? ? ? System.exit(0);

? ? ? ? }

?

? ? ? ? // Check if target file exists

? ? ? ? File targetFile = new File(args[1]);

? ? ? ? if (targetFile.exists()) {

? ? ? ? ? ? System.out.println("Target file " + args[1] + " already exists");

? ? ? ? ? ? System.exit(0);

? ? ? ? }

?

? ? ? ? // Create input and output files

? ? ? ? Scanner input = new Scanner(sourceFile);

? ? ? ? PrintWriter output = new PrintWriter(targetFile);

?

? ? ? ? while (input.hasNext()) {

? ? ? ? ? ? String s1 = input.nextLine();

? ? ? ? ? ? String s2 = s1.replaceAll(args[2], args[3]);

? ? ? ? ? ? output.println(s2);

? ? ? ? }

?

? ? ? ? input.close();

? ? ? ? output.close();

? ? }

}

?

?

?

?

12,類的繼承和多態(tài)?

?

12.1、Java中繼承的特點(diǎn) 1、使用extends關(guān)鍵字表示繼承,通過繼承可以簡化類的定義。

?2、Java只支持單繼承,可以有多重繼承。

?3、

子類繼承父類所有的成員變量和成員方法,但不繼承父類的構(gòu)造方法。在子類的構(gòu)造方法中可以顯示用super( args )調(diào)用父類的構(gòu)造方法,如果子類的構(gòu)造方法中沒有顯示的調(diào)用父類的構(gòu)造方法,也沒有使用this關(guān)鍵字調(diào)用重載的其他構(gòu)造方法,則在產(chǎn)生子類的實例對象時,系統(tǒng)默認(rèn)調(diào)用父類無參數(shù)的構(gòu)造方法,相當(dāng)于系統(tǒng)默認(rèn)調(diào)用了一次super()。

?【注】:一個類中如果定義了有參構(gòu)造方法而沒有重寫無參構(gòu)造方法,無參構(gòu)造方法將失效。所以我們在定義類時,只要定義了有參構(gòu)造方法,通常還要定義一個無參構(gòu)造方法。

?4、子類覆蓋父類的方法時,覆蓋方法必須和被覆蓋方法具有相同的方法名稱、參數(shù)列表和返回值類型,且子類不能使用比父類中被覆蓋方法更嚴(yán)格的訪問權(quán)限。

?

//基類Fruit

public class Fruit

{

? ? String id;? ? ? ?//1

? ? void show(){};? ?//2

}

//擴(kuò)展類Apple

public class Apple extends Fruit

{

? ? String id;? ? ? ?//3

? ? void show(){};? ?//4

}

Apple apple = new Apple();//定義apple,類型:擴(kuò)展類Apple;實例:擴(kuò)展類Apple

Fruit fruit = apple;? ? ? //定義fruit,類型:基類fruit;? 實例:擴(kuò)展類Apple。

?

fruit.id;? ? ?//1

apple.id? ? ? //3

fruit.show(); //4

apple.show(); //4 這說明:?

?

父子同名,屬性的調(diào)用:看實際類型。因為這是靜態(tài)匹配的,在編譯時就做好了。?

父子同名,方法的調(diào)用:看聲明類型。因為這是動態(tài)綁定的(多態(tài)性),需要看實際對象。?

12.2、Java中的對象轉(zhuǎn)換和instanceof?

建議把變量聲明為父類類型,這樣可以接收任何子類類型的值。?

?

Object object1 = new Circle();

Object object2 = new Rectangle();

display(object1);

display(object2);

? ??

public static void display(Object object)

{

? ? if(object instanceof Circle)

? ? {

? ? ? ? ((Circle)object).display();

? ? }

? ? else if (object instanceof Rectangle)

? ? {

? ? ? ? ((Rectangle)object).display();

? ? }

} 再比如,覆蓋Circle中的equals方法:?

?

?

? public boolean equals(Object o)

? ? {

? ? ? ? if(o instanceof Circle)

? ? ? ? {

? ? ? ? ? ? return radius == ((Circle)o).radius;

? ? ? ? }

? ? ? ? return? false;

? ? }?

?

13,Object類 Java中所有類(包括用戶自己定義的類)都自動繼承Object類,即Object類是所有類的父類。

?

13.1,Object中常用方法?

?

?public boolean equals(Object obj)比較當(dāng)前對象與obj是否為同一對象,返回值:ture/false 由于Object中如下示: public boolean equals(Object obj){?

? return (this == obj);

} 所以O(shè)bject的子類需要覆蓋該方法。public String toString()返回當(dāng)前對象的字符串表達(dá)形式: public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

} public native int hashCode()返回對象的Hash碼,Hash碼是標(biāo)志對象的唯一值。 約定:若兩個對象equals若返回的是true,則對象的散列碼必須一致。 所以需要適當(dāng)修改。 【注】native表示實現(xiàn)方法的程序設(shè)計語言不是Java。protected void finalize()throws Throwable對象銷毀時被調(diào)用。 這是Java虛擬機(jī)調(diào)用的,在自己的程序中不用書寫任何調(diào)用該方法的代碼。protected native Object clone() throws CloneNotSupportedException;創(chuàng)建并返回此對象的一個副本. 所有要進(jìn)行"克隆"的對象所屬的類必須實現(xiàn)java.lang.Cloneable接口.public final native Class<?> getClass();;返回此時的Java的運(yùn)行時類,這是Java反射機(jī)制的一個應(yīng)用。 一個類在使用時必須先裝入。 Java虛擬機(jī)在裝入類時,創(chuàng)建一個包含類信息的對象。 這個對象時Java.lang.Class的一個實例,它描述有關(guān)類的信息。?

?

Reflection是Java 程序開發(fā)語言的特征之一,它允許運(yùn)行中的 Java 程序?qū)ψ陨磉M(jìn)行檢查,或者說"自審",并能直接操作程序的內(nèi)部屬性。例如,使用它能獲得 Java 類中各成員的名稱并顯示出來。 Java 的這一能力在實際應(yīng)用中也許用得不是很多,但是在其它的程序設(shè)計語言中根本就不存在這一特性。例如,Pascal、C 或者 C++ 中就沒有辦法在程序中獲得函數(shù)定義相關(guān)的信息。

?

這里只簡略減少Class類。?

??

??

?

?

?

??

21,抽象類與接口?

抽象類 1、抽象類——包含抽象方法的類就叫做抽象類。一個抽象類中可以有一個或多個抽象方法。 2、抽象方法的寫法:abstract 返回值類型 抽象方法名 (參數(shù)列表) 3、抽象方法用abstract關(guān)鍵字修飾,只需要聲明不需要實現(xiàn)。帶有抽象方法的類必須也用abstract聲明為抽象類。 4、抽象類不能被實例化,其子類必須覆蓋所有的抽象方法后才能被實例化,否則其子類也還是抽象類。? ?接口 1、接口是一種特殊的抽象類,其中只包含常量和方法的定義,而沒有變量和方法的實現(xiàn)。 2、接口中定義的變量是全局靜態(tài)常量,默認(rèn)是用public static final標(biāo)記的。 3、接口可以繼承接口。如果一個類只實現(xiàn)了接口中定義的部分方法,那么這個類是抽象類。 4、一個類可以在繼承一個父類的同時實現(xiàn)一個或多個接口,此時extends關(guān)鍵字必須位于implements關(guān)鍵字之前。 5、設(shè)計接口的目的是為了讓類不必受限于單一繼承的關(guān)系,而可以靈活的同時繼承一些共有的特性,從而達(dá)到多重繼承的目的。? ?對象的多態(tài)性 1、子類能夠自動轉(zhuǎn)換為父類類型。如:Bird b = new Bird();? Animal a = b; 2、父類轉(zhuǎn)換為子類需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制類型轉(zhuǎn)換的前提是需要提前知道要轉(zhuǎn)換的父類引用類型對象的本來面目確實是子類類型的。 3、可以使用instanceof操作符判斷一個類是否實現(xiàn)了某個接口,或用來判斷一個實例對象是否屬于某個類。其語法格式為:對象? ? instanceof 類(或接口) 4、Object類是Java類層中的最高層類,是所有類的超類。自定義類中必須覆蓋Object類的equals方法,否則調(diào)用的是Object類的equals方法。??

??

22,異常處理?

軟件開發(fā)中一個古老的說法是:80%的工作使用20%的時間。80%是指檢查和處理錯誤所付出的努力。在許多語言中,編寫檢查和處理錯誤的程序代碼很乏味,并使應(yīng)用程序代碼變得冗長。原因之一就是它們的錯誤處理方式不是語言的一部分。盡管如此,錯誤檢測和處理仍然是任何健壯應(yīng)用程序最重要的組成部分。? Java提供了一種很好的機(jī)制,用強(qiáng)制規(guī)定的形式來消除錯誤處理過程中隨心所欲的因素:異常處理。它的優(yōu)秀之處在于不用編寫特殊代碼檢測返回值就能很容易地檢測錯誤。而且它讓我們把異常處理代碼明確地與異常產(chǎn)生代碼分開,代碼變得更有條理。異常處理也是Java中唯一正式的錯誤報告機(jī)制。? ? 第一部分? ? 異常? ?1、拋出異常。所有的標(biāo)準(zhǔn)異常類都有兩個構(gòu)造器:一個是缺省構(gòu)造器,一個是帶參數(shù)的構(gòu)造器,以便把相關(guān)信息放入異常對象中。? ? ? throw new NullPointerException();? ? ? throw new NullPointerException("t = null");? 2、如果有一個或者多個catch塊,則它們必須緊跟在try塊之后,而且這些catch塊必須互相緊跟著,不能有其他任何代碼。C++沒有這樣的限制,所以C++的異常處理處理不好就會寫得很亂,拋來拋去的。? 3、使用try塊把可能出現(xiàn)異常的代碼包含在其中,這么做的好處是:處理某種指定的異常的代碼,只需編寫一次。作業(yè)沒寫完的同學(xué)到走廊罰站去,這符合我們處理問題的方式,不用挨個地告訴。? 4、無論是否拋出異常,finally塊封裝的代碼總能夠在try塊之后的某點(diǎn)執(zhí)行。? 例子:? ? ? try {? ? ? ? ? return ;? ? ? ? ?}? ? ? finally{? ? ? ? ? System.out.print("You can't jump out of my hand!");? ? ? ? ?}? 甚至你在try塊內(nèi)用return語句想跳過去都不可以!finally內(nèi)的輸出語句還是執(zhí)行了!別想逃出我的手掌心!? 5、catch塊和finally塊是可選的,你可以只使用try。但是這么做有意思嗎?? 6、推卸責(zé)任。Java允許你推卸責(zé)任,沒有必要從相應(yīng)的try塊為每個可能的異常都編寫catch子句。Java2類庫中很多方法都會拋出異常,就是是把異常處理的權(quán)限交給了我們用戶。畢竟,Java不知道你的自行車被偷了之后,你會去報案還是會忍氣吞聲自認(rèn)倒霉,或者偷別人的自行車。我們需要這種處理異常的自由度。? 7、調(diào)用棧。調(diào)用棧是程序執(zhí)行以訪問當(dāng)前方法的方法鏈。被調(diào)用的最后一個方法在棧的頂部,它將被最先執(zhí)行完畢,然后彈出;第一個調(diào)用方法位于底部,也就是 main函數(shù)。在catch子句中使用printStackTrace()方法打調(diào)用棧信息是比較常用的定位異常的方法。 printStackTrace ()繼承自Throwable。? 8、異常的傳播。在一個方法A中,如果一個異常沒有得到處理,它就會被自動拋到調(diào)用A方法的B方法中。如果B方法也沒有處理這個異常,他就會被繼續(xù)依次向上拋,直到main方法。如果main也沒有理會它,那么異常將導(dǎo)致JVM停止,程序就中止了。你被同學(xué)揍了,先去告訴老師。老師不理你你就去告訴教導(dǎo)處主任,教導(dǎo)處主任也不管那只能告訴校長,校長還不管!沒有比他更大的了,于是你崩潰了,學(xué)業(yè)中止了…… 下面這段程序記錄了悲慘的輟學(xué)歷史:? ? ? class ExceptionDemo {? ? ? ? ? static void student() throws Exception{? ? ? ? ? ? ? teacher();? ? ? ? ? }? ? ? ? ? static void teacher() throws Exception{? ? ? ? ? ? ? schoolmaster();? ? ? ? ? }? ? ? ? ? static void schoolmaster() throws Exception{? ? ? ? ? ? ? throw new Exception();? ? ? ? ? }? ? ? ? ? public static void main(String[] args) {? ? ? ? ? ? ? try {? ? ? ? ? ? ? student();? ? ? ? ? }? ? ? ? ? catch (Exception e) {? ? ? ? ? ? ? e.printStackTrace();? ? ? ? ? }? ? ? ? ? ? ? ? ? }? ? ? }? 輸出結(jié)果是:? java.lang.Exception? ? ? at ExceptionDemo.schoolmaster(ExceptionDemo.java:9)? ? ? at ExceptionDemo.teacher(ExceptionDemo.java:6)? ? ? at ExceptionDemo.student(ExceptionDemo.java:3)? ? ? at ExceptionDemo.main(ExceptionDemo.java:13)? 可以看出函數(shù)的調(diào)用棧,一級一級地哭訴……? 9、異常的層次結(jié)構(gòu)及Error。? ? ? ? ? Object? ? ? ? ? Throwable? ? ? Error? ? ? ? Exception? Throwable繼承自O(shè)bject,Error和Exception繼承自Throwable。Error比較特殊,它對應(yīng)于我們常說的不可抗拒的外力,房屋中介的合同上總有一條,如遇不可抗拒的外力本合同中止,返還乙方押金。我不安地問:不可抗拒的外力指什么?中介回答:比如戰(zhàn)爭、彗星撞擊地球等。 對Java來說Error是指JVM內(nèi)存耗盡等這類不是程序錯誤或者其他事情引起的特殊情況。一般地,程序不能從Error中恢復(fù),因此你可以能眼睜睜地看著程序崩潰而不必責(zé)怪自己。嚴(yán)格來講,Error不是異常,因為它不是繼承自Exception。? 10、誰之錯?一般地,異常不是我們程序員的錯,不是程序設(shè)計上的缺陷。比如讀取一個重要文件,這個文件被用戶誤刪了;正上著網(wǎng)呢,網(wǎng)線被用戶的寵物咬斷了。為了程序的健壯性,我們盡量考慮出現(xiàn)可能性大的異常,并處理,但我們不能窮盡。? 11、異常的捕獲之一。catch子句的參數(shù)是某種類型異常的對象,如果拋出的異常是該參數(shù)的子類,那么這個異常將被它捕獲。也就是說被拋出的異常不會精確地尋找最匹配的捕獲者(catch子句),只要是它的繼承結(jié)構(gòu)的直系上層就可以捕獲它。 按照這個邏輯,catch(Exception e) 不就能捕獲所有的異常嗎?事實上,確實如此。但是一般地,不建議使用這種一站式的異常處理。因為這樣就丟失了具體的異常信息,不能為某個具體的異常編寫相應(yīng)的異常處理代碼,失去了異常處理的意義。從哲學(xué)角度來講,具體問題要具體分析,能治百病的萬能藥一般都是無效的保健品。? Java在此處為什么這么設(shè)計呢?因為有另一種機(jī)制的存在,請看下條分解。? 12、異常的捕獲之二。當(dāng)拋出一個異常時,Java試圖尋找一個能捕獲它的catch子句,如果沒找到就會沿著棧向下傳播。這個過程就是異常匹配。 Java規(guī)定:最具體的異常處理程序必須總是放在更普通異常處理程序的前面。這條規(guī)定再合理不過了,試想如果把catch(Exception e)放在最上面,那么下面的catch子句豈不是永遠(yuǎn)不能執(zhí)行了?如果你非要把更普遍的異常處理放在前面,對不起,通不過編譯!雖然編譯器不會這樣報錯: “It is so stupid to do like that!”……? 13、捕獲或聲明規(guī)則。如果在一個方法中拋出異常,你有兩個選擇:要么用catch子句捕獲所有的異常,要么在方法中聲明將要拋出的異常,否則編譯器不會讓你得逞的。? 方案一:處理異常? ? ? void ex(){? ? ? ? ? try{? ? ? ? ? ? ? throw new Exception();? ? ? ? ? } catch (Exception e) {? ? ? ? ? ? ? e.printStackTrace();? ? ? ? ? }? ? ? }? 方案二:拋出去? ? ? void ex() throws Exception{? ? ? ? ? throw new Exception();? ? ? }? 比較一下行數(shù)就知道了,在代碼的世界里推卸責(zé)任也是那么簡單,一個throws關(guān)鍵字包含了多少人生哲理啊……現(xiàn)實生活中我們有很多角色,兒女、父母、學(xué)生、老師、老板、員工……每個人都占了幾條??墒悄隳鼙M到所有責(zé)任嗎?按照古代的孝道,父母尚在人世就不能遠(yuǎn)行。 各種責(zé)任是有矛盾的,顧此失彼啊。? 但是這條規(guī)則有個特例。一個繼承自Exception名為RuntimeException的子類,也就是運(yùn)行時異常,不受上述規(guī)則的限制。下面的代碼完全能編譯,只不過調(diào)用之后在運(yùn)行時會拋出異常。? ? ? void ex(){? ? ? ? ? throw new RuntimeException();? ? ? }? 14、throw和thrwos關(guān)鍵字。throw用在方法體中拋出異常,后面是一個具體的異常對象。throws用在方法參數(shù)列表括號的后面,用來聲明此方法會拋出的異常種類,后面跟著一個異常類。? 15、非檢查異常。RuntimeException、Error以及它們的子類都是非檢查異常,不要求定義或處理非檢查異常。Java2類庫中有很多方法拋出檢查異常,因此會常常編寫異常處理程序來處理不是你編寫的方法產(chǎn)生的異常。這種機(jī)制強(qiáng)制開發(fā)人員處理錯誤,使得Java程序更加健壯,安全。? 16、自定義異常類型。覺得現(xiàn)有的異常無法描述你想拋出的異常,ok!Java允許你自定義異常類型,只需要繼承Exception或者它的子類,然后換上有個性的名字。? ? ? class NotEnoughMoney extends Exception {? ? ? ? ? public NotEnoughMoney() {}? ? ? ? ? public NotEnoughMoney(String msg) { super(msg); }? ? ? }? 希望大家在生活里不要拋出類似的異常。? 17、重新拋出異常。一個很無聊的話題,純粹的語法研究,實際意義不大。當(dāng)catch子句捕獲到異常之后可以重新拋出,那么它所在的方法必須聲明該異常。? ? ? void ex() throws Exception{? ? ? ? ? try {? ? ? ? ? ? ? throw new Exception();? ? ? ? ? }? ? ? ? ? catch (Exception mex) {? ? ? ? ? ? ? throw me;? ? ? ? ? }? ? ? ? ?}? 18、異常處理機(jī)制的效率。待補(bǔ)充……? 19、終止與恢復(fù)模型。異常處理理論上有兩種模型:? 一、終止模型。錯誤很關(guān)鍵且無法挽回,再執(zhí)行下去也沒意義,只能中止。“羅密歐,我們分手吧!”“好吧,朱麗葉!”? 二、恢復(fù)模型。經(jīng)過錯誤修正重新嘗試調(diào)用原來出問題的方法?!傲_密歐,我們分手吧!”“朱麗葉,我錯了!請再原諒我一次吧!”“好的,再原諒你最后一次!”? 顯然我們更喜歡恢復(fù)模型,但在實際中,這種模式是不易實現(xiàn)和維護(hù)的。? 例子:用戶輸入了非法的字符,分別按照兩種模式處理? 一、終止模型。輸出出錯信息而已,一旦用戶手一抖眼一花你的代碼就崩潰了? ? ? double number;? ? ? String sNumber = "";? ? ? try {? ? ? ? ? BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));? ? ? ? ? sNumber = bf.readLine();? ? ? ? ? number = Double.parseDouble(sNumber);? ? ? ? ?} catch (IOException ioe) {? ? ? ? ? System.err.println("some IOException");? ? ? } catch (NumberFormatException nfe) {? ? ? ? ? System.err.println(sNumber + " is Not a legal number!");? ? ? }? ? ? //System.out.println(number);? ? 二、恢復(fù)模型。小樣!不輸入正確的數(shù)據(jù)類型就別想離開!? ? ? double number = 0;? ? ? String sNumber = "";? ? ? while(true){? ? ? ? ? try {? ? ? ? ? ? ? BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));? ? ? ? ? ? ? sNumber = bf.readLine();? ? ? ? ? ? ? number = Double.parseDouble(sNumber);? ? ? ? ? ? ? break;? ? //如果代碼能執(zhí)行到這一行,就說明沒有拋出異常? ? ? ? ? } catch (IOException ioe) {? ? ? ? ? ? ? System.err.println("some IOException");? ? ? ? ? } catch (NumberFormatException nfe) {? ? ? ? ? ? ? System.err.println(sNumber + " is Not a legal number!");? ? ? ? ? }? ? ? }? ? ? System.out.println(number);? ? 直到用戶輸入正確的信息才會被該代碼放過。這是一種簡單的恢復(fù)模型的實現(xiàn),挺耐看的,我很喜歡!? ?20、try、catch、finally內(nèi)變量的作用域和可見性。? 在try塊內(nèi)定義的變量,它在catch或者finally塊內(nèi)都是無法訪問到的,并且在整個異常處理語句之外也是不可見的。 補(bǔ)充一點(diǎn)初始化:第一個例中最后一句被注釋掉了。number是在運(yùn)行時由用戶輸入而初始化的,但是在編譯時刻并沒有初始化,編譯器會抱怨的。? ?21、輸出異常信息。捕捉到異常之后,通常我們會輸出相關(guān)的信息,以便更加明確異常。? ? ? catch (Exception mex) {? ? ? ? ? System.err.println("caught a exception!");? ? ? }? 用標(biāo)準(zhǔn)錯誤流System.err比System.out要好。因為System.out也許會被重定向,System.err則不會。? 22、更高級的話題我會補(bǔ)充上的,但是我的肚子拋出了Hungry異常,我必須catch然后調(diào)用eat()方法補(bǔ)充能量。昨晚的魷魚蓋澆飯很好吃…? ? 讀取配置文件:?

?

package myapp.src;

?

import java.io.IOException;

import java.util.Properties;

?

/**

?* @author xing.gexing E-mail:xing.gexing@aliyun-inc.com

?* @version 創(chuàng)建時間:Oct 30, 2012 9:46:53 PM 類說明

?*/

public class ReadConf {

? ? private String filename;

? ? private Properties properties;

?

? ? /**

? ? ?* @param args

? ? ?*/

? ? public ReadConf() {

? ? ? ? this.filename = "config.property";

? ? ? ? this.properties = new Properties();

? ? ? ? try {

? ? ? ? ? ? properties.load(ReadConf.class.getResourceAsStream(filename));

? ? ? ? } catch (IOException e) {

? ? ? ? ? ? // TODO Auto-generated catch block

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

? ? }

?

? ? /**

? ? ?* @return the filename

? ? ?*/

? ? public String getFilename() {

? ? ? ? return filename;

? ? }

?

? ? /**

? ? ?* @param filename

? ? ?*? ? ? ? ? ? the filename to set

? ? ?*/

? ? public void setFilename(String filename) {

? ? ? ? this.filename = filename;

? ? }

?

? ? /**

? ? ?* @return the properties

? ? ?*/

? ? public Properties getProperties() {

? ? ? ? return properties;

? ? }

?

? ? /**

? ? ?* @param properties

? ? ?*? ? ? ? ? ? the properties to set

? ? ?*/

? ? public void setProperties(Properties properties) {

? ? ? ? this.properties = properties;

? ? }

?

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

? ? ? ? // TODO Auto-generated method stub

? ? ? ? ReadConf readConf = new ReadConf();

? ? ? ? System.out.println(readConf.getProperties().getProperty("endpoint"));

?

? ? }

?

}

?配置文件:?

?

?

endpoint=http://10.230.205.88:61085?

?

?

?

?…

總結(jié)

以上是生活随笔為你收集整理的[转载] java语言程序设计-基础篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

黄色大片免费播放 | 国产精品理论片在线播放 | 国产一级高清视频 | 天天操比| 色视频在线观看免费 | 日韩午夜剧场 | av日韩不卡 | 免费看成人av | 久久久国产一区二区三区四区小说 | 成人三级网站在线观看 | 亚洲黄色小说网 | 99热最新地址 | 黄色在线免费观看网站 | 国产精品一区二区果冻传媒 | 久久久亚洲国产精品麻豆综合天堂 | 久久久久久久久久福利 | 成人啊 v| 日韩在线免费视频 | 亚洲黄a| 日本在线观看视频一区 | 网站免费黄 | 国产日韩欧美在线 | 国产手机视频精品 | 国产精品不卡av | 中文字幕网址 | av超碰免费在线 | 丁香狠狠 | 欧美日韩在线免费观看 | 18久久久久久| 天天天操操操 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 欧美日韩性视频 | 在线亚洲欧美视频 | 中文字幕专区高清在线观看 | 亚洲视屏 | 成人在线视频免费看 | 精品国产乱码久久久久久久 | 1024手机基地在线观看 | 国产一区二区三区视频在线 | 99免费精品| 91视频免费网址 | 日韩欧美国产成人 | 91香蕉视频污在线 | 久久久久久久久久久黄色 | 久久国产精品影片 | 日本黄色免费电影网站 | 国产一区福利 | 日韩av伦理片 | 亚洲精品乱码久久久久 | 久久久久久久影院 | 99久久电影| 久草综合视频 | 日韩av电影国产 | 99国产精品| www99久久 | 国产午夜在线 | 911国产 | x99av成人免费| 成人在线视频观看 | 九九热免费在线观看 | 成人性生交大片免费观看网站 | 毛片一区二区 | 久久久久福利视频 | 国产精品99精品 | 成年人网站免费在线观看 | 午夜影院在线观看18 | 黄色电影网站在线观看 | 久久噜噜少妇网站 | 日韩欧美高清在线 | 五月婷婷视频在线观看 | 欧美色图亚洲图片 | 亚洲国内在线 | 精品视频久久 | 国产在线精品二区 | 精品国产视频在线观看 | 精品色综合 | 国产无遮挡猛进猛出免费软件 | 黄色a三级 | 亚洲精品久久久久久中文传媒 | 骄小bbw搡bbbb揉bbbb | 一区二区中文字幕在线播放 | 国产 日韩 在线 亚洲 字幕 中文 | 国产护士hd高朝护士1 | 在线有码中文 | 在线免费观看黄 | 久久黄色影视 | 黄色www免费 | 欧美日韩国产精品一区二区 | 免费男女羞羞的视频网站中文字幕 | 人人澡人人爱 | 在线观看视频国产 | 亚洲精品一区中文字幕乱码 | 日本韩国在线不卡 | 欧美精品天堂 | 91综合视频在线观看 | 最近更新的中文字幕 | www99久久| 国产小视频福利在线 | 欧美精品乱码久久久久久 | 在线看一级片 | 久久在草 | 中文av在线播放 | 久久黄视频| 不卡视频国产 | 亚洲一级电影视频 | 狠狠干 狠狠操 | 婷婷视频在线 | 91完整版观看 | 中文字幕av一区二区三区四区 | 免费视频18 | 成年人免费在线观看 | 亚洲天堂网站 | 久草网免费 | 国产精品一区二区免费在线观看 | av电影中文字幕在线观看 | 日本在线中文在线 | 日韩电影一区二区在线观看 | 日本精品免费看 | 日韩在线播放视频 | 九七人人干 | 玖玖视频国产 | 毛片美女网站 | 欧美乱大交 | 国产美女在线精品免费观看 | 免费观看黄 | 99热精品在线 | 婷婷在线看 | av 一区二区三区 | 2023天天干 | 亚洲欧美成人 | 特级黄色电影 | 国内亚洲精品 | 狠狠干在线 | 91丨九色丨国产丨porny精品 | 亚洲三级性片 | 丁香激情综合久久伊人久久 | 日韩在线不卡 | 国产成人亚洲在线观看 | 国产亚州精品视频 | 亚洲欧美精品一区二区 | 99精品热视频只有精品10 | 激情婷婷在线观看 | 日韩剧情 | 亚洲精品视频免费在线观看 | 91x色| 免费亚洲精品视频 | 黄色网中文字幕 | 免费国产黄线在线观看视频 | 天天操天天色天天射 | 国产啊v在线 | 亚洲一区美女视频在线观看免费 | 国产精品一区二区你懂的 | 伊人天天综合 | 欧美在线视频第一页 | 国产成人精品在线 | 九九在线免费视频 | 久久久www成人免费精品 | 亚洲天堂免费视频 | 亚洲香蕉视频 | 国产精品美女视频网站 | 高清国产午夜精品久久久久久 | 日日操夜夜操狠狠操 | 一级特黄av| 国产日产精品久久久久快鸭 | 91久久一区二区 | 久久五月天色综合 | 欧美日韩精品免费观看 | 成人在线观看免费视频 | 国产成人精品不卡 | 亚洲三级在线免费观看 | 久久a视频 | 欧美国产日韩一区 | 久久黄色免费 | 国产色视频123区 | 青青河边草手机免费 | 97在线观看免费 | av国产网站 | 91一区啪爱嗯打偷拍欧美 | 成人丁香花 | www.天天综合 | 亚洲精品国产品国语在线 | 99精品国产免费久久 | 黄色日本免费 | 婷婷深爱激情 | 日韩电影一区二区三区在线观看 | 成人a在线观看高清电影 | 欧美日韩免费在线视频 | 看黄色91 | 又黄又爽又湿又无遮挡的在线视频 | 成人免费影院 | 五月综合色 | 免费中午字幕无吗 | 国产传媒中文字幕 | 人人插人人艹 | 91精选在线观看 | 国产精品久久久久久久久软件 | 黄色av网站在线观看 | 亚洲成人av在线 | 97**国产露脸精品国产 | 久久人人精品 | 久久免费高清 | 国产特级毛片aaaaaaa高清 | 亚洲春色综合另类校园电影 | 国产精品国产三级国产不产一地 | 一区二区三区国产欧美 | 日韩精品短视频 | 狠狠色丁香久久婷婷综合五月 | 国产99久久精品一区二区永久免费 | 麻豆视屏| 91香蕉视频720p | 午夜精品一区二区三区在线播放 | 一级片免费观看 | 国产精品久久久影视 | 国产中文字幕一区二区三区 | 欧美亚洲一级片 | 日韩资源在线播放 | 欧美日韩久 | 色偷偷中文字幕 | 国产高清中文字幕 | 欧美日韩免费一区二区 | 欧美精品亚洲精品 | 色香蕉在线 | 99 久久久久 | 国产视频一区二区在线播放 | 天天干夜夜爽 | 日本一区二区三区视频在线播放 | 国产日韩欧美视频 | 久久精品视频播放 | 久久综合久久久 | 亚洲 欧美变态 另类 综合 | 激情久久伊人 | 91女子私密保健养生少妇 | av在线等| 亚洲一区二区三区在线看 | 亚洲激情影院 | 中文字幕精品一区二区三区电影 | 日韩在线观看一区 | 中文在线字幕免 | 天天操天天操天天操天天操 | 成人久久久精品国产乱码一区二区 | 亚洲欧美视频网站 | 日本在线观看一区 | 在线观看视频一区二区三区 | 91黄色在线看| 国产最新视频在线 | 操操综合 | 久久黄色小说 | 日韩免费电影 | 国产精品午夜久久久久久99热 | 激情网第四色 | 国产精品va最新国产精品视频 | 99精品久久久久 | 欧美久久综合 | 久久国产精品99国产精 | 丁香网婷婷 | 国产福利在线不卡 | 免费观看版 | 日韩一区二区免费在线观看 | 日韩欧美一区二区在线播放 | 色视频网站在线 | 亚洲人成免费 | 免费a网站 | 精品国产视频在线观看 | 91九色视频在线观看 | 中文字幕日韩电影 | 国产一区二区观看 | 久久精品免费电影 | 高清av在线| 天天射天天做 | 国产成人性色生活片 | 日韩欧美一区二区三区黑寡妇 | 777视频在线观看 | 国产高清免费视频 | 亚洲va欧美va人人爽 | 超级碰碰免费视频 | 国产麻豆精品在线观看 | 亚洲综合激情五月 | 不卡中文字幕av | 日韩在线观看视频中文字幕 | 尤物97国产精品久久精品国产 | 国产精品福利午夜在线观看 | 亚洲一区欧美激情 | 黄色软件视频大全免费下载 | 国产精品久免费的黄网站 | 高清av网| 色综合网在线 | 91插插视频 | 国产亚洲视频系列 | 99精品免费观看 | 久久老司机精品视频 | 伊人久久国产精品 | 精品国产视频在线 | 四虎国产精品成人免费4hu | 97国产精品视频 | 国产亚洲精品福利 | 日韩免费av网址 | 久久艹在线 | 久草视频手机在线 | 国产精品久久精品国产 | 久久久人人爽 | 久久免费精彩视频 | 人人爱爱人人 | 久操视频在线播放 | www.av免费| 精品国产99 | 久久久久麻豆 | 亚洲精品免费观看 | 国际精品网| 国产成人精品三级 | 奇米7777狠狠狠琪琪视频 | 欧美久久久一区二区三区 | 成人中文字幕在线 | 最近2019好看的中文字幕免费 | 亚洲美女免费视频 | 九九精品视频在线看 | 一区二区激情 | 91av在线免费看 | 97超碰在线免费观看 | 免费黄色在线 | 国产精品久久99综合免费观看尤物 | 久久在线播放 | 国产一级特黄毛片在线毛片 | 日韩在线三区 | 成人黄色国产 | 亚洲砖区区免费 | 亚洲欧美va | 天天摸天天舔天天操 | 精品国产一区二区三区蜜臀 | 国产五月色婷婷六月丁香视频 | 亚洲专区在线 | 国产精品久久久久久高潮 | 国产成人一区二区三区影院在线 | 久久久久国产精品一区二区 | 午夜精品一区二区三区在线视频 | 色香天天| 日韩在线免费观看视频 | 色婷婷免费视频 | 精品在线观 | 久久久久一区 | 日日操操操 | 久久99久国产精品黄毛片入口 | 99久久爱 | 中文av网| 中文字幕欧美日韩va免费视频 | 91精品小视频 | 91大神免费在线观看 | 美女福利视频一区二区 | 成人在线观看资源 | 91日韩在线视频 | 久久国产精品久久w女人spa | 成人午夜性影院 | 日韩电影在线观看一区 | 欧美一级高清片 | 最新中文字幕在线播放 | 婷婷色站 | 欧美日韩1区 | 九九九热精品免费视频观看 | 欧美性天天 | 欧美激情在线看 | 黄色网址中文字幕 | 婷婷成人在线 | 国产欧美久久久精品影院 | 黄色动态图xx | 精品视频成人 | 亚洲综合最新在线 | 日韩大片免费在线观看 | 日韩电影在线观看一区二区 | 一区二区欧美激情 | 亚洲 欧美变态 另类 综合 | www.色的| 国产视频中文字幕在线观看 | 欧美成人区 | 欧美日韩中字 | 麻豆果冻剧传媒在线播放 | 免费不卡中文字幕视频 | 麻豆视频在线观看免费 | 久久高清免费视频 | 久久精品国产免费看久久精品 | 97夜夜澡人人双人人人喊 | 麻豆国产视频下载 | www五月天com | 色综合天天综合在线视频 | 久久精品三级 | 偷拍精偷拍精品欧洲亚洲网站 | 探花视频网站 | 色在线免费观看 | 日本一区二区三区视频在线播放 | 91精品啪啪 | 国产精品免费不卡 | 亚洲理论片 | 欧美激情综合五月色丁香 | 国产精品激情 | 国产一区二区在线精品 | 五月婷婷激情五月 | 亚洲高清网站 | 日日夜夜精品免费观看 | 人人爱夜夜操 | 国产精品粉嫩 | 亚洲电影自拍 | 四虎影视成人精品 | 国产精品一区二区在线播放 | av免费在线播放 | 黄色日本免费 | 欧美激情在线看 | 国产精品久久久久高潮 | 娇妻呻吟一区二区三区 | 国产精品一区欧美 | 日韩成人高清在线 | 日韩av免费在线看 | 激情综合色综合久久 | 国产精品久久片 | 国产婷婷一区二区 | 精品国产美女 | 国产精品欧美一区二区 | 国产精品热 | 天天艹天天干天天 | 五月亚洲综合 | 亚洲伦理一区二区 | 毛片激情永久免费 | 在线视频欧美精品 | 五月激情久久 | 国产xxxxx在线观看 | 日韩在线免费电影 | 欧美一区二区在线刺激视频 | 亚洲高清在线视频 | 波多野结衣视频网址 | 久久精品视频免费观看 | 在线三级播放 | 免费高清男女打扑克视频 | 亚洲精品理论片 | 久久99精品久久久久久三级 | 久久欧美在线电影 | 国产又黄又硬又爽 | 天天干天天干天天射 | 麻豆视频免费入口 | 在线免费观看国产视频 | 久久五月网 | 国产福利精品视频 | 成人免费观看视频网站 | 1024久久| 亚洲精品视频在线播放 | www国产亚洲精品 | 丁香视频五月 | 69精品视频 | 91理论电影 | 操久| 亚洲精品国产精品国 | 国产偷在线 | 国产免费一区二区三区最新6 | www.久艹 | 久草精品视频在线观看 | 欧美一区免费在线观看 | 久久久久国产精品免费网站 | 五月婷婷激情网 | 国产精品对白一区二区三区 | 中文字幕在线免费看 | 亚洲影视九九影院在线观看 | av丝袜美腿| 特级黄色电影 | 久久免费福利视频 | 色综合久久天天 | 国产精品成人a免费观看 | 日韩电影精品 | 久久久这里有精品 | 91一区一区三区 | 最新日韩视频在线观看 | 成人欧美一区二区三区在线观看 | caobi视频| 色国产视频 | 伊色综合久久之综合久久 | 亚洲人成在线观看 | 激情五月婷婷综合网 | 日韩69视频 | 久久婷婷一区二区三区 | 97在线视 | 国产天天综合 | 色激情五月 | 97精品国产手机 | 手机在线永久免费观看av片 | 久久国产精品免费看 | 激情综合站 | 色婷婷av一区二 | 美女网站视频免费黄 | 久久国产精品精品国产色婷婷 | 久久久国产精品视频 | 精品福利av| 五月天天色 | 日韩精品视频免费在线观看 | 久久99亚洲精品久久 | 亚洲高清视频在线观看 | www.黄色在线 | 成人在线视频一区 | 成人在线视频网 | 一本一本久久a久久精品综合妖精 | 亚洲国产一区在线观看 | 欧美专区国产专区 | 手机成人av | 亚洲天堂网在线观看视频 | 激情图片久久 | 四虎永久精品在线 | 欧美成人黄色 | www.色com| 丝袜美女在线 | 97超碰国产精品女人人人爽 | 免费观看视频黄 | 999色视频 | 欧美国产日韩久久 | 免费日韩 精品中文字幕视频在线 | 麻豆久久久久久久 | 国产五月色婷婷六月丁香视频 | 美女视频永久黄网站免费观看国产 | 婷婷五月色综合 | 国产黄色大全 | 亚洲一级影院 | 少妇按摩av | 欧美做受xxx| 欧美一区二区在线免费看 | 91精品国产电影 | 黄色成人影院 | 日韩av影视在线 | 最近久乱中文字幕 | 日韩三级.com | 免费亚洲成人 | 激情 一区二区 | 97在线看片 | 久久综合偷偷噜噜噜色 | sesese图片 | 岛国大片免费视频 | 成人久久免费 | 亚洲精品视频在线免费 | av网站在线免费观看 | 免费一区在线 | 中文乱码视频在线观看 | 91精品无人成人www | 午夜精品久久久久久久99水蜜桃 | 成年人电影毛片 | 黄色大全在线观看 | 国产午夜精品免费一区二区三区视频 | 91超在线| 日韩免费视频播放 | 色噜噜噜 | 亚洲精品99久久久久中文字幕 | 欧美性性网 | 免费av成人在线 | 婷婷在线观看视频 | 国产999在线 | 久久国产精品一区二区三区 | 久久久久福利视频 | 97夜夜澡人人爽人人免费 | 国产欧美综合视频 | 久久er99热精品一区二区三区 | 国产手机精品视频 | 四虎在线观看视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 丁香六月在线 | 欧美日韩综合在线观看 | 国产精品免费久久久久久久久久中文 | 一区二区三区播放 | 免费在线观看成人小视频 | 在线播放第一页 | 色就色,综合激情 | 97成人在线观看视频 | 九九久 | 在线视频日韩欧美 | 亚洲永久精品在线观看 | www.天天干 | 日韩在线 | 午夜视频在线观看一区二区 | 搡bbbb搡bbb视频 | www国产亚洲精品久久网站 | 天天操夜夜想 | 国产在线视频资源 | 国产一级大片在线观看 | 91超国产 | 精品中文字幕在线观看 | 国产在线自 | 日韩国产欧美在线视频 | 久艹在线观看视频 | 狠狠色丁香婷婷综合久小说久 | 国产精品美女久久久久久久 | 在线看成人av | 青青河边草免费观看完整版高清 | 99久高清在线观看视频99精品热在线观看视频 | 久久精品久久久久 | 久久99精品一区二区三区三区 | 精品亚洲午夜久久久久91 | 日韩成人高清在线 | 久久99爱视频 | 夜夜骑日日 | 国产精品久久久久av | 麻豆 91 在线 | 六月丁香激情综合 | 亚洲黄色av网址 | 色婷婷国产在线 | 国产a视频免费观看 | 久久久精品高清 | 99热精品在线 | 综合色久 | 国产精品久久久久一区二区三区共 | 久久国产片 | 欧美日韩国产一区二区在线观看 | 四虎国产精品免费 | 男女拍拍免费视频 | 天干啦夜天干天干在线线 | 99视屏 | 欧美 日韩 成人 | 精品久久久久久一区二区里番 | 18女毛片| 欧美色噜噜 | 最新av网站在线观看 | 91九色porn在线资源 | 欧美色插 | 日韩欧美在线高清 | 久久久久久久久久毛片 | 日日碰狠狠躁久久躁综合网 | 国产精品嫩草69影院 | 日韩高清一区 | 国产精品系列在线 | 久久综合之合合综合久久 | 成人羞羞视频在线观看免费 | av一区二区在线观看中文字幕 | 久久久亚洲电影 | 97香蕉久久国产在线观看 | 丁香伊人网 | 激情一区二区三区欧美 | 久艹在线观看视频 | 中文在线a∨在线 | 亚洲精品在线视频网站 | 中文字幕一区二区三区精华液 | 精品专区一区二区 | 国产精品欧美久久 | 午夜精品麻豆 | 成人黄在线 | 国产精品激情 | www黄色com| 韩日色视频 | 国产小视频免费观看 | 日韩色在线| 久久社区视频 | 最近日本字幕mv免费观看在线 | 六月色 | 亚洲国产午夜视频 | av在线播放快速免费阴 | 日本精品久久久一区二区三区 | 992tv人人网tv亚洲精品 | 精品国内自产拍在线观看视频 | 亚洲乱码一区 | 视频成人 | 一区二区不卡在线观看 | 天堂网一区二区三区 | 亚洲精品中文字幕视频 | 免费大片av | 久久99久久99精品中文字幕 | 91精品天码美女少妇 | 国产一区二区三区四区大秀 | 在线播放国产一区二区三区 | 欧美成人免费在线 | 在线免费观看国产精品 | 国产成人一区在线 | 欧美激情综合色 | 91黄色免费网站 | 国产精品免费小视频 | 亚洲精品永久免费视频 | 黄网在线免费观看 | 日一日干一干 | 欧美久久久久久久久 | 手机av在线不卡 | 国产亚洲精品久久久久久移动网络 | 亚洲欧美色婷婷 | 中文字幕专区高清在线观看 | 久久超级碰视频 | 精品麻豆| 国产精品久久二区 | 操操综合网 | 综合黄色网 | 伊人狠狠色丁香婷婷综合 | 91在线小视频 | 国产黄大片在线观看 | 四虎在线免费观看 | 2019中文字幕第一页 | 伊人色**天天综合婷婷 | 亚洲美女视频网 | 亚洲欧洲一级 | 国产精品久久久久一区二区 | 色婷婷啪啪免费在线电影观看 | 久久视频在线 | 欧美成人精品欧美一级乱黄 | 国产精品色在线 | 日韩一区二区免费视频 | 精品中文字幕在线观看 | 免费在线观看成人小视频 | 欧美日韩三级在线观看 | 天天激情天天干 | 国产精品激情在线观看 | 国内少妇自拍视频一区 | 欧美一级日韩免费不卡 | 一级黄色片毛片 | 最新午夜电影 | 在线观看av的网站 | h动漫中文字幕 | 国产精品尤物 | 99精品在线直播 | 国产在线观看高清视频 | 99久高清在线观看视频99精品热在线观看视频 | 久久综合亚洲鲁鲁五月久久 | 成人毛片网 | 国产999精品久久久久久绿帽 | 日本大片免费观看在线 | 久久国产精品视频免费看 | 欧洲不卡av | 中文字幕久久精品亚洲乱码 | 综合激情婷婷 | 国产第一页在线观看 | 国产99久久精品一区二区永久免费 | 亚洲精品国产精品99久久 | 成人欧美一区二区三区在线观看 | 色人久久| 国产人免费人成免费视频 | 五月开心婷婷网 | 国产成人a亚洲精品 | 色多多视频在线观看 | 国产午夜三级一区二区三桃花影视 | 成人午夜片av在线看 | 最近更新的中文字幕 | 国产在线国偷精品产拍 | 欧美日韩视频在线观看免费 | 麻豆手机在线 | www国产精品com | 偷拍久久久| 久久精品79国产精品 | 在线国产精品视频 | 黄色毛片在线 | 亚洲区视频在线 | 国产精品手机视频 | 天天做天天爱夜夜爽 | 色资源网免费观看视频 | 天天色天天爱天天射综合 | 五月天丁香亚洲 | 国产在线观看地址 | 欧美成人h版电影 | 97成人精品视频在线播放 | av一区在线 | www.色婷婷 | 久久国产精品99国产精 | 97超碰免费在线观看 | 韩日精品在线 | 91自拍91| 国产精品原创av片国产免费 | 在线看成人| 国产成人精品久久二区二区 | 四虎成人av | 综合在线观看 | 欧美一二三视频 | 国产淫片免费看 | 女人魂免费观看 | 亚洲伊人婷婷 | 亚洲 中文 欧美 日韩vr 在线 | 久久看片 | 午夜影院在线观看18 | 色婷婷六月天 | 日韩精品久久久久 | 一区二区精品视频 | 国产又粗又猛又爽 | 亚洲综合一区二区精品导航 | 国产黄色片一级 | 国产成人免费在线 | 国产伦精品一区二区三区免费 | 天天操天天干天天玩 | 麻豆免费视频观看 | 99色视频 | 狠狠狠色丁香综合久久天下网 | 射射射av | 九九久久成人 | 久久久久久久免费看 | 最新日韩在线观看 | 久久久www成人免费精品 | 日韩av进入 | 中文字幕精品一区二区精品 | 久久国产精品99久久久久 | 色综合久久88色综合天天免费 | 国产午夜精品一区二区三区四区 | 91久久爱热色涩涩 | 国内丰满少妇猛烈精品播放 | 久久这里精品视频 | 久草在线在线视频 | 国内精品久久久久久久久久 | 在线播放亚洲激情 | 久久免费播放 | 五月色综合 | 亚洲高清免费在线 | 免费看一及片 | 99在线精品免费视频九九视 | 久久图| 婷婷 综合 色 | 国产精品96久久久久久吹潮 | 日韩av一区在线观看 | 人人艹人人 | 91精品国产91久久久久 | 色综合激情久久 | 国产资源站 | 操操操干干干 | 欧美日韩在线观看不卡 | 国产第一页福利影院 | 在线日韩视频 | 99精品偷拍视频一区二区三区 | a资源在线 | 久久久精品免费观看 | 国产精品久久久久久久久久久杏吧 | 又黄又爽又湿又无遮挡的在线视频 | 久久一二三四 | 日韩中文字幕视频在线 | 日韩在线视频一区 | 奇米7777狠狠狠琪琪视频 | 波多野结衣精品 | 国产精品免费久久 | 99中文字幕在线观看 | 国产精品久久久久一区 | 午夜成人免费电影 | 九色精品 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 综合天堂av久久久久久久 | 久久影视精品 | 黄污网 | 免费看片成年人 | 字幕网资源站中文字幕 | 亚洲国产精品99久久久久久久久 | 狠狠狠狠狠狠狠 | 精品视频免费 | 999视频在线播放 | 国产午夜三级一区二区三桃花影视 | 999久久久免费精品国产 | 91精品欧美 | 在线色吧 | 欧美最猛性xxxx | 黄色日本片 | 国产日韩精品一区二区三区在线 | 探花视频免费观看高清视频 | 特黄色大片 | 日韩av一区在线观看 | 国产一区二区不卡视频 | 久青草视频 | 91完整版在线观看 | 日韩欧美成人网 | 免费在线电影网址大全 | 五月天久久久 | 色综合久久五月天 | 国产女人18毛片水真多18精品 | 综合久久久久 | 欧美日视频 | 日韩欧美国产免费播放 | 国产一级三级 | 精品国产一区二区三区在线观看 | 91高清不卡 | 色婷婷天天干 | 久久久精品 一区二区三区 国产99视频在线观看 | 天天综合成人 | 国产r级在线观看 | 久久亚洲美女 | 亚洲精品视频网址 | 91精品在线播放 | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲电影在线看 | 日韩视频二区 | 久久久国产精品视频 | 国产网红在线 | 国产成免费视频 | 国产中文欧美日韩在线 | 爱av在线网 | 国产精品乱码久久久久久1区2区 | 九色最新网址 | 国产淫片免费看 | www.色com| 久久久久久国产精品亚洲78 | 99色99| 精品在线免费观看 | 国产精品视频 | 国产精品色在线 | 在线观看 国产 | www黄色av | 日本中文字幕在线视频 | 成人羞羞免费 | 国产成人久久av | 成人在线观看你懂的 | 久久高视频 | 亚洲精品中文在线 | 国产中文字幕在线免费观看 | 97香蕉视频 | 欧美一级片播放 | 91精品国产三级a在线观看 | 欧美污污网站 | 在线播放第一页 | 国产精品成人国产乱 | 国产一区二区三区 在线 | 久久久精品国产免费观看一区二区 | 日韩午夜电影网 | 日韩精品久久久免费观看夜色 | 91精品久久久久久久99蜜桃 | 欧美成年黄网站色视频 | 日韩av不卡播放 | 一级黄色免费 | 手机在线观看国产精品 | 免费亚洲电影 | 日韩午夜高清 | 国产精品麻豆99久久久久久 | 久久免费视频这里只有精品 | 777久久久 | 欧美性生活免费 | 99精品国产在热久久下载 | 欧美精品一区二区在线播放 | 国产精品嫩草影院123 | 欧美视频99 | 香蕉视频在线观看免费 | 精品一二三四五区 | 午夜精品中文字幕 | 久久久久久国产一区二区三区 | 国产一区自拍视频 | 亚洲九九九在线观看 | 久久久久久久久久电影 | 91精品免费 | 日韩精品一二三 | 激情深爱.com | 亚洲国产色一区 | 一二三区av | 婷婷五月在线视频 | 天天激情综合网 | 精品国产欧美一区二区 | 91色九色| 国产精彩在线视频 | 日本久久片 | 波多在线视频 | 一区二区三区www | 黄色大片免费播放 | 日本中文字幕在线观看 | 亚洲欧美视屏 | 婷婷激情在线观看 | 国产精品一区二区麻豆 | 97超碰中文| 天天爱av导航 | 九九九九九国产 | 国产精品九九九 | 超碰av在线播放 | 国产伦理一区二区 | 成人免费视频播放 | 天天色天天爱天天射综合 | 99九九视频 | 精品999在线观看 | 99视频在线观看一区三区 | 欧美日韩视频在线观看一区二区 | 免费观看全黄做爰大片国产 | 国产精品密入口果冻 | 中文理论片 | 人人爽人人爽av | 欧美性久久久久久 | 久久99精品国产91久久来源 | 91日韩国产 | 国产精选在线观看 | 天天色 天天 | 91在线蜜桃臀 | 91在线在线观看 | 91成人精品一区在线播放69 | 色五月激情五月 | 视频在线精品 | 韩国av免费在线 | 久草在线观看资源 | 国产免费一区二区三区网站免费 | 狠狠五月天 | 激情综合交 | 欧洲视频一区 | 美女视频国产 | 久久99精品国产99久久 | 最新日韩在线观看 | 日本中文在线观看 | 亚洲精品高清在线观看 | 国产成人av电影在线观看 | 日韩在线免费不卡 | 国产亚洲精品久久久久久久久久 | 日韩成人av在线 | 99热这里精品 | 国产一级大片在线观看 | 免费观看第二部31集 | 91丨九色丨91啦蝌蚪老版 | 亚洲三级在线播放 | 天天操天天添天天吹 | 91麻豆精品91久久久久同性 | 国产亚洲无 | 久久精品99国产精品酒店日本 | 在线视频欧美日韩 | 天天摸天天弄 | 欧美日韩精品网站 | 国产伦理久久 | 日日爽天天爽 | 国产一区免费 | 日韩欧美精品一区二区 | 欧美亚洲国产一卡 | 成人福利在线播放 | 欧美成人h版 | 中文字幕在线观看不卡 | 国产艹b视频 |