精品欧美一区二区三区在线观看 _久久久久国色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电影一区| 亚洲第一网站男人都懂| 干日本少妇首页| 国产精品三区在线| 国产精品99无码一区二区| 亚洲精品无吗| 555www色欧美视频| 久久婷婷国产精品| 制服丝袜在线播放| 久久九九国产精品| 北条麻妃高清一区| 这里只有久久精品视频| 国产精品chinese| 中文字幕国产亚洲| 精品视频站长推荐| 91麻豆精品一二三区在线| 岛国精品视频在线播放| 成人在线免费观看网址| 国产午夜视频在线观看| 成人av电影免费在线播放| 国产精品吴梦梦| aaa人片在线| 欧美成人一品| 日韩一区在线视频| 夜夜春很很躁夜夜躁| 欧美电影在线观看完整版| 日韩三级电影网址| 日本中文字幕精品—区二区| 欧美电影免费观看高清完整| 亚洲va天堂va国产va久| 国产资源第一页| 免费观看在线午夜影视| 欧美国产日韩a欧美在线观看| 国产精品一区二区欧美| h狠狠躁死你h高h| 久久精品国产色蜜蜜麻豆| 国产精品999999| 西西44rtwww国产精品| 韩国欧美一区| 久久99精品久久久久久琪琪| 麻豆网址在线观看| 日韩一区电影| 中文字幕欧美在线| 天天躁夜夜躁狠狠是什么心态| 三级小说欧洲区亚洲区| 日韩av影片在线观看| 国产午夜在线一区二区三区| 综合激情网...| 日韩亚洲欧美一区| 日韩久久久久久久久久久| 欧美综合影院| 这里只有精品视频在线观看| 五月天婷婷影视| 亚洲91在线| 日韩无一区二区| 国产chinesehd精品露脸| 欧美在线在线| 精品99一区二区三区| 国产伦精品一区二区三区88av| 日韩一区二区三区精品| 欧美xfplay| 亚洲第一天堂网| 狠狠网亚洲精品| 成人免费淫片aa视频免费| 一本久道久久综合无码中文| 另类综合日韩欧美亚洲| 91在线观看免费观看| 国产成人毛毛毛片| 99热99精品| 欧美重口乱码一区二区| a天堂中文在线88| 亚洲色图在线播放| 国产v片免费观看| 黑人巨大精品欧美一区二区桃花岛| 色婷婷久久综合| 国产无遮挡猛进猛出免费软件 | 99热一区二区| 国产免费av国片精品草莓男男| 日韩欧美一二三| 日本护士做爰视频| 激情五月综合| 久久综合电影一区| 圆产精品久久久久久久久久久| 久久狠狠婷婷| 成人中文字幕+乱码+中文字幕| 精品国产av一区二区三区| 99热精品一区二区| 亚洲一二三区在线| 黄色美女视频在线观看| 91成人在线观看喷潮| 污污视频网站在线| 先锋影音国产精品| 久久精品99久久久久久久久| 国产中文字字幕乱码无限| 日韩高清不卡一区| 91久久精品一区二区别| 国产日本在线| 亚洲综合色丁香婷婷六月图片| 国产男女无遮挡| 国产电影一区二区| 亚洲色图在线观看| 激情五月婷婷小说| 日韩国产精品久久久| aaa级精品久久久国产片| 精品久久久久一区二区三区| 亚洲伦在线观看| 久久久久久久片| av成人综合| 日韩有码在线观看| 中文字幕国产在线观看| 成人综合婷婷国产精品久久蜜臀 | 国内综合精品午夜久久资源| 国产精品欧美一区二区| 天天爱天天干天天操| 亚洲色图.com| 日本三级黄色网址| 一区三区在线欧| 欧美国产日韩在线| 国产精品久久久久久久久久久久久久久久 | 狠狠躁夜夜躁人人爽超碰91| 999久久久精品视频| 亚洲免费毛片| 韩国视频理论视频久久| 国产成a人亚洲精v品无码| 中文一区在线播放| 免费黄色福利视频| 日韩av中文字幕一区| 欧美国产中文字幕| 国产suv一区二区| 日韩一区中文字幕| 亚洲最大成人在线观看| 禁果av一区二区三区| 欧美性在线视频| 日本精品久久久久| 亚洲午夜激情网页| 久久久精品人妻一区二区三区| 久久精品欧美一区| 91精品国产综合久久香蕉| 成人av毛片| 欧美伊人久久久久久久久影院| 亚洲乱码国产乱码精品精大量| 亚洲片区在线| 精品午夜一区二区| 激情都市亚洲| 亚洲人午夜色婷婷| 亚洲精品无码久久久久| 久久久99精品久久| 日本中文字幕高清| 日韩成人a**站| 国产一区二区在线免费视频| 欧美18hd| 日韩免费高清av| 久久综合亚洲色hezyo国产| 丁香天五香天堂综合| 五月丁香综合缴情六月小说| 另类春色校园亚洲| 欧美一二三视频| 邻居大乳一区二区三区| 91九色最新地址| 欧美性猛交xxxx乱大交少妇| 久草这里只有精品视频| 国产日韩第一页| 一区二区三区国产好| 97在线视频免费| 黄色av免费在线看| 欧美日韩高清影院| 校园春色 亚洲| 不卡的看片网站| 国产l精品国产亚洲区久久| 成人情趣视频| 亚洲aⅴ男人的天堂在线观看| 污污的网站在线看| 精品呦交小u女在线| 中文字幕日韩三级| 93在线视频精品免费观看| 日韩一区二区免费视频| 欧美日韩国产精品一区二区三区| 成人免费毛片app| 欧美a在线视频| 天天做综合网| 国产午夜精品在线| 国产综合色在线观看| 久久这里只有精品视频首页| www.久久伊人| 日韩欧美在线国产| www.xx日本| 99热国产精品| 国产性生活一级片| 亚洲激情欧美| 成人手机视频在线| 老司机凹凸av亚洲导航| 国产欧美在线看| 99色在线观看| 精品国产依人香蕉在线精品| 欧美自拍第一页| 欧美日韩一级黄| 免费在线观看黄网站| 国产精品电影一区二区三区| 伦理片一区二区| 久热成人在线视频| 国产免费黄视频| 五月久久久综合一区二区小说| 精品999在线观看| www.成人在线.com| 国产成人av在线| 超碰激情在线| 久久精品最新地址| 国产女主播在线写真| 欧美成人午夜电影| 一区二区日韩视频| 狠狠操狠狠色综合网| 国产精品永久在线| 七七久久电影网| 日韩中文字幕在线| 免费在线性爱视频| 亚洲第一区中文99精品| 国产伦精品一区二区三区免.费 | 日韩亚洲欧美中文高清在线| 无码国产精品高潮久久99| 欧美一区二区三区在线观看| 九九热最新视频| 欧美性xxxx极品hd满灌| 久久97人妻无码一区二区三区| 国产精品久久久久影院老司| 黄色a一级视频| 成熟亚洲日本毛茸茸凸凹| 九九九九九九九九| 麻豆精品在线播放| 欧美一级黄色影院| 噜噜噜91成人网| 欧美丰满熟妇bbbbbb百度| 欧美激情一区| 欧美精品一区二区性色a+v| 国产一区不卡| 日本电影一区二区三区| 日本欧美三级| 欧美精品二区三区四区免费看视频 | 99在线观看| 亚洲高清影院| 成人午夜在线视频一区| 久久精品97| 国产精品999999| 亚洲精品555| 国产免费久久av| 久久国内精品| 91免费福利视频| 榴莲视频成人app| 99影视tv| 日韩mv欧美mv国产网站| 美乳视频一区二区| 国产九一精品| 少妇精品久久久久久久久久| 成人黄色av| 自拍另类欧美| 中文字幕一区二区三区在线视频| 黄色一级视频播放| 欧美日韩国产高清| av日韩在线看| 亚洲国产99| jizzjizz国产精品喷水| 亚洲一区成人| 熟妇人妻va精品中文字幕 | 欧洲一区av| 在线视频免费一区二区| 欧美jizz18hd性欧美| 欧美理论片在线观看| 变态调教一区二区三区| 欧美一级免费视频| 成人黄色毛片| 91亚洲午夜在线| 国产人妖ts一区二区| 欧美久久在线| 天天射天天综合网| 99在线免费视频观看| 媚黑女一区二区| 日韩va在线观看| 成人免费毛片嘿嘿连载视频| 扒开jk护士狂揉免费| 国产精品美女久久久久久久久久久 | 日本在线精品视频| 人人精品久久| 国产一区视频观看| 欧美一级精品| av一区二区三区免费观看| 国产亚洲毛片| 亚洲三级在线观看视频| av爱爱亚洲一区| 91激情视频在线观看| 亚洲欧洲日韩在线| 国产微拍精品一区| 这里是久久伊人| 深夜福利视频在线观看| xvideos亚洲人网站| 超碰成人av| 亚洲在线免费观看| 欧美极品中文字幕| www.国产在线视频| 老色鬼精品视频在线观看播放| 成人欧美精品一区二区| 国产精品丝袜91| 国产乡下妇女做爰毛片| 欧美日本国产一区| 免费看男男www网站入口在线 | 久久在线视频精品| 欧美日韩亚洲国产综合| 日本又骚又刺激的视频在线观看| 久久综合色影院| 成人免费网站www网站高清| 国产精品传媒毛片三区| 99国产**精品****| 成年人视频网站免费观看| 粉嫩13p一区二区三区| 蜜桃av免费观看| 日韩欧美在线播放| 手机看片一区二区| 欧美第一黄网免费网站| 亚洲一区二区三区久久久| 奇米影视首页 狠狠色丁香婷婷久久综合| 欧美日韩国产亚洲一区| 免费成年人高清视频| 欧美极品另类videosde| 五月天婷婷网站| 日韩一级免费观看| 国产超级va在线视频| 国产精品久久久久久一区二区| 欧美挤奶吃奶水xxxxx| 99在线观看视频免费| 国产曰批免费观看久久久| 国产极品视频在线观看| 在线观看av一区二区| 日本免费不卡| 91国产中文字幕| 欧美黑人巨大videos精品| www精品久久| 成人性生交大合| 国产一级片网址| 精品国产露脸精彩对白| 四虎影视国产在线视频| 96sao精品视频在线观看| 国产精品久久久久一区二区三区厕所| 99热手机在线| 中文字幕乱码亚洲精品一区| 国产乱码在线观看| 在线播放精品一区二区三区 | 欧美日韩国产经典色站一区二区三区| 国产小视频在线观看| 国产精品88a∨| 色综合天天综合网中文字幕| jizz18女人| 自拍偷拍欧美精品| 国产美女无遮挡永久免费| 久久综合伊人77777| 电影一区中文字幕| 国产精品av免费观看| 成人午夜电影小说| 日韩毛片在线视频| 亚洲人成电影网站色| av在线不卡精品| 中文字幕欧美人与畜| 国产麻豆日韩欧美久久| 久久精品国产亚洲AV无码男同 | 97超碰资源| 亚洲午夜av| 欧洲一级黄色片| 欧美亚洲高清一区二区三区不卡| sese一区| 97人人模人人爽人人少妇| 亚洲国产一区二区三区a毛片| 在线观看国产免费视频| 在线视频一区二区免费| 蜜芽在线免费观看| 国产精品区免费视频| 六月天综合网| 黄视频网站免费看| 亚洲国产天堂久久国产91| 亚洲欧美se| eeuss中文| av不卡在线播放| 一卡二卡在线观看| 97视频在线观看播放| 第一会所sis001亚洲| 国产精久久久久| 91福利在线导航| 免费毛片在线看片免费丝瓜视频 | 444亚洲人体| 国产日韩欧美一区在线| 污污视频网站在线免费观看| 精品va天堂亚洲国产| 成人在线观看免费播放| 国产精品入口芒果| 中文字幕欧美日韩一区| 懂色av一区二区三区四区| 国产成人精品久久| 欧美日韩亚洲一区二区三区在线| 欧美特黄一区二区三区| 日韩视频一区二区| avav成人| 亚洲色成人一区二区三区小说| 自拍偷拍国产精品|