Java日常練習(xí)題,每天進(jìn)步一點點(5)
承蒙各位厚愛,我們一起每天進(jìn)步一點點?。ㄊ髽?biāo)選中空白處查看答案)
1、下列關(guān)于Java類中方法的定義,正確的是()
正確答案: D
若代碼執(zhí)行到return語句,則將當(dāng)前值返回,而且繼續(xù)執(zhí)行return語句后面的語句。
只需要對使用基本數(shù)據(jù)類型定義的屬性使用getter和setter,體現(xiàn)類的封裝性。
方法的返回值只能是基本數(shù)據(jù)類型。
在同一個類中定義的方法,允許方法名稱相同而形參列表不同。
題解:
A、一旦執(zhí)行到return,就不再執(zhí)行后續(xù)的代碼。
B、類的封裝性可不是這么體現(xiàn)的,數(shù)據(jù)域和方法都可以被封裝。數(shù)據(jù)域可以是基本數(shù)據(jù)類型也可以是引用類型。
C、方法的返回值可以是引用類型。
D、重載,判定方法只有方法名一致,形參列表不同。
2、Java Application 中的主類需包含main方法,以下哪項是main方法的正確形參?( )
正確答案: B
String args
String[] args
Char arg
StringBuffer[] args
題解:
送分題,main函數(shù)的形式為public static void main(String[] args),所以選B
String[] args / String args[] / String… args都是正確的。
3、下面有關(guān)java的一些細(xì)節(jié)問題,描述錯誤的是?
正確答案: B
構(gòu)造方法不需要同步化
一個子類不可以覆蓋掉父類的同步方法
定義在接口中的方法默認(rèn)是public的
容器保存的是對象的引用
題解:
B選項,synchronized關(guān)鍵字實并不屬于方法簽名的一部分,子類的同名方法可以覆蓋父類的對應(yīng)方法,只不過synchronized修飾符不會被繼承,也就是說子類覆蓋后子類的對應(yīng)方法就不同步了,但是可以調(diào)用的。這個時候調(diào)用父類的對應(yīng)方法還是可以同步的。
接口中的方法默認(rèn)都是public static final
4、以下代碼執(zhí)行后輸出結(jié)果為( )
public class ClassTest{ String str = new String("hello"); char[] ch = {'a','b','c'}; public void fun(String str, char ch[]){ str="world"; ch[0]='d'; } public static void main(String[] args) { ClassTest test1 = new ClassTest(); test1.fun(test1.str,test1.ch); System.out.print(test1.str + " and "); System.out.print(test1.ch); } }
正確答案: A
hello and dbc
world and abc
hello and abc
world and dbc
題解:
我記得這題以前用圖解釋過,想簡單理解的話,就是String不變,字符會變。
java中都是按棧中的值傳遞,基本數(shù)據(jù)類型棧中的值就是實際存儲的值,引用類型棧中的值就是指向堆中的地址
1)String和char[ ]都是引用類型,所以在方法中傳遞的都是指向真實數(shù)據(jù)的地址
2)假設(shè)String str指向的hello的地址為d1,str傳遞到fun函數(shù)中的也是地址d1,成員變量str和fun的形參str不是同一個變量,把fun型中的str賦值為world只是修改了該str指向的地址,該地址由d1更改成了world的地址,并沒有改變成員變量str指向的地址及堆中的數(shù)據(jù),所以str還是hello。
3)假設(shè)char[ ] ch指向的abc的地址是d2,傳遞到fun函數(shù)中的地址也是d2,同上成員變量ch和fun的形參ch不是同一個變量,(1)如果把fun中的ch[0]='d'更改為ch = new ch[3];ch[0]=‘d',那么成員變量ch的值是沒有變化的,還是abc,原理同上String,只是改變了引用ch指向的堆數(shù)據(jù)的地址,并沒有改變成員變量ch指向的地址以及堆中的數(shù)據(jù)。(2)改變了堆中的數(shù)據(jù),所以最終結(jié)果編程dbc,此ch只是形參而不是成成員變量ch,如果對ch變化對成員變量ch沒有影響,但是ch[i]指向了堆數(shù)據(jù)的地址,直接修改堆數(shù)據(jù),所以成員變量變了。
5、下面哪個Set類是排序的?
正確答案: B
LinkedHashSet
TreeSet
HashSet
AbstractSet
題解:
TreeSet
使用二叉樹的原理對新 add()的對象按照指定的順序排序(升序、降序),每增加一個對象都會進(jìn)行排序,將對象插入的二叉樹指定的位置。
6、下面哪段程序能夠正確的實現(xiàn)了GBK編碼字節(jié)流到UTF-8編碼字節(jié)流的轉(zhuǎn)換:
byte[] src,dst;
正確答案: B
A:dst=String.fromBytes(src,“GBK”).getBytes(“UTF-8”)
B:dst=new String(src,“GBK”).getBytes(“UTF-8”)
C:dst=new String(“GBK”,src).getBytes()
D:dst=String.encode(String.decode(src,“GBK”)),“UTF-8” )
題解:
答案:B
操作步驟就是先解碼再編碼
用new String(src,“GBK”)解碼得到字符串
用getBytes(“UTF-8”)得到UTF8編碼字節(jié)數(shù)組
7、給出下面的代碼段:
public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;z=c;
}}
在代碼說明// assignment x=a, y=b處寫入如下哪幾個代碼是正確的?()
正確答案: C D
Base(a,b);
x=a, y=b;
x=a; y=b;
this(a,b);
題解:
A錯,調(diào)用Base這個構(gòu)造方法應(yīng)該這樣 new Base(a,b)
B錯,和C相比應(yīng)該是分號不是逗號,帥的一塌糊涂
C正常賦值操作
D調(diào)用本類的構(gòu)造方法
8、下面描述屬于java虛擬機(jī)功能的是?
正確答案: A B C D
通過 ClassLoader 尋找和裝載 class 文件
解釋字節(jié)碼成為指令并執(zhí)行,提供 class 文件的運行環(huán)境
進(jìn)行運行期間垃圾回收
提供與硬件交互的平臺
題解:
D說的是提供平臺,也算對的
9、byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); //語句1
b6=b4+b5; //語句2
b8=(b1+b4); //語句3
b7=(b2+b5); //語句4
System.out.println(b3+b6);
下列代碼片段中,存在編譯錯誤的語句是()
正確答案: B C D
語句2
語句1
語句3
語句4
題解:
本題答案應(yīng)為:B、C、D
------------知識點------------
Java表達(dá)式轉(zhuǎn)型規(guī)則由低到高轉(zhuǎn)換:
1、所有的byte,short,char型的值將被提升為int型;
2、如果有一個操作數(shù)是long型,計算結(jié)果是long型;
3、如果有一個操作數(shù)是float型,計算結(jié)果是float型;
4、如果有一個操作數(shù)是double型,計算結(jié)果是double型;
5、被fianl修飾的變量不會自動改變類型,當(dāng)2個final修飾相操作時,結(jié)果會根據(jù)左邊變量的類型而轉(zhuǎn)化。
--------------解析--------------
語句1錯誤:b3=(b1+b2);自動轉(zhuǎn)為int,所以正確寫法為b3=(byte)(b1+b2);或者將b3定義為int;
語句2正確:b6=b4+b5;b4、b5為final類型,不會自動提升,所以和的類型視左邊變量類型而定,即b6可以是任意數(shù)值類型;
語句3錯誤:b8=(b1+b4);雖然b4不會自動提升,但b1仍會自動提升,所以結(jié)果需要強轉(zhuǎn),b8=(byte)(b1+b4);
語句4錯誤:b7=(b2+b5); 同上。同時注意b7是final修飾,即只可賦值一次,便不可再改變。
10、下面選項中,哪些是interface中合法方法定義?()
正確答案: A C D
public void main(String [] args);
private int getSum();
boolean setFlag(Boolean [] test);
public float get(int x);
關(guān)于抽象類:
JDK1.8以前:抽象類的方法默認(rèn)訪問權(quán)限為protected
JDK1.8時:抽象類的方法默認(rèn)訪問權(quán)限變?yōu)閐efault
關(guān)于接口:
JDK1.8以前:接口中的方法必須是public的
JDK1.8時:接口中的方法可以是public的,也可以是default的
JDK1.9時:接口中的方法還可以是private的
沒強調(diào)版本,所以這題站在現(xiàn)在的角度看ABCD都對,JDK1.9時接口中的方法可以是private的
A項沒有static修飾符,可以作為普通的方法。
B剛才說了JDK1.9就是對的
C不顯示標(biāo)明方法的訪問修飾符,接口中默認(rèn)是public,沒毛病
D項也正常get也不是關(guān)鍵字可以作為方法名
答案匯總:
1、正確答案: D
2、正確答案: B
3、正確答案: B
4、正確答案: A
5、正確答案: B
6、正確答案: B
7、正確答案: C D
8、正確答案: A B C D
9、正確答案: B C D
10、正確答案: A C D
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
idea中使用SonarLint進(jìn)行代碼規(guī)范檢測及使用方法
這篇文章主要介紹了idea中使用SonarLint進(jìn)行代碼規(guī)范檢測,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08SpringBoot服務(wù)上實現(xiàn)接口限流的方法
這篇文章主要介紹了SpringBoot服務(wù)上實現(xiàn)接口限流的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10如何解決Spring事務(wù)注解@Transactional在類內(nèi)部方法調(diào)用不生效
這篇文章主要介紹了如何解決Spring事務(wù)注解@Transactional在類內(nèi)部方法調(diào)用不生效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08java中Scanner.next()和Scanner.nextLine的區(qū)別圖文詳解
使用java語言編程,最常用的輸入就是使用Scanner了,它的構(gòu)造很簡單,這篇文章主要給大家介紹了關(guān)于java中Scanner.next()和Scanner.nextLine區(qū)別的相關(guān)資料,需要的朋友可以參考下2024-02-02基于Java實現(xiàn)文件和base64字符串轉(zhuǎn)換
這篇文章主要介紹了基于Java實現(xiàn)文件和base64字符串轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01