精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Groovy 語法-控制結構:if,switch,for,try等知識

開發 前端
本篇內容介紹到這里就結束了,大家重點了解控制結構的相關寫法和實現邏輯以及標簽的基本聲明方式就可以了。

1. 介紹

本篇內容為Groovy學習第30篇內容,從本篇開始將會學習Groovy語法中的控制結構

例如:if/else,switch/case ,try/cathc 等等。

2. 控制結構

控制結構是指以某種順序執行的一系列動作,用于解決某個問題。最基本的控制結構分為:順序,選擇,循環。

2.1 條件控制 structures

Groovy中的條件控制語句和java中的是一樣的,也是if-else 和switch - case

2.1.1 if-else語句

Groovy支持來自Java的常用if - else語法。實現示例如下:

def x = false
def y = false

if ( !x ) {
x = true
}
println x //輸出 true


if ( x ) {
x = false
} else {
y = true
}
println x //輸出 false
println y //輸出: false

也支持常見的if else if 嵌套格式:

if ( ... ) {
...
} else if (...) {
...
} else {
...
}

2.1.2 switch-case 語句

Groovy中的switch語句向后兼容Java代碼;因此,您可以在多個匹配的情況下共享相同的代碼。

不過有一個區別是,Groovy switch語句可以處理任何類型的switch值,并且可以執行不同類型的匹配。

示例如下:

def x = 1.23
def result = ""

switch (x) {
case "foo":
result = "found foo"
// lets fall through

case "bar":
result += "bar"

case [4, 5, 6, 'inList']:
result = "list"
break

case 12..30:
result = "range"
break

case Integer:
result = "integer"
break

case Number:
result = "number"
break

case ~/fo*/: // toString() representation of x matches the pattern?
result = "foo regex"
break

case { it < 0 }: // or { x < 0 }
result = "negative"
break

default:
result = "default"
}
println result //輸出: number

Switch支持以下幾種比較:

  • 如果switch的值是類的實例,則類用例值匹配。
  • 如果switch值的toString()表示與正則表達式匹配,則正則表達式大小寫值匹配。
  • 如果switch值包含在集合中,則集合用例值匹配。這也包括范圍(因為它們是列表)。
  • 如果調用閉包返回一個根據Groovy truth為true的結果,閉包大小寫值就匹配。

如果以上任何一個都沒有被使用,那么如果case值等于開關值,則case值匹配。

當使用閉包大小寫值時,默認的it參數實際上是switch值(在我們的示例中是變量x)。

Groovy還支持如下示例所示的switch表達式:

def partner = switch(person) {
case 'Romeo' -> 'Juliet'
case 'Adam' -> 'Eve'
case 'Antony' -> 'Cleopatra'
case 'Bonnie' -> 'Clyde'
}

2.2 循環結構 Looping structures

簡單介紹幾種常見的,也是必須掌握的循環結構,例如for,while,do while結構寫法。

2.2.1 for循環語句

Groovy支持標準的Java 或 C 語言的for循環:

String message = '' //創建一個變量
//通過for循環 循環4次進行賦值操作。
for (int i = 0; i < 4; i++) {
message += 'zinyan '
}
prinlnt message //輸出:zinyan zinyan zinyan zinyan

也支持使用逗號分隔表達式的更復雜的Java經典for循環形式。例子:

def facts = []
def count = 5
for (int fact = 1, i = 1; i <= count; i++, fact *= i) {
facts << fact //<< 表示給集合添加對象哦
}
println facts //輸出:[1, 2, 6, 24, 120]

上一篇介紹的多賦值操作與for語句也可以結合使用。29. Groovy 語法-變量定義與多重賦值 (zinyan.com)

PS:多賦值操作是從Groovy 1.6 版本開始支持的。如果你的編譯器報錯,那么說明你的sdk版本太老了。

// 普通的進行一個多賦值操作。 不懂的可以看第29篇的內容。
def (String x, int y) = ['foo', 42]

// 多賦值操作和for循環結合使用:
def baNums = []
for (def (String u, int v) = ['bar', 42]; v < 45; u++, v++) {
baNums << "$u $v"
}
println baNums //輸出:['bar 42', 'bas 43', 'bat 44']

Groovy中的for循環要簡單得多,可用于任何類型的數組、集合、Map等。

// iterate over a range
def x = 0
for ( i in 0..9 ) {
x += i
}
assert x == 45

// iterate over a list
x = 0
for ( i in [0, 1, 2, 3, 4] ) {
x += i
}
assert x == 10

// iterate over an array
def array = (0..4).toArray()
x = 0
for ( i in array ) {
x += i
}
assert x == 10

// iterate over a map
def map = ['abc':1, 'def':2, 'xyz':3]
x = 0
for ( e in map ) {
x += e.value
}
assert x == 6

// iterate over values in a map
x = 0
for ( v in map.values() ) {
x += v
}
assert x == 6

// iterate over the characters in a string
def text = "abc"
def list = []
for (c in text) {
list.add(c)
}
assert list == ["a", "b", "c"]

Groovy還支持使用冒號的Java冒號變體:for (char c: text) {}的循環結構。

2.2.2 while 循環語句

Groovy像Java一樣支持常見的while{…}循環:

def x = 0
def y = 5
//創建一個while循環,每次循環會后y進行減少,直到y小于等于0的時候,結束循環
while ( y-- > 0 ) {
x++
}
println x //輸出5

要注意,while的循環方法如果創建的條件不對,是容易出現無限循環的,也就是死循環。

因為while的條件一直為true的話,while就不會退出了。

2.2.3 do..while 循環語句

和while一樣,Groovy中的do...while 循環語句和java中的實現是一樣的。

def count = 5
def fact = 1
do {
fact *= count--
} while(count > 1)

println face //輸出 :120

3 異常-Exception

異常處理,其實也是控制結構的一種。通過異常進行強制結束程序的執行順序。

Groovy沒有特殊的異常處理機制,它的Exception是和java的處理是一樣的。

3.1 try.. catch、finally語句

可以指定一組完整的try-catch-finally、try-catch或try-finally塊。

PS:如果完全不了解try塊的話,建議查詢java中異常捕獲機制try結構的使用。

簡單理解try語句就是,當某段代碼出現了異常的時候,為了避免程序崩潰。我們主動進行防護。

就是使用try語句來實現的。catch只是出現了異常后我們需要程序執行的內容。

如果沒有異常,將會自動按照順序執行代碼(ps:不會執行cath里面的代碼)。

簡單的示例如下:

try {
'zinyan'.toLong() //把一個字符串轉long也會出現數據類型轉換異常
assert false // assert斷言必須執行true,如果是false就會出現異常
} catch ( e ) {
assert e in NumberFormatException
}

如果想代碼不管是否出現異常,都進行執行。并根據異常或非異常的結果進行計算并執行。那么我們可以使用finally子句

因為無論try子句中的代碼是否拋出異常,finally子句中的代碼都將始終執行。

示例如下:

def z
try {
def i = 7, j = 0
try {
def k = i / j
assert false //never reached due to Exception in previous line
} finally {
z = 'reached here' //always executed even if Exception thrown
}
} catch ( e ) {
assert e in ArithmeticException
assert z == 'reached here'
}

3.2 多重catch子句

使用多捕獲塊(自Groovy 2.0以來),我們能夠定義幾個要被捕獲并由相同捕獲塊處理的異常:

try {
/* ... */
} catch ( IOException | NullPointerException e ) {
/* one block to handle 2 exceptions */
}

3.3 ARM Try 資源

對于自動資源管理(ARM), Groovy通常為Java 7的try-with-resources語句提供更好的替代方案。現在,遷移到Groovy并仍然希望使用舊風格的Java程序員支持這種語法:

class FromResource extends ByteArrayInputStream {
@Override
void close() throws IOException {
super.close()
println "FromResource closing"
}

FromResource(String input) {
super(input.toLowerCase().bytes)
}
}

class ToResource extends ByteArrayOutputStream {
@Override
void close() throws IOException {
super.close()
println "ToResource closing"
}
}

def wrestle(s) {
try (
FromResource from = new FromResource(s)
ToResource to = new ToResource()
) {
to << from
return to.toString()
}
}

def wrestle2(s) {
FromResource from = new FromResource(s)
try (from; ToResource to = new ToResource()) { // Enhanced try-with-resources in Java 9+
to << from
return to.toString()
}
}

assert wrestle("ARM was here!").contains('arm')
assert wrestle2("ARM was here!").contains('arm')

將會輸出以下內容:

ToResource closing
FromResource closing
ToResource closing
FromResource closing

4. 強大斷言 Power asserts

與Groovy共享assert關鍵字的Java不同,后者在Groovy中的行為非常不同。首先,Groovy中的斷言總是獨立于JVM的-ea標志執行。這使得它成為單元測試的首選。“強大斷言”的概念與Groovy斷言的行為方式直接相關。

一個強大斷言被分解為三個部分:assert [left expression] == [right expression] : (optional message)

斷言的結果與在Java中得到的結果非常不同。如果斷言為真,那么什么也不會發生。如果斷言為假,那么它提供被斷言表達式的每個子表達式的值的可視化表示。例如:

assert 1+1 == 3

將會打印下面的內容:

Caught: Assertion failed: 

assert 1+1 == 3
| |
2 false

Assertion failed:

assert 1+1 == 3
| |
2 false

at zinyan.run(zinyan.groovy:1)

當表達式更復雜時,權力斷言變得非常有趣,就像在下一個例子中:

def x = 2
def y = 7
def z = 5
def calc = { a,b -> a*b+1 }
assert calc(x,y) == [x,z].sum()

我們執行上面的代碼后,將會輸出:

Caught: Assertion failed: 

assert calc(x,y) == [x,z].sum()
| | | | | | |
15 2 7 | 2 5 7
false

Assertion failed:

assert calc(x,y) == [x,z].sum()
| | | | | | |
15 2 7 | 2 5 7
false

at zinyan.run(zinyan.groovy:5)

如果不想要像上面那樣漂亮的打印錯誤消息,可以通過更改斷言的可選消息部分來回退到自定義錯誤消息,就像下面的例子:

def x = 2
def y = 7
def z = 5
def calc = { a,b -> a*b+1 }
assert calc(x,y) == z*z : 'Incorrect computation result'

將會輸出以下錯誤內容:

Caught: java.lang.AssertionError: Incorrect computation result. Expression: (calc.call(x, y) == (z * z)). Values: z = 5, z = 5
java.lang.AssertionError: Incorrect computation result. Expression: (calc.call(x, y) == (z * z)). Values: z = 5, z = 5
at zinyan.run(zinyan.groovy:5)

5. 標簽聲明

任何語句都可以與標簽相關聯。標簽不影響代碼的語義,可用于使代碼更容易閱讀,如下例所示:

given:
def x = 1
def y = 2
when:
def z = x+y
then:
assert z == 3
zinyan:
println "zinyan.com"

在上面的示例中,given,when,then ,zinyan都是屬于標簽。這些標簽,并不會影響代碼的運行結果和邏輯。

標簽并沒有特殊的關鍵字,標簽名稱可以隨意定義。

盡管沒有更改標記語句的語義,但可以在break指令中使用標簽作為跳轉的目標。示例如下:

for (int i=0;i<10;i++) {
for (int j=0;j<i;j++) {
println "j=$j"
if (j == 5) {
break exit
}
}
exit: println "i=$i"
}

PS:雖然支持這種寫法,但是Groovy官方不推薦大家這樣使用標簽。因為容易造成誤解和歧義。

默認情況下標簽對代碼的語義沒有影響,但是它們屬于抽象語法樹(AST),因此AST轉換可以使用該信息對代碼執行轉換,從而導致不同的語義。這就是Spock框架為簡化測試所做的工作。

6. 小結

本篇內容介紹到這里就結束了,大家重點了解控制結構的相關寫法和實現邏輯以及標簽的基本聲明方式就可以了。

對于斷言和特殊的標簽使用場景,可以做一個擴展知識點的學習。一般在實際工作中用到的比較少。

以上內容的知識來源于Groovy官方文檔:Groovy Language Documentation (groovy-lang.org)的學習筆記。

責任編輯:武曉燕 來源: zinyan
相關推薦

2022-12-28 08:03:02

Groovy語法GPath

2023-01-04 08:39:34

2023-01-02 23:58:03

2010-05-07 17:06:41

Unix fsck

2021-04-20 19:23:07

語法switch-casePython

2022-12-29 08:16:45

Groovy語法coercion

2021-04-19 11:45:31

Pythonswitch編程語言

2021-04-16 15:02:38

Python 開發編程語言

2013-04-17 10:20:27

GroovyClassLoader

2024-11-04 08:20:00

try-catch編程

2024-05-10 11:43:23

C#編程

2009-07-07 14:21:00

JSP語法

2009-12-16 14:40:14

Ruby控制結構

2010-07-15 10:22:23

Perl控制結構

2010-07-16 09:50:23

Perl控制結構

2009-12-24 17:45:31

ADO查詢

2010-09-07 10:33:04

CSS

2009-12-09 10:34:54

PHP基本語法結構

2010-07-13 13:56:43

Perl foreac

2010-07-19 11:07:13

Perl控制結構
點贊
收藏

51CTO技術棧公眾號

国产一区视频在线| 欧美一区二区三区白人| 欧美日韩在线不卡一区| 中国黄色一级视频| 中文精品电影| 精品视频在线导航| 色啦啦av综合| 国产网站在线免费观看| 9久草视频在线视频精品| 国产精品扒开腿做爽爽爽视频| 欧美丰满熟妇bbbbbb| 欧美日韩破处| 欧美日韩国产综合一区二区三区| 日本精品久久久久久久久久| 91精彩视频在线观看| 国产aⅴ精品一区二区三区色成熟| 日本午夜精品理论片a级appf发布| 国产日韩欧美在线观看视频| 亚洲成人一品| 欧美zozozo| 性猛交ⅹ×××乱大交| 国产免费拔擦拔擦8x在线播放 | 亚洲国产综合视频| 91麻豆精品国产综合久久久| 欧美日韩在线看| 精品在线小视频| 另类视频在线观看| 欧美一区二区三区影院| 欧美中文字幕精在线不卡| 综合久久久久久久| 日韩精品一区二区三区丰满| 日韩一级片免费在线观看| 国产一区免费电影| 国产精品男人爽免费视频1| 丰满少妇乱子伦精品看片| 欧美高清一区| 久久久999精品视频| 中文字幕在线观看免费高清 | 欧美成人精品高清在线播放| 亚洲一级片网站| 午夜激情成人网| 疯狂欧美牲乱大交777| 日本黄色片一级片| 中国av在线播放| 专区另类欧美日韩| 欧美一级免费在线观看| wwwxxx在线观看| 欧美激情一区不卡| 日韩精品久久久| 国产高清视频在线观看| 久久老女人爱爱| 欧美日韩在线一区二区三区| 日韩a在线观看| 91麻豆高清视频| 精品在线视频一区二区| 日本天堂影院在线视频| 91污片在线观看| 免费日韩电影在线观看| 可以免费看污视频的网站在线| 久久亚洲一区二区三区明星换脸 | 欧美激情一二三| 欧美成人免费在线| 成人免费公开视频| 成人综合在线观看| 国产精品一码二码三码在线| 欧美熟女一区二区| aaa国产一区| 欧美一区二区高清在线观看| 成年人在线观看网站| 国产精品欧美综合在线| 亚洲第一页在线视频| av网站在线免费看推荐| 亚洲一二三区视频在线观看| 欧美黑人经典片免费观看| 欧美a级在线观看| 欧美最猛性xxxxx直播| 国产又大又黄又粗又爽| 亚洲伊人精品酒店| 精品1区2区在线观看| 亚洲色图14p| jvid福利在线一区二区| 久久久久999| 日韩经典在线观看| 日韩精品91亚洲二区在线观看| 国产欧美日韩中文| 亚洲经典一区二区| 久久综合久久鬼色中文字| 日本婷婷久久久久久久久一区二区| av在线首页| 一卡二卡欧美日韩| 男人揉女人奶房视频60分| 高清欧美日韩| 欧美精品一区二区三区在线播放| 国产中年熟女高潮大集合| 一区二区影视| 欧美壮男野外gaytube| 国产丝袜在线视频| 99精品视频在线观看| 一区二区国产日产| а√天堂8资源中文在线| 欧美亚洲自拍偷拍| 最新国产精品自拍| 黄色成人在线| japanese色系久久精品| 7777精品伊人久久久大香线蕉超级流畅| 亚洲欧美天堂在线| 亚洲免费福利一区| 欧美日本国产在线| 中国黄色一级视频| 99久久免费视频.com| 中文一区一区三区免费| 中文在线最新版地址| 欧美一区二区三区四区视频| jizz中文字幕| 日韩视频在线一区二区三区 | 亚洲欧美日韩中文字幕一区二区三区| 免费毛片网站在线观看| 日韩三级视频中文字幕| 国内久久精品视频| 精品国产拍在线观看| 国产午夜小视频| 日本不卡一区二区三区高清视频| 97伦理在线四区| 成年人在线观看| 亚洲成人午夜电影| 天天av天天操| 欧美成人milf| 国产精品com| 天天爽夜夜爽夜夜爽| 亚洲精品国产精华液| 日本人视频jizz页码69| 色网站在线视频| 91吃瓜在线观看| 欧美精选一区二区| 日韩福利在线视频| 久久av一区| 精品国产中文字幕| 第四色日韩影片| 日韩欧美久久一区| 日韩激情小视频| 久88久久88久久久| 亚洲一区二区三区加勒比| 欧美影视资讯| 国产亚洲欧洲高清| 亚洲 欧美 中文字幕| 91日韩在线专区| 欧美色图色综合| 香蕉久久精品| 日产日韩在线亚洲欧美| 青青草av免费在线观看| 都市激情亚洲色图| 国产福利短视频| 久久精品女人天堂| 美女三级99| 国产免费不卡| 国产一区二区久久精品| 波多野结衣视频网址| 国产精品人妖ts系列视频| 免费黄色一级网站| 久久精品国产68国产精品亚洲| 国产欧美精品一区二区| 黄色在线论坛| 日韩一级完整毛片| 精品无码人妻一区二区三区| 成人免费高清在线| 久久精品免费一区二区| 国产在线日韩精品| 国产欧美久久一区二区| 黄色免费网站在线| 精品少妇一区二区三区日产乱码 | 成人在线免费观看视频| 国产精品高潮在线| 久草中文在线| 亚洲成人网av| 69国产精品视频免费观看| 欧美高清在线精品一区| 天天干天天爽天天射| 欧美在线观看天堂一区二区三区| 99精品国产高清在线观看| 99热99re6国产在线播放| 精品性高朝久久久久久久| 中文字幕人妻一区二区三区视频 | 国产欧美中文在线| 天堂视频免费看| 欧美日本中文| 欧日韩一区二区三区| 亚洲一区二区三区久久久| 久久久久久久久爱| 国产高清在线看| 日韩午夜精品视频| 四虎成人在线观看| 亚洲欧美激情插 | 亚洲av无码乱码国产麻豆| 精品日韩视频在线观看| 国产一区在线观看免费| 大陆成人av片| 亚洲免费看av| 日韩午夜电影| 91精品国产吴梦梦| 亚洲欧美日本伦理| 成人网中文字幕| 卡通欧美亚洲| 欧美精品中文字幕一区| 欧美成熟毛茸茸| 日韩无一区二区| 国产主播第一页| 亚洲午夜精品17c| 91ts人妖另类精品系列| 26uuu亚洲综合色| 香蕉视频免费网站| 狠狠网亚洲精品| 久久久噜噜噜www成人网| 欧美在线看片| 亚洲人成人77777线观看| 欧美一区自拍| 国产传媒一区二区| 亚洲午夜国产成人| 国产精品444| 亚洲欧洲美洲av| 欧美激情第一页xxx| 婷婷在线视频观看| 亚洲欧洲xxxx| 色鬼7777久久| 亚洲丁香婷深爱综合| aa视频在线免费观看| 欧美日韩国产综合一区二区三区 | 国产精品69久久久久水密桃| 男女无套免费视频网站动漫| 国产欧美日本| 国产精品无码人妻一区二区在线| 欧美国产激情| 国产91porn| 一个色综合网| 黄色高清视频网站| 欧美mv日韩| 日本黄色播放器| 欧美黄色大片在线观看| 性欧美精品一区二区三区在线播放 | 亚洲精品9999| 色777狠狠狠综合伊人| 日本一区二区久久精品| 妖精视频一区二区三区免费观看| 国产一区二区三区四区五区在线| 粉嫩av一区二区| 丁香五月网久久综合| www.豆豆成人网.com| 99视频免费观看| 91久久精品无嫩草影院| 成人女人免费毛片| 爱高潮www亚洲精品| 国产精品jizz视频| 精品网站aaa| 精品国产一区二区三区四区精华 | 亚洲乱码国产乱码精品精| 欧洲一级在线观看| 国产一区二区三区毛片| 69久久久久| 欧美成人全部免费| 国产高清在线a视频大全 | 91浏览器在线观看| 精品国产乱码久久久久久虫虫漫画| 国产手机在线视频| 色婷婷久久久综合中文字幕| 中文av免费观看| 欧美精品免费视频| www国产一区| 亚洲国产精品va在线观看黑人| 色综合成人av| www.99久久热国产日韩欧美.com| 久久久久久久久免费视频| 欧美另类老女人| 蜜桃视频www网站在线观看| 庆余年2免费日韩剧观看大牛| 日韩中文视频| 亚洲综合社区网| 久久99精品国产自在现线| 欧美一区二区三区在线播放 | 免费激情视频在线观看| 精品一区二区在线播放| xxxx视频在线观看| 久久综合九色综合欧美就去吻 | 日韩激情在线| 国产精品日韩三级| 裸体素人女欧美日韩| 日韩在线一区视频| 成人精品免费视频| 免费在线观看a视频| 亚洲柠檬福利资源导航| 在线观看黄网站| 欧美精品v国产精品v日韩精品| 蜜臀久久久久久999| 国产一区二区av| heyzo中文字幕在线| 国产精品免费小视频| 风间由美一区二区av101| 视频在线精品一区| 国产一区二区三区四区三区四| 欧美激情第一页xxx| 国产资源在线观看入口av| 91精品久久久久久久久久另类| 成人av激情人伦小说| 亚洲看片网站| 国产一区二区你懂的| а 天堂 在线| 久久久精品黄色| 欧美亚洲天堂网| 欧美高清你懂得| 男女污污视频在线观看| 欧美日韩电影在线观看| av成人免费| 久久精品二区| 国内精品久久久久久久影视麻豆| 亚洲精品自拍网| 91碰在线视频| 动漫精品一区一码二码三码四码| 欧美日韩亚洲国产综合| 青青草视频免费在线观看| 久久久久久亚洲| 免费欧美网站| 亚洲图片在线观看| 狂野欧美性猛交xxxx巴西| 日韩少妇一区二区| 伊人色综合久久天天人手人婷| 中文字幕乱码无码人妻系列蜜桃| 日韩av影视在线| 182在线视频观看| www.成人av| 欧美激情视频一区二区三区在线播放 | 国产三级av在线播放| 精品国产精品自拍| 国精品人妻无码一区二区三区喝尿| 久久久国产精彩视频美女艺术照福利| 日本欧美日韩| 欧美一区二视频在线免费观看| 国产欧美一级| 大地资源二中文在线影视观看| 亚洲午夜激情av| 狠狠人妻久久久久久综合麻豆| 欧美裸体男粗大视频在线观看| 国产精品久久久久久av公交车| 亚洲美女搞黄| 精品亚洲porn| 国产日产精品一区二区三区的介绍| 欧美在线观看禁18| а天堂8中文最新版在线官网| 国产精品99久久久久久人 | 国产二区视频在线| 成人性生交大片免费看视频在线| 色欲人妻综合网| 欧美一级片在线观看| 91国内在线| 国产欧美一区二区视频| 亚洲乱亚洲高清| 精品夜夜澡人妻无码av| 欧美性猛交xxxx乱大交极品| 极品美乳网红视频免费在线观看 | 丝袜老师办公室里做好紧好爽 | 精品亚洲成a人| 欧美成人精品欧美一| 亚洲国产成人久久综合| 在线观看涩涩| 日韩影院一区| 狠狠色2019综合网| 妺妺窝人体色www在线下载| 精品国内二区三区| 忘忧草在线影院两性视频| 欧美午夜精品久久久久久蜜| 日本不卡在线视频| 亚洲国产精品久| 日韩激情视频在线| а√天堂资源国产精品| 大桥未久一区二区| 成人av网站免费| 亚洲成人av资源网| 麻豆网站在线看| 国产成人免费观看| 久久久精品网| 波多野结衣久久久久| 日韩精品一区二区三区中文精品| 华人av在线| 亚洲成人一区二区三区| 国产精品亚洲综合一区在线观看| 久久国产精品系列| 中文字幕av一区中文字幕天堂| 视频欧美一区| 国产视频一区二区三区在线播放| 日韩一区在线播放| 十八禁一区二区三区| 国产精品高潮在线| 国产在线日韩| 天天干天天操天天拍| 日韩亚洲欧美成人一区| 日韩伦理福利| 日韩 欧美 自拍| 久久久久久毛片| 精品毛片一区二区三区| 国产成人久久久| 极品尤物久久久av免费看| 欧美人与禽zoz0善交| 亚洲成人999|