




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第頁Java選擇題復(fù)習(xí)測試題1.下面選項中,不是面向?qū)ο蟮奶卣鞯氖恰#?))A、封裝B、繼承C、多態(tài)D、重構(gòu)【正確答案】:D2.下列選項中,屬于浮點數(shù)常量的是。(())A、198B、2e3fC、trueD、N【正確答案】:B3.下列關(guān)于LinkedList的描述中,錯誤的是。(())A、LinkedList集合對于元素的增刪操作具有很高的效率B、LinkedList集合中每一個元素都使用引用的方式來記住它的前一個元素和后一個元素C、LinkedList集合對于元素的查找操作非常便捷D、LinkedList集合中的元素索引從0開始【正確答案】:C4.下列選項中,用于在定義子類時聲明父類名的關(guān)鍵字是。(())A、interfaceB、packageC、extendsD、class【正確答案】:C5.Java語言中,集合類都位于哪個包中(())A、java.utilB、java.langC、java.arrayD、java.collections【正確答案】:A6.下列選項中,哪一個不能通過編譯。(())A、bytea=1;B、shortb=100;C、intc='a';D、longd=8888888888;【正確答案】:D7.閱讀下列代碼:System.out.println(“Hello”+9+1);下列選項中,哪個是正確的輸出結(jié)果(())A、Hello91B、Hello10Compilationfails.D、Anexceptionisthrownatruntime【正確答案】:A8.final修飾符不可以修飾如下哪個內(nèi)容?(())A、類B、接口C、方法D、變量【正確答案】:B9.閱讀下段代碼片段,選擇正確的運行結(jié)果。(())publicstaticvoidmain(String[]args){{inta=1;System.out.print(a);}{inta=2;System.out.print(a);}inta=3;System.out.print(a);}A、123B、111C、121D、編譯不通過【正確答案】:A10.下列選項中,關(guān)于運算符“^”的描述正確是。(())A、二進制位有1,則結(jié)果為1B、二進制位有0,則結(jié)果為0C、二進制位有相同,則結(jié)果為1,不同為0D、二進制位有相同,則結(jié)果為0,不同為1【正確答案】:D11.下面關(guān)于字符變量的定義中,錯誤的是。(())A、chara='a';B、charb=97;C、charc=0x61;D、chard=A;【正確答案】:D12.獲取單列集合中元素的個數(shù)可以使用以下哪個方法?(())A、length()B、size()C、get(intindex)D、add(Objectobj)【正確答案】:B13.下列關(guān)于System類的描述中,錯誤的是?(())A、System類是final關(guān)鍵字修飾的類,它不能被其他類所繼承B、System類不能被實例化C、System類中定義了許多方法,但是沒有定義屬性D、System類中提供了獲取當(dāng)前系統(tǒng)屬性的方法【正確答案】:C14.閱讀下列的程序(())publicclassExample{publicstaticvoidmain(String[]args){newFather(){publicvoidshow(){System.out.println("helloworld");}}.show();}}classFather{publicvoidshow(){System.out.println("hellofather");}}A、hellofatherB、helloworldC、編譯報錯D、編譯通過,運行報錯【正確答案】:B15.如果類的成員被()訪問控制符來修飾,則這個成員只能被該類的其它成員訪問,其它類無法直接訪問(())A、privateB、defaultC、protectedD、public【正確答案】:A16.下列關(guān)于Writer類哪種描述是正確的(())A、Writer類可以使用不同的字符集編碼向輸出流寫入字符。B、Writer類可以向輸出流寫入unicode字符。C、Writer類提供向輸出流寫入任何Java基本數(shù)據(jù)類型的方法。D、Writer類提供向輸入流寫入對象類型數(shù)據(jù)的方法。【正確答案】:A17.現(xiàn)有兩個類A.B,以下描述中表示B繼承自A的是。(())A、classAeb.classB、classBimpAC、classAimpBD、classBextendsA【正確答案】:D18.關(guān)于變量類型轉(zhuǎn)換的描述中,正確的是(())A、只有數(shù)據(jù)類型相同的數(shù)據(jù)才能進行運算B、byte類型和short類型的數(shù)據(jù)是不能一起運算的C、兩個byte類型數(shù)據(jù)一起運算時會把先自動提升到int類型再運算D、兩個整型在一起運算時,結(jié)果一定是int【正確答案】:C19.下列選項中,哪個是八進制043的十六進制表示形式。(())A、0x43B、0x23C、23D、0x32【正確答案】:B20.下列選項中,符合LinkedList類的特點是(())A、查詢快B、增刪快C、元素不重復(fù)D、元素自然排序【正確答案】:B21.下列字符串常量中,哪一個是錯誤的(())A、“abc”B、“12’12”C、“12”12”D、“”【正確答案】:C22.閱讀下面的程序publicclassExample{publicstaticvoidmain(String[]args){String[]strs={"Tom","Jerry","Donald"};//foreach循環(huán)遍歷數(shù)組for(Stringstr:strs){str="Tuffy";}System.out.println(strs[0]+","+strs[1]+","+strs[2]);}}程序的運行結(jié)果是(())A、Tom,Jerry,DonaldB、Tuffy,Jerry,DonaldC、Tuffy,Tuffy,TuffyD、發(fā)生異常,輸出異常信息【正確答案】:A23.下面關(guān)于List集合的描述中,哪一個是錯誤的?(())A、List集合是有索引的B、List集合可以存儲重復(fù)的元素C、List集合存和取的順序一致D、List集合沒有索引【正確答案】:D24.下列關(guān)于對象的類型轉(zhuǎn)換的描述,說法錯誤的是(())A、對象的類型轉(zhuǎn)換可通過自動轉(zhuǎn)換或強制轉(zhuǎn)換進行B、無繼承關(guān)系的兩個類的對象之間試圖轉(zhuǎn)換會出現(xiàn)編譯錯誤C、由new語句創(chuàng)建的父類對象可以強制轉(zhuǎn)換為子類的對象D、子類的對象轉(zhuǎn)換為父類類型后,父類對象不能調(diào)用子類的特有方法【正確答案】:C25.下列關(guān)于continue語句的說法中,正確的是。(())A、continue語句可以在選擇語句中使用B、continue語句可以在條件語句中使用C、continue語句可以在循環(huán)語句中使用D、continue語句可以在任何語句中使用【正確答案】:C26.下面對Throwable類常用的方法的功能描述錯誤的是(())A、StringgetMessage()方法返回異常的消息字符串B、StringtoString()方法返回異常的簡單信息描述C、voidprintStackTrace()方法獲取異常類名和異常信息以及異常出現(xiàn)在程序中的位置,把信息輸出到控制臺D、StringtoString()方法返回異常的消息字符串【正確答案】:D27.用于定義成員的訪問控制權(quán)的一組關(guān)鍵字是(())A、class,publicB、char,extendsC、boolean,intD、private,protected【正確答案】:D28.下列語句正確的是(())A、inta={1,2,3}B、intb=(1,2,3);C、intc[]={1,2,3}D、int[]d={123}【正確答案】:C29.分析選項中關(guān)于Java中this關(guān)鍵字的說法正確的是(())A、this關(guān)鍵字是在對象內(nèi)部指代自身的引用B、this關(guān)鍵字可以在類中的任何位置使用C、this關(guān)鍵字和類關(guān)聯(lián),而不是和特定的對象關(guān)聯(lián)D、同一個類的不同對象共用一個this【正確答案】:A30.下列選項中,不屬于HashMap類的方法的是(())A、get(Objectkey)B、keySet()C、comparator()D、entrySet()【正確答案】:C31.以下抽象類的定義中,錯誤的是?(())A、abstractclassDemo1{}B、abstractclassDemo2{publicabstractStringfun(Stringa);}C、abstractclassDemo3{publicStringfun(){return"CZBK";}}D、abstractclassDemo4{publicstaticfinalStringCZBK="傳智播客";abstractvoidfun(){}}【正確答案】:D32.以下選項中,哪個是FileOutputStream的父類?(())A、FileB、FileOutputC、OutputStreamD、InputStream【正確答案】:C33.若doubleval=Math.ceil(-11.9);則val的值是?(())A、11.9B、-11.0C、-11.5D、-12.0【正確答案】:B34.以下關(guān)于變量的定義,正確的是(())A、inta=10;B、b=2;C、int=20;D、inta;b=a+10;【正確答案】:A35.Java中所有的類都是通過直接或間接地繼承(())類得到的A、java.lang.ObjectB、java.lang.ClassC、任意類D、以上答案都不對【正確答案】:A36.下列關(guān)于TreeSet集合中存儲自定義對象的描述中,正確的有(D)A、TreeSet集合中可以存儲任何自定義對象B、TreeSet集合中存儲的自定義對象必須給出排序的規(guī)則,否則當(dāng)向TreeSet集合中存儲對象時會出現(xiàn):java.lang.ClassCastException異常C、TreeSet集合中存儲的自定義對象需要實現(xiàn)Comparable接口,讓元素具有比較性D、B和C【正確答案】:D37.以下關(guān)于編譯異常說法正確的是(())A、編譯異常就是指Exception以及其子類B、編譯異常如果產(chǎn)生,可以不用處理C、編譯異常如果產(chǎn)生,必須處理,要么捕獲,要么拋出D、編譯異常指的就是Error【正確答案】:C38.用于定義類成員的訪問控制權(quán)的一組關(guān)鍵字是。(())A、class,float,double,publicB、float,boolean,int,longC、char,extends,float,doubleD、public,private,protected【正確答案】:D39.下列關(guān)于case關(guān)鍵字的說法中,錯誤的是(())A、case關(guān)鍵字后面必須是常量B、case關(guān)鍵字后面的break必須存在C、case關(guān)鍵字后面的break可以沒有D、case關(guān)鍵字后面的值必須不一樣【正確答案】:B40.表達式3510/1000的運算結(jié)果為。(())A、3B、3.51C、3.510D、4【正確答案】:A41.下面關(guān)于java.util.TreeMap的描述中,哪一個是錯誤的(())A、TreeMap類基于紅黑樹(Red-Blacktree)的NavigableMap實現(xiàn)B、TreeMap是線程不同步的C、允許存儲null值和null鍵D、該類映射根據(jù)其鍵的自然順序進行排序,或者根據(jù)創(chuàng)建映射時提供的Comparator進行排序,具體取決于使用的構(gòu)造方法【正確答案】:C42.當(dāng)一個類中成員變量和局部變量重名時,可以使用哪個關(guān)鍵字進行區(qū)分。(())A、superB、thisC、publicD、true【正確答案】:B43.閱讀下面的代碼,編譯后會生成幾層包?(())packagecn.itcast.mypack;classPackageDemo{publicstaticvoidmain(String[]args){System.out.println("Hellopackage!");}}A、一層包(cn)B、二層包(cn.itcast)C、三層包(cn.itcast.mypack)D、四層包(cn.itcast.mypack.PackageDemo)【正確答案】:C44.已知String對象s="abcdefg",則s.substring(2,5)的返回值為?(())A、"bcde"B、"cde"C、"cdef"D、"def"【正確答案】:B45.下列關(guān)于成員屬性與成員方法的描述中,錯誤的是(())A、成員屬性我們也叫成員變量,它就是描述對象的特征。它可以定義在類中,也可以定義在方法中。B、成員方法用于描述對象的行為C、在類中定義的變量稱為成員變量D、在類中定義的方法稱變成員方法【正確答案】:A46.下面關(guān)于classpath的說法中,錯誤的是。(())A、classpath和path環(huán)境變量的查看與配置的方式完全相同。B、為了讓Java虛擬機能找到所需的class文件,就需要對classpath環(huán)境變量進行設(shè)置。C、從JDK5.0開始,如果classpath環(huán)境變量沒有進行設(shè)置,Java虛擬機會自動將其設(shè)置為“.”,也就是當(dāng)前目錄。D、在命令行窗口中配置了classpath后,重新打開新命令行窗口依然生效【正確答案】:D47.下面不屬于基本數(shù)據(jù)類型的是(())A、intB、doubleC、longD、int[]【正確答案】:D48.下列關(guān)于成員變量默認值的描述中,錯誤的是。(())A、byte類型的數(shù)據(jù)默認值是0B、int類型的數(shù)據(jù)默認值是0C、long類型的數(shù)據(jù)默認值是0D、float類型的數(shù)據(jù)默認值是0.0f【正確答案】:C49.閱讀下面程序片段switch(i){case1:System.out.println("message1");case2:System.out.println("message2");case3:System.out.println("message3");break;}請選擇當(dāng)變量i的值為多少時,程序只輸出“message3”(())A、1B、2C、3D、4【正確答案】:C50.下列選項中,可以導(dǎo)入指定包中所有類的是(())A、package包名;B、package包名.*;C、import包名;D、import包名.*;【正確答案】:D51.表達式7%(-3)的運算結(jié)果為。(())A、-2B、-1C、2D、1【正確答案】:D52.下列選項中,不屬于基本數(shù)據(jù)類型的是(())A、stringB、shortC、booleanD、char【正確答案】:A53.先閱讀下面的程序片段:Stringstr="abccdefcdh";String[]arr=str.split("c");System.out.println(arr.length);程序執(zhí)行后,打印的結(jié)果是幾?(())A、2個B、3個C、4個D、5個【正確答案】:C54.intx=1,y=1;if(x++==2&++y==2){x=7;}System.out.println("x="+x+",y="+y);程序的運行結(jié)果是(())A、x=1,y=1B、x=7,y=1C、x=7,y=2D、x=2,y=2【正確答案】:D55.若int[][]arr={{1,2,3}},則arr[0][1]的結(jié)果為。(())A、0B、1C、2D、3【正確答案】:C56.對于HashMap集合說法正確的是(())A、底層是數(shù)組結(jié)構(gòu)B、底層是鏈表結(jié)構(gòu)C、可以存儲null值和null鍵D、不可以存儲null值和null鍵【正確答案】:C57.下面關(guān)于布爾類型變量的定義中,正確的是(())A、booleana=TRUE;B、booleanb=FALSE;C、booleanc='true';D、booleand=false;【正確答案】:D58.下面哪種寫法可以實現(xiàn)訪問數(shù)組arr的第1個元素?(())A、arr[0]B、arr(0)C、arr[1]D、arr(1)【正確答案】:A59.下列Integer類特有的方法,返回保存指定的String類型的值的Integer對象的方法是(())A、IntegervalueOf(inti)B、IntegervalueOf(Strings)C、intparseInt(Strings)D、intintValue()【正確答案】:B60.以下String類的方法中,會返回指定字符ch在字符串中最后一次出現(xiàn)位置的索引的是(())A、intindexOf(intch)B、intlastIndexOf(intch)C、intindexOf(Stringstr)D、intlastIndexOf(Stringstr)【正確答案】:B61.在Java語言中,以下哪個關(guān)鍵字用于在方法上聲明拋出異常。(())A、tryB、catchC、throwsD、throw【正確答案】:C62.下列關(guān)于對象的類型轉(zhuǎn)換的描述中錯誤的是(())A、對象的類型轉(zhuǎn)換可通過自動轉(zhuǎn)換或強制轉(zhuǎn)換進行B、無繼承關(guān)系的兩個類的對象之間試圖轉(zhuǎn)換時會出現(xiàn)編譯錯誤C、由new語句創(chuàng)建的父類對象可以強制轉(zhuǎn)換為子類對象D、子類對象轉(zhuǎn)換為父類類型后,父類對象不能調(diào)用子類的特有方法【正確答案】:C63.下面命令中,可以用來正確執(zhí)行HelloWorld案例的是。(())A、javaHelloWorldB、javaHelloWorld.javaC、javacHelloWorldD、javacHelloWorld.java【正確答案】:A64.Strings="abcdedcba";則s.substring(3,4)返回的字符串是以下選項中的哪個。(())A、cdB、deC、dD、e【正確答案】:C65.下列關(guān)于Java語言的描述中,錯誤的是。(())A、Java語言是一門面向?qū)ο蟮木幊陶Z言B、Java是一門與平臺無關(guān)的編程語言C、Java具有JavaSD、Java是一門介于匯編和高級之間的語言【正確答案】:D66.下了關(guān)于接口繼承的說法中,正確的是?(())A、接口繼承自O(shè)bject類B、一個接口只能繼承一個接口C、一個接口可以繼承多個接口’D、接口不能被繼承【正確答案】:C67.在以下什么情況下,構(gòu)造方法會被調(diào)用?(())A、類定義時B、創(chuàng)建對象時C、調(diào)用對象方法時D、使用對象的變量時【正確答案】:B68.下列選項中,哪一個不是InputStream的直接子類(())A、ByteArrayInputStreamB、FileInputStreamC、BufferedInputStreamD、PipedInputStream【正確答案】:C69.System類位于以下哪個包中。(())A、java.ioB、java.utilC、java.awtD、java.lang【正確答案】:D70.二叉樹存儲結(jié)構(gòu)必須保證對象實現(xiàn)哪個接口(())A、RunnableB、ComparableCollectionD、Iterator【正確答案】:B71.使用Iterator時,判斷是否存在下一個元素的方法是(())A、hasNext()B、hash()C、hasPrevious()D、next()【正確答案】:A72.使用自定義的異常類,需要用到的關(guān)鍵字是(())A、tryB、catchC、finallyD、throw【正確答案】:D73.請閱讀下面的程序,選擇正確的運行結(jié)果。(())classDemo{privatestaticintx;publicstaticvoidmain(String[]args){System.out.println(x++);}}A、0B、無結(jié)果C、編譯失敗D、1【正確答案】:A74.下列選項中,可以正確實現(xiàn)String初始化的是(())A、Stringstr="abc";B、Stringstr=a'bc';C、Stringstr=abc;D、Stringstr=0;【正確答案】:A75.“隱藏對象的屬性和實現(xiàn)細節(jié),僅對外提供公有的方法”描述的是面向?qū)ο蟮哪膫€特征。(())A、封裝B、繼承C、多態(tài)D、以上都不是【正確答案】:A76.下列對foreach循環(huán)描述錯誤的是(())A、foreach循環(huán)在遍歷集合時沒有循環(huán)條件,也沒有迭代語句。B、foreach循環(huán)的次數(shù)是由集合中元素的個數(shù)決定的。C、使用foreach循環(huán)遍歷集合和數(shù)組時,既能訪問其中的元素,又能對其中的元素進行修改。D、JDK5開始,JDK提供了foreach循環(huán)。【正確答案】:C77.請閱讀下面的程序publicclassTest{publicstaticvoidmain(String[]args){intsum=0;for(inti=1;i<=100;i++){if(i%2==1){continue;}sum+=i;}System.out.println("sum="+sum);}}sum的值為(())A、1050B、2550C、2500D、以上答案都不對【正確答案】:B78.Java中,在沒有引入泛型之前,集合把所有對象當(dāng)成數(shù)據(jù)類型是(())A、ObjectB、StringC、intD、數(shù)組【正確答案】:A79.在下面哪種情況下,可以使用方法重寫。(())A、父類方法中的形參不適用于子類使用時B、父類中的方法在子類中沒有時C、父類的功能無法滿足子類的需求時D、父類方法中的返回值類型不適合子類使用【正確答案】:C80.下列是Math類中的一些常用方法,其中用于獲取大于等于0.0且小于1.0的隨機數(shù)的方法是?(())A、random()B、abs()C、sin()D、pow()【正確答案】:A81.Collections工具類的binarySearch()方法返回值的數(shù)據(jù)類型是(())A、StringB、intC、doubleD、float【正確答案】:B82.下列關(guān)于java.io.FileOutputStream的說法錯誤的是(())A、文件拷貝時,使用輸入流讀取的文件必須存在。否則拋出java.io.FileNotFoundExceptionB、文件拷貝時,使用輸出流進行文件寫出的時候,目標(biāo)文件名稱可以與原文件不同名C、使用字節(jié)流進行文件的拷貝,文件既可以是文本文件也可以是圖片.音頻等文件D、使用IO流進行文件拷貝。文件大小不能超過20M,否則內(nèi)存溢出【正確答案】:D83.下面的運算符中,用于執(zhí)行除法運算是哪個?(())A、/B、\C、%D、*【正確答案】:A84.下列關(guān)于throws關(guān)鍵字的描述中,正確的是(())A、thorws可以聲明在方法上也可以聲明在方法體中B、方法上使用throws拋出一個異常則這個方法中一定有trycatch代碼塊C、使用throws拋出多個異常時各個異常之間必須使用逗號隔開D、throws必須和throw配合使用【正確答案】:C85.在JDK8以前,下列關(guān)于接口的說法中,錯誤的是?(())A、接口中定義的方法默認使用"publicabstract"來修飾B、接口中的變量默認使用"publicstaticfinal"來修飾C、接口中的所有方法都是抽象方法D、接口中定義的變量可以被修改【正確答案】:D86.當(dāng)Strings=null;時,下列選項中會拋出空指針異常的是。(())A、if((s!=null)&(s.length()>0))B、if((s!=null)&&(s.length()>0))C、if((s!=null)&&(s.length()==0))D、if((s==null)||(s.length()==0))【正確答案】:A87.分析下面程序,哪一行代碼能正確賦值?(())classDemo{publicvoidmethod(){finalintnum1=10;staticintnum2=20;abstractintnum3=30;privateintnum4=40;}}A、finalintnum1=10;B、staticintnum2=20;C、abstractintnum3=30;D、privateintnum4=40;【正確答案】:A88.以下關(guān)于匿名內(nèi)部類的描述,錯誤的選項是(())A、匿名內(nèi)部類是內(nèi)部類的簡化形式B、匿名內(nèi)部類的前提是必須要繼承父類或?qū)崿F(xiàn)接口C、匿名內(nèi)部類的格式是"new父類(參數(shù)列表)或父接口(){}"D、匿名內(nèi)部類可以有構(gòu)造方法【正確答案】:D89.下列關(guān)于類與對象的說法中,正確的是。(())A、類可以看做是一個具體的實例B、沒有類,也可以創(chuàng)建對象C、類是對某一類事物的抽象描述,而對象用于表示現(xiàn)實中該類事物的個體D、以上說法都
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都商鋪租賃合同范本:包含租賃合同變更及解除
- 車輛抵押貸款及產(chǎn)權(quán)轉(zhuǎn)讓全程服務(wù)合同范本
- 線上線下活動策劃合作委托合同
- 產(chǎn)科護理教學(xué)工作匯報
- 監(jiān)理專用表格匯編(承包商專用)
- 豐富興趣小組活動方案
- 單位小區(qū)電梯管理制度
- 值班值守平臺管理制度
- 口腔護士宿舍管理制度
- 學(xué)校費用收取管理制度
- 志愿服務(wù)證明(多模板)
- 2024屆高考語文復(fù)習(xí)詩歌教考融合之《登高》(含解析)
- 中南地區(qū)工程建設(shè)標(biāo)準(zhǔn)設(shè)計建筑圖集 13ZJ301 建筑無障礙設(shè)施
- 陰道炎演示課件
- 婦科疾病的運動與體育鍛煉預(yù)防
- 2023年重慶市高考思想政治試卷真題(含答案)
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 籃球比賽分組循環(huán)積分表
- 高中英語詞匯3500詞(必背)-excel版
- 人音版 音樂六年級上冊 《七色光之歌》課件
- 三字經(jīng)注解備要(清)賀興思撰
評論
0/150
提交評論