Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(5)
承蒙各位厚愛(ài),我們一起每天進(jìn)步一點(diǎn)點(diǎn)!(鼠標(biāo)選中空白處查看答案)
1、下列關(guān)于Java類(lèi)中方法的定義,正確的是()
正確答案: D
若代碼執(zhí)行到return語(yǔ)句,則將當(dāng)前值返回,而且繼續(xù)執(zhí)行return語(yǔ)句后面的語(yǔ)句。
只需要對(duì)使用基本數(shù)據(jù)類(lèi)型定義的屬性使用getter和setter,體現(xiàn)類(lèi)的封裝性。
方法的返回值只能是基本數(shù)據(jù)類(lèi)型。
在同一個(gè)類(lèi)中定義的方法,允許方法名稱(chēng)相同而形參列表不同。
題解:
A、一旦執(zhí)行到return,就不再執(zhí)行后續(xù)的代碼。
B、類(lèi)的封裝性可不是這么體現(xiàn)的,數(shù)據(jù)域和方法都可以被封裝。數(shù)據(jù)域可以是基本數(shù)據(jù)類(lèi)型也可以是引用類(lèi)型。
C、方法的返回值可以是引用類(lèi)型。
D、重載,判定方法只有方法名一致,形參列表不同。
2、Java Application 中的主類(lèi)需包含main方法,以下哪項(xiàng)是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é)問(wèn)題,描述錯(cuò)誤的是?
正確答案: B
構(gòu)造方法不需要同步化
一個(gè)子類(lèi)不可以覆蓋掉父類(lèi)的同步方法
定義在接口中的方法默認(rèn)是public的
容器保存的是對(duì)象的引用
題解:
B選項(xiàng),synchronized關(guān)鍵字實(shí)并不屬于方法簽名的一部分,子類(lèi)的同名方法可以覆蓋父類(lèi)的對(duì)應(yīng)方法,只不過(guò)synchronized修飾符不會(huì)被繼承,也就是說(shuō)子類(lèi)覆蓋后子類(lèi)的對(duì)應(yīng)方法就不同步了,但是可以調(diào)用的。這個(gè)時(shí)候調(diào)用父類(lèi)的對(duì)應(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
題解:
我記得這題以前用圖解釋過(guò),想簡(jiǎn)單理解的話(huà),就是String不變,字符會(huì)變。
java中都是按棧中的值傳遞,基本數(shù)據(jù)類(lèi)型棧中的值就是實(shí)際存儲(chǔ)的值,引用類(lèi)型棧中的值就是指向堆中的地址
1)String和char[ ]都是引用類(lèi)型,所以在方法中傳遞的都是指向真實(shí)數(shù)據(jù)的地址
2)假設(shè)String str指向的hello的地址為d1,str傳遞到fun函數(shù)中的也是地址d1,成員變量str和fun的形參str不是同一個(gè)變量,把fun型中的str賦值為world只是修改了該str指向的地址,該地址由d1更改成了world的地址,并沒(méi)有改變成員變量str指向的地址及堆中的數(shù)據(jù),所以str還是hello。
3)假設(shè)char[ ] ch指向的abc的地址是d2,傳遞到fun函數(shù)中的地址也是d2,同上成員變量ch和fun的形參ch不是同一個(gè)變量,(1)如果把fun中的ch[0]='d'更改為ch = new ch[3];ch[0]=‘d',那么成員變量ch的值是沒(méi)有變化的,還是abc,原理同上String,只是改變了引用ch指向的堆數(shù)據(jù)的地址,并沒(méi)有改變成員變量ch指向的地址以及堆中的數(shù)據(jù)。(2)改變了堆中的數(shù)據(jù),所以最終結(jié)果編程dbc,此ch只是形參而不是成成員變量ch,如果對(duì)ch變化對(duì)成員變量ch沒(méi)有影響,但是ch[i]指向了堆數(shù)據(jù)的地址,直接修改堆數(shù)據(jù),所以成員變量變了。
5、下面哪個(gè)Set類(lèi)是排序的?
正確答案: B
LinkedHashSet
TreeSet
HashSet
AbstractSet
題解:
TreeSet
使用二叉樹(shù)的原理對(duì)新 add()的對(duì)象按照指定的順序排序(升序、降序),每增加一個(gè)對(duì)象都會(huì)進(jìn)行排序,將對(duì)象插入的二叉樹(shù)指定的位置。
6、下面哪段程序能夠正確的實(shí)現(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;
}}
在代碼說(shuō)明// assignment x=a, y=b處寫(xiě)入如下哪幾個(gè)代碼是正確的?()
正確答案: C D
Base(a,b);
x=a, y=b;
x=a; y=b;
this(a,b);
題解:
A錯(cuò),調(diào)用Base這個(gè)構(gòu)造方法應(yīng)該這樣 new Base(a,b)
B錯(cuò),和C相比應(yīng)該是分號(hào)不是逗號(hào),帥的一塌糊涂
C正常賦值操作
D調(diào)用本類(lèi)的構(gòu)造方法
8、下面描述屬于java虛擬機(jī)功能的是?
正確答案: A B C D
通過(guò) ClassLoader 尋找和裝載 class 文件
解釋字節(jié)碼成為指令并執(zhí)行,提供 class 文件的運(yùn)行環(huán)境
進(jìn)行運(yùn)行期間垃圾回收
提供與硬件交互的平臺(tái)
題解:
D說(shuō)的是提供平臺(tái),也算對(duì)的
9、byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); //語(yǔ)句1
b6=b4+b5; //語(yǔ)句2
b8=(b1+b4); //語(yǔ)句3
b7=(b2+b5); //語(yǔ)句4
System.out.println(b3+b6);
下列代碼片段中,存在編譯錯(cuò)誤的語(yǔ)句是()
正確答案: B C D
語(yǔ)句2
語(yǔ)句1
語(yǔ)句3
語(yǔ)句4
題解:
本題答案應(yīng)為:B、C、D
------------知識(shí)點(diǎn)------------
Java表達(dá)式轉(zhuǎn)型規(guī)則由低到高轉(zhuǎn)換:
1、所有的byte,short,char型的值將被提升為int型;
2、如果有一個(gè)操作數(shù)是long型,計(jì)算結(jié)果是long型;
3、如果有一個(gè)操作數(shù)是float型,計(jì)算結(jié)果是float型;
4、如果有一個(gè)操作數(shù)是double型,計(jì)算結(jié)果是double型;
5、被fianl修飾的變量不會(huì)自動(dòng)改變類(lèi)型,當(dāng)2個(gè)final修飾相操作時(shí),結(jié)果會(huì)根據(jù)左邊變量的類(lèi)型而轉(zhuǎn)化。
--------------解析--------------
語(yǔ)句1錯(cuò)誤:b3=(b1+b2);自動(dòng)轉(zhuǎn)為int,所以正確寫(xiě)法為b3=(byte)(b1+b2);或者將b3定義為int;
語(yǔ)句2正確:b6=b4+b5;b4、b5為final類(lèi)型,不會(huì)自動(dòng)提升,所以和的類(lèi)型視左邊變量類(lèi)型而定,即b6可以是任意數(shù)值類(lèi)型;
語(yǔ)句3錯(cuò)誤:b8=(b1+b4);雖然b4不會(huì)自動(dòng)提升,但b1仍會(huì)自動(dòng)提升,所以結(jié)果需要強(qiáng)轉(zhuǎn),b8=(byte)(b1+b4);
語(yǔ)句4錯(cuò)誤:b7=(b2+b5); 同上。同時(shí)注意b7是final修飾,即只可賦值一次,便不可再改變。
10、下面選項(xiàng)中,哪些是interface中合法方法定義?()
正確答案: A C D
public void main(String [] args);
private int getSum();
boolean setFlag(Boolean [] test);
public float get(int x);
關(guān)于抽象類(lèi):
JDK1.8以前:抽象類(lèi)的方法默認(rèn)訪(fǎng)問(wèn)權(quán)限為protected
JDK1.8時(shí):抽象類(lèi)的方法默認(rèn)訪(fǎng)問(wèn)權(quán)限變?yōu)閐efault
關(guān)于接口:
JDK1.8以前:接口中的方法必須是public的
JDK1.8時(shí):接口中的方法可以是public的,也可以是default的
JDK1.9時(shí):接口中的方法還可以是private的
沒(méi)強(qiáng)調(diào)版本,所以這題站在現(xiàn)在的角度看ABCD都對(duì),JDK1.9時(shí)接口中的方法可以是private的
A項(xiàng)沒(méi)有static修飾符,可以作為普通的方法。
B剛才說(shuō)了JDK1.9就是對(duì)的
C不顯示標(biāo)明方法的訪(fǎng)問(wèn)修飾符,接口中默認(rèn)是public,沒(méi)毛病
D項(xiàng)也正常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é)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
java解析XML Node與Element的區(qū)別(推薦)
下面小編就為大家分享一篇java解析XML Node與Element的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
MybatisPlus 多租戶(hù)架構(gòu)(Multi-tenancy)實(shí)現(xiàn)詳解
這篇文章主要介紹了MybatisPlus 多租戶(hù)架構(gòu)(Multi-tenancy)實(shí)現(xiàn)詳解,詳細(xì)的介紹了什么是多租戶(hù)架構(gòu)以及使用MybatisPlus實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
IDEA 2021.2 激活教程及啟動(dòng)報(bào)錯(cuò)問(wèn)題解決方法
這篇文章主要介紹了IDEA 2021.2 啟動(dòng)報(bào)錯(cuò)及激活教程,文章開(kāi)頭給大家介紹了idea2021最新激活方法,關(guān)于idea2021啟動(dòng)報(bào)錯(cuò)的問(wèn)題小編也給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10
Hutool開(kāi)發(fā)利器MapProxy類(lèi)使用技巧詳解
這篇文章主要為大家介紹了Hutool開(kāi)發(fā)利器MapProxy類(lèi)使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Java-lambda表達(dá)式入門(mén)看這一篇就夠了
lambda表達(dá)式最簡(jiǎn)單的作用就是用于簡(jiǎn)化創(chuàng)建匿名內(nèi)部類(lèi)對(duì)象,Lambda表達(dá)式是一個(gè)可傳遞的代碼塊,可以在以后執(zhí)行一次或多次,下面通過(guò)本文給大家介紹Java-lambda表達(dá)式入門(mén)教程,感興趣的朋友一起看看吧2021-05-05
Spring MVC InitBinder驗(yàn)證方法
這篇文章主要介紹了Spring MVC InitBinder驗(yàn)證方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
java代碼實(shí)現(xiàn)MD5加密及驗(yàn)證過(guò)程詳解
這篇文章主要介紹了java代碼實(shí)現(xiàn)MD5加密及驗(yàn)證過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Java的MyBatis快速入門(mén)和實(shí)戰(zhàn)詳解
這篇文章主要介紹了Java的MyBatis快速入門(mén)和實(shí)戰(zhàn)詳解,MyBatis是一款優(yōu)秀的持久層框架,用于簡(jiǎn)化JDBC開(kāi)發(fā),是一套可重用的,通用的,軟件基礎(chǔ)代碼模型,需要的朋友可以參考下2023-05-05

