static double abs(double a) 返回 double 值的絕對值。
static float abs(float a) 返回 float 值的絕對值。 static int abs(int a) 返回 int 值的絕對值。
static long abs(long a) 返回 long 值的絕對值。 static double acos(double a) 返回角的反余弦,范圍在 0.0 到 pi 之間。
static double asin(double a) 返回角的反正弦,范圍在 -pi/2 到 pi/2 之間。 static double atan(double a) 返回角的反正切,范圍在 -pi/2 到 pi/2 之間。
static double atan2(double y, double x) 將矩形坐標(biāo) (x, y) 轉(zhuǎn)換成極坐標(biāo) (r, theta)。 static double cbrt(double a) 返回 double 值的立方根。
static double ceil(double a) 返回最小的(最接近負(fù)無窮大)double 值,該值大于或等于參數(shù),并且等于某個整數(shù)。 static double cos(double a) 返回角的三角余弦。
static double cosh(double x) 返回 double 值的雙曲線余弦。 static double exp(double a) 返回歐拉數(shù) e 的 double 次冪的值。
static double expm1(double x) 返回 ex -1。 static double floor(double a) 返回最大的(最接近正無窮大)double 值,該值小于或等于參數(shù),并且等于某個整數(shù)。
static double hypot(double x, double y) 返回 sqrt(x2 +y2),沒有中間溢出或下溢。 static double IEEEremainder(double f1, double f2) 按照 IEEE 754 標(biāo)準(zhǔn)的規(guī)定,對兩個參數(shù)進(jìn)行余數(shù)運(yùn)算。
static double log(double a) 返回(底數(shù)是 e)double 值的自然對數(shù)。 static double log10(double a) 返回 double 值的底數(shù)為 10 的對數(shù)。
static double log1p(double x) 返回參數(shù)與 1 的和的自然對數(shù)。 static double max(double a, double b) 返回兩個 double 值中較大的一個。
static float max(float a, float b) 返回兩個 float 值中較大的一個。 static int max(int a, int b) 返回兩個 int 值中較大的一個。
static long max(long a, long b) 返回兩個 long 值中較大的一個。 static double min(double a, double b) 返回兩個 double 值中較小的一個。
static float min(float a, float b) 返回兩個 float 值中較小的一個。 static int min(int a, int b) 返回兩個 int 值中較小的一個。
static long min(long a, long b) 返回兩個 long 值中較小的一個。 static double pow(double a, double b) 返回第一個參數(shù)的第二個參數(shù)次冪的值。
static double random() 返回帶正號的 double 值,大于或等于 0.0,小于 1.0。 static double rint(double a) 返回其值最接近參數(shù)并且是整數(shù)的 double 值。
static long round(double a) 返回最接近參數(shù)的 long。 static int round(float a) 返回最接近參數(shù)的 int。
static double signum(double d) 返回參數(shù)的符號函數(shù);如果參數(shù)是零,則返回零;如果參數(shù)大于零,則返回 1.0;如果參數(shù)小于零,則返回 -1.0。 static float signum(float f) 返回參數(shù)的符號函數(shù);如果參數(shù)是零,則返回零;如果參數(shù)大于零,則返回 1.0;如果參數(shù)小于零,則返回 -1.0。
static double sin(double a) 返回角的三角正弦。 static double sinh(double x) 返回 double 值的雙曲線正弦。
static double sqrt(double a) 返回正確舍入的 double 值的正平方根。 static double tan(double a) 返回角的三角正切。
static double tanh(double x) 返回 double 值的雙曲線余弦。 static double toDegrees(double angrad) 將用弧度測量的角轉(zhuǎn)換為近似相等的用度數(shù)測量的角。
static double toRadians(double angdeg) 將用度數(shù)測量的角轉(zhuǎn)換為近似相等的用弧度測量的角。 static double ulp(double d) 返回參數(shù)的 ulp 大小。
static float ulp(float f) 返回參數(shù)的 ulp 大小。 從api上截的,更詳細(xì)的還是推薦查看api。
Java的技術(shù)體系是非常龐大的,需要我們學(xué)習(xí)的技術(shù)非常多,往往很多初學(xué)的人,通過互聯(lián)網(wǎng)查閱了一個龐大的學(xué)習(xí)列表,然后不知道如何下手。網(wǎng)上很多大牛列的技術(shù)不是不重要,但是掌握住企業(yè)應(yīng)用的Java的核心技術(shù),快速上手,是一種高效的學(xué)習(xí)手段。結(jié)合本人十余年的項目研發(fā)和帶人經(jīng)驗,整理出如下方面。
首先JavaSE是核心,這是初學(xué)Java人員應(yīng)最先接觸學(xué)習(xí)的部分。Java的運(yùn)行原理,jdk的配置,與jre的區(qū)別,基本數(shù)據(jù)類型,流程控制(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)),數(shù)組、集合框架,異常處理等,這些都是比較容易學(xué)習(xí)的,需要多練習(xí),在練習(xí)過程中加強(qiáng)理解。面向?qū)ο蟛糠质荍ava初學(xué)者,尤其是沒有任何編程語言基礎(chǔ)的學(xué)起來有些難度,類、對象、繼承、封裝、多態(tài)等技術(shù)點需要多參照些現(xiàn)有的設(shè)計模型,學(xué)習(xí)設(shè)計的思路。諸如工廠模式、觀察者模式、代理模式等重要的設(shè)計模式也是需要學(xué)習(xí)的,否則在將來應(yīng)用框架時就會只知其然,不知其所以然。IO流、多線程也一定需要學(xué)習(xí),尤其是XML、JSON等文件格式一定要掌握,這在數(shù)據(jù)交互時常用。
其次是數(shù)據(jù)庫知識,作為初級Java程序員必須要掌握一種常用的關(guān)系型書庫的應(yīng)用,如MySQL或oracle等,數(shù)據(jù)庫對象諸如表、視圖等的創(chuàng)建、增刪改查語句,尤其是查詢,在企業(yè)中經(jīng)常需要從十幾張表、或幾十張表中查詢數(shù)據(jù),所以對于如何進(jìn)行內(nèi)連接、外連接、以及聯(lián)合查詢等一定要掌握,另外對于索引、事務(wù)等也要掌握。
第三是Java Web部分,由于Java主要做web開發(fā),一些前端技術(shù)HTML3、CSS5,javaScript,jQuery等這些不見得要學(xué)得有多深入,但是必須要掌握,tomcat、jsp,以及和數(shù)據(jù)庫的交互這些都是必須要掌握的。
第四是框架部分,主流的ORM框架有Mybatis、hibernate,MVC框架有Spring MVC、Struts2等,可以優(yōu)先掌握主流的SSM框架組合,框架的學(xué)習(xí)有人認(rèn)為很簡單,就按照規(guī)定、規(guī)范調(diào)用、使用唄,初學(xué)者可以先學(xué)習(xí)如何使用這些框架,然后慢慢的探究內(nèi)部原理,因為框架是技術(shù)封裝、簡化的產(chǎn)物。
這里面有些同類型的技術(shù)比如hibernate,如果會使用Mybatis了,那么上手就會很容易,同理如果Spring MVC框架應(yīng)用熟練了,那么Struts2框架其實就可以現(xiàn)學(xué)現(xiàn)賣了。
一個web程序包含的模塊很多,不一定包括所有模塊。
系統(tǒng)模塊:Windows、Linux系統(tǒng)等。
存儲模塊:這里既包括關(guān)系型數(shù)據(jù)庫MySQL、oracle等,也包括內(nèi)存數(shù)據(jù)庫redis、memcached等。
程序模塊:還可以細(xì)化成持久化模塊、業(yè)務(wù)邏輯模塊、表現(xiàn)層模塊,MVC框架的實現(xiàn)。
搜索模塊:應(yīng)用solr或Elasticsearch等。
服務(wù)器模塊:tomcat、weblogic、Resion等
中間件模塊:nginx、MQ消息隊列技術(shù)等。
在這里額外說一下技術(shù)和技能的區(qū)別,初學(xué)者學(xué)一個技術(shù)可能很容易,但是這個技術(shù)如何在企業(yè)開發(fā)環(huán)境中應(yīng)用這就是技能了,所以在學(xué)習(xí)的同時,要多應(yīng)用,最好通過一些案例項目來學(xué)習(xí),這樣既高效,學(xué)習(xí)的還扎實。
補(bǔ)充一點,現(xiàn)在的應(yīng)用級別越來越大,海量數(shù)據(jù)、高并發(fā)是處理的重點,單應(yīng)用的程序已經(jīng)無法滿足要求,分布式是趨勢,Dubbo、Zookeeper、Docker、SpringBoot、SpringCloud、MyCat等技術(shù),包括上面系統(tǒng)模塊里提到的一些技術(shù)都要學(xué)習(xí)的。
給你一個中文的吧。
你不想看英文的API;File類是直接繼承Object類的。Object類的方法我就不不寫了:字段摘要 static String pathSeparator 與系統(tǒng)有關(guān)的路徑分隔符,為了方便,它被表示為一個字符串。
static char pathSeparatorChar 與系統(tǒng)有關(guān)的路徑分隔符。 static String separator 與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符,為了方便,它被表示為一個字符串。
static char separatorChar 與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符。 構(gòu)造方法摘要 File(File parent, String child) 根據(jù) parent 抽象路徑名和 child 路徑名字符串創(chuàng)建一個新 File 實例。
File(String pathname) 通過將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建一個新 File 實例。 File(String parent, String child) 根據(jù) parent 路徑名字符串和 child 路徑名字符串創(chuàng)建一個新 File 實例。
File(URI uri) 通過將給定的 file: URI 轉(zhuǎn)換為一個抽象路徑名來創(chuàng)建一個新的 File 實例。 方法摘要 boolean canExecute() 測試應(yīng)用程序是否可以執(zhí)行此抽象路徑名表示的文件。
boolean canRead() 測試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件。 boolean canWrite() 測試應(yīng)用程序是否可以修改此抽象路徑名表示的文件。
int compareTo(File pathname) 按字母順序比較兩個抽象路徑名。 boolean createNewFile() 當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱的文件時,不可分地創(chuàng)建一個新的空文件。
static File createTempFile(String prefix, String suffix) 在默認(rèn)臨時文件目錄中創(chuàng)建一個空文件,使用給定前綴和后綴生成其名稱。 static File createTempFile(String prefix, String suffix, File directory) 在指定目錄中創(chuàng)建一個新的空文件,使用給定的前綴和后綴字符串生成其名稱。
boolean delete() 刪除此抽象路徑名表示的文件或目錄。 void deleteOnExit() 在虛擬機(jī)終止時,請求刪除此抽象路徑名表示的文件或目錄。
boolean equals(Object obj) 測試此抽象路徑名與給定對象是否相等。 boolean exists() 測試此抽象路徑名表示的文件或目錄是否存在。
File getAbsoluteFile() 返回此抽象路徑名的絕對路徑名形式。 String getAbsolutePath() 返回此抽象路徑名的絕對路徑名字符串。
File getCanonicalFile() 返回此抽象路徑名的規(guī)范形式。 String getCanonicalPath() 返回此抽象路徑名的規(guī)范路徑名字符串。
long getFreeSpace() 返回此抽象路徑名指定的分區(qū)中未分配的字節(jié)數(shù)。 String getName() 返回由此抽象路徑名表示的文件或目錄的名稱。
String getParent() 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。 File getParentFile() 返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
String getPath() 將此抽象路徑名轉(zhuǎn)換為一個路徑名字符串。 long getTotalSpace() 返回此抽象路徑名指定的分區(qū)大小。
long getUsableSpace() 返回此抽象路徑名指定的分區(qū)上可用于此虛擬機(jī)的字節(jié)數(shù)。 int hashCode() 計算此抽象路徑名的哈希碼。
boolean isAbsolute() 測試此抽象路徑名是否為絕對路徑名。 boolean isDirectory() 測試此抽象路徑名表示的文件是否是一個目錄。
boolean isFile() 測試此抽象路徑名表示的文件是否是一個標(biāo)準(zhǔn)文件。 boolean isHidden() 測試此抽象路徑名指定的文件是否是一個隱藏文件。
long lastModified() 返回此抽象路徑名表示的文件最后一次被修改的時間。 long length() 返回由此抽象路徑名表示的文件的長度。
String[] list() 返回一個字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 String[] list(FilenameFilter filter) 返回一個字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles() 返回一個抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 File[] listFiles(FileFilter filter) 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles(FilenameFilter filter) 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 static File[] listRoots() 列出可用的文件系統(tǒng)根。
boolean mkdir() 創(chuàng)建此抽象路徑名指定的目錄。 boolean mkdirs() 創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
boolean renameTo(File dest) 重新命名此抽象路徑名表示的文件。 boolean setExecutable(boolean executable) 設(shè)置此抽象路徑名所有者執(zhí)行權(quán)限的一個便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly) 設(shè)置此抽象路徑名的所有者或所有用戶的執(zhí)行權(quán)限。 boolean setLastModified(long time) 設(shè)置此抽象路徑名指定的文件或目錄的最后一次修改時間。
boolean setReadable(boolean readable) 設(shè)置此抽象路徑名所有者讀權(quán)限的一個便捷方法。 boolean setReadable(boolean readable, boolean ownerOnly) 設(shè)置此抽象路徑名的所有者或所有用戶的讀權(quán)限。
boolean setReadOnly() 標(biāo)記此抽象路徑名。
方法摘要 char charAt(int index) 返回指定索引處的 char 值。
int codePointAt(int index) 返回指定索引處的字符(Unicode 代碼點)。 int codePointBefore(int index) 返回指定索引之前的字符(Unicode 代碼點)。
int codePointCount(int beginIndex, int endIndex) 返回此 String 的指定文本范圍中的 Unicode 代碼點數(shù)。 int compareTo(String anotherString) 按字典順序比較兩個字符串。
int compareToIgnoreCase(String str) 不考慮大小寫,按字典順序比較兩個字符串。 String concat(String str) 將指定字符串聯(lián)到此字符串的結(jié)尾。
boolean contains(CharSequence s) 當(dāng)且僅當(dāng)此字符串包含 char 值的指定序列時,才返回 true。 boolean contentEquals(CharSequence cs) 當(dāng)且僅當(dāng)此 String 表示與指定序列相同的 char 值時,才返回 true。
boolean contentEquals(StringBuffer sb) 當(dāng)且僅當(dāng)此 String 表示與指定的 StringBuffer 相同的字符序列時,才返回 true。 static String copyValueOf(char[] data) 返回指定數(shù)組中表示該字符序列的字符串。
static String copyValueOf(char[] data, int offset, int count) 返回指定數(shù)組中表示該字符序列的字符串。 boolean endsWith(String suffix) 測試此字符串是否以指定的后綴結(jié)束。
boolean equals(Object anObject) 比較此字符串與指定的對象。 boolean equalsIgnoreCase(String anotherString) 將此 String 與另一個 String 進(jìn)行比較,不考慮大小寫。
static String format(Locale l, String format, Object。 args) 使用指定的語言環(huán)境、格式字符串和參數(shù)返回一個格式化字符串。
static String format(String format, Object。 args) 使用指定的格式字符串和參數(shù)返回一個格式化字符串。
byte[] getBytes() 使用平臺默認(rèn)的字符集將此 String 解碼為字節(jié)序列,并將結(jié)果存儲到一個新的字節(jié)數(shù)組中。 void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) 已過時。
該方法無法將字符正確轉(zhuǎn)換為字節(jié)。從 JDK 1.1 起,完成該轉(zhuǎn)換的首選方法是通過 getBytes() 構(gòu)造方法,該方法使用平臺的默認(rèn)字符集。
byte[] getBytes(String charsetName) 使用指定的字符集將此 String 解碼為字節(jié)序列,并將結(jié)果存儲到一個新的字節(jié)數(shù)組中。 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將字符從此字符串復(fù)制到目標(biāo)字符數(shù)組。
int hashCode() 返回此字符串的哈希碼。 int indexOf(int ch) 返回指定字符在此字符串中第一次出現(xiàn)處的索引。
int indexOf(int ch, int fromIndex) 從指定的索引開始搜索,返回在此字符串中第一次出現(xiàn)指定字符處的索引。 int indexOf(String str) 返回第一次出現(xiàn)的指定子字符串在此字符串中的索引。
int indexOf(String str, int fromIndex) 從指定的索引處開始,返回第一次出現(xiàn)的指定子字符串在此字符串中的索引。 String intern() 返回字符串對象的規(guī)范化表示形式。
int lastIndexOf(int ch) 返回最后一次出現(xiàn)的指定字符在此字符串中的索引。 int lastIndexOf(int ch, int fromIndex) 從指定的索引處開始進(jìn)行后向搜索,返回最后一次出現(xiàn)的指定字符在此字符串中的索引。
int lastIndexOf(String str) 返回在此字符串中最右邊出現(xiàn)的指定子字符串的索引。 int lastIndexOf(String str, int fromIndex) 從指定的索引處開始向后搜索,返回在此字符串中最后一次出現(xiàn)的指定子字符串的索引。
int length() 返回此字符串的長度。 boolean matches(String regex) 通知此字符串是否匹配給定的正則表達(dá)式。
int offsetByCodePoints(int index, int codePointOffset) 返回此 String 中從給定的 index 處偏移 codePointOffset 個代碼點的索引。 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測試兩個字符串區(qū)域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len) 測試兩個字符串區(qū)域是否相等。 String replace(char oldChar, char newChar) 返回一個新的字符串,它是通過用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 而生成的。
String replace(CharSequence target, CharSequence replacement) 使用指定的字面值替換序列替換此字符串匹配字面值目標(biāo)序列的每個子字符串。 String replaceAll(String regex, String replacement) 使用給定的 replacement 字符串替換此字符串匹配給定的正則表達(dá)式的每個子字符串。
String replaceFirst(String regex, String replacement) 使用給定的 replacement 字符串替換此字符串匹配給定的正則表達(dá)式的第一個子字符串。 String[] split(String regex) 根據(jù)給定的正則表達(dá)式的匹配來拆分此字符串。
String[] split(String regex, int limit) 根據(jù)匹配給定的正則表達(dá)式來拆分此字符串。 boolean startsWith(String prefix) 測試此字符串是否以指定的前綴開始。
boolean startsWith(String prefix, int toffset) 測試此字符串是否以指定前綴開始,該前綴以指定索引開始。 CharSequence subSequence(int beginIndex, int endIndex) 返回一個新的字符序列,它是此序列的一個子序列。
String substring(int beginIndex) 返回一個新的字符串,它是此字符串的一個子字符串。 。
這個從關(guān)鍵字來理解啊,
1. 如果方法定義前面加final,說明你已經(jīng)知道這個方法提供的功能已經(jīng)滿足你要求,不需要進(jìn)行擴(kuò)展,并且也不允許任何從此類繼承的類來覆寫這個方法,但是繼承仍然可以繼承這個方法,也就是說可以直接使用。
2. 如果方法定義前面加static,表示靜態(tài)方法,方法和類關(guān)聯(lián),直接由類名來調(diào)用。
3. 如果方法定義前面加abstract,表示抽象方法,由繼承類來實現(xiàn)。
4. 對于方法前面的public, private,protected等這些是控制方法可以被調(diào)用的范圍。
5. 如果方法定義前面有native,Native方法是由另外一種語言(如c/c++,FORTRAN,匯編)實現(xiàn)的本地方法。因為在外部實現(xiàn)了方法,所以在java代碼中,就不需要聲明了,有點類似于借口方法,一般用不著。
6.如果方法定義前面加synchronized,表示當(dāng)前方法體是一個臨界區(qū),通過鎖機(jī)制來控制多個線程同步,在多線程應(yīng)用里面經(jīng)常使用。
友情提示:
1. 字符串 str 中字符的索引從0開始,范圍為 0 到 str.length()-1
2. 使用 indexOf 進(jìn)行字符或字符串查找時,如果匹配返回位置索引;如果沒有匹配結(jié)果,返回 -1
3. 使用 substring(beginIndex , endIndex) 進(jìn)行字符串截取時,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符
1、冒泡排序
冒泡排序是一個比較簡單的排序方法。在待排序的數(shù)列基本有序的情況下排序速度較快。若要排序的數(shù)有n個,則需要n-1輪排序,第j輪排序中,從第一個數(shù)開始,相鄰兩數(shù)比較,若不符合所要求的順序,則交換兩者的位置;直到第n+1-j個數(shù)為止,第一個數(shù)與第二個數(shù)比較,第二個數(shù)與第三個數(shù)比較,。。,第n-j個與第n+1-j個比較,共比較n-1次。此時第n+1-j個位置上的數(shù)已經(jīng)按要求排好,所以不參加以后的比較和交換操作。例如:第一輪排序:第一個數(shù)與第二個數(shù)進(jìn)行比較,若不符合要求的順序,則交換兩者的位置,否則繼續(xù)進(jìn)行二個數(shù)與第三個數(shù)比較。。。直到完成第n-1個數(shù)與第n個數(shù)的比較。此時第n個位置上的數(shù)已經(jīng)按要求排好,它不參與以后的比較和交換操作;第二輪排序:第一個數(shù)與第二個數(shù)進(jìn)行比較,。。直到完成第n-2個數(shù)與第n-1個數(shù)的比較;。。第n-1輪排序:第一個數(shù)與第二個數(shù)進(jìn)行比較,若符合所要求的順序,則結(jié)束冒泡法排序;若不符合要求的順序,則交換兩者的位置,然后結(jié)束冒泡法排序。
共n-1輪排序處理,第j輪進(jìn)行n-j次比較和至多n-j次交換。
從以上排序過程可以看出,較大的數(shù)像氣泡一樣向上冒,而較小的數(shù)往下沉,故稱冒泡法。
2、選擇排序
選擇法的原理是先將第一個數(shù)與后面的每一個數(shù)依次比較,不斷將將小的賦給第一個數(shù),從而找出最小的,然后第二個數(shù)與后面的每一個數(shù)依次比較,從而找出第二小的,然后第三個數(shù)與后面的
3、插入排序
插入排序的原理是對數(shù)組中的第i個元素,認(rèn)為它前面的i-1個已經(jīng)排序好,然后將它插入到前面的i-1個元素中。插入排序?qū)ι倭吭氐呐判蜉^為有效.
4、快速排序
快速排序是對冒泡排序的一種改進(jìn)。它的基本思想是:通過一次排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按次方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個排序過程可以遞歸進(jìn)行,以此大道整個數(shù)據(jù)變成有序序列。
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:2.821秒