Java類和對象習(xí)題及詳細(xì)答案解析
廢話不多說,例題:
習(xí)題一:
局部變量必須初始化:編譯不能通過
習(xí)題二:
首先hello方法是一個(gè)靜態(tài)成員方法(類方法)(不依賴于對象):
并且在main方法里面本來就可以直接調(diào)用,但要你非要初始化也沒關(guān)系,就算是沒初始化成功也沒關(guān)系,畢竟靜態(tài)方法不依賴于成員變量
你用引用調(diào)用(test.hello)合法但是不合理(最后你還是編譯通過了)
但是如果hello沒有用static修飾可就錯(cuò)了,畢竟你沒有實(shí)例化一個(gè)對象出來
習(xí)題三:
.import static 能夠?qū)胍恍╈o態(tài)方法
import static java . lang . Math . * ; public class Test { public static void main ( String [] args ) { double x = 30 ; double y = 40 ; // 靜態(tài)導(dǎo)入的方式寫起來更方便一些 . // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) ;這樣很爽,但是這樣的代碼要少寫 double result = sqrt ( pow ( x , 2 ) + pow ( y , 2 )); System . out . println ( result ); } }
習(xí)題四:
以下代碼在編譯和運(yùn)行過程中會(huì)出現(xiàn)什么情況?
會(huì)先執(zhí)行構(gòu)造方法,將88的值,賦值給count,所以最終輸出的值是88.
public class TestDemo{ private int count; public static void main(String[] args) { TestDemo test=new TestDemo(88); System.out.println(test.count); } TestDemo(int a) { count=a; } }
習(xí)題五:
cnt的值?
答:5
public class Test{ static int cnt = 6; static{ cnt += 9; } public static void main(String[] args){ System.out.println("cnt = " + cnt); } static{ cnt /=3; }; }
本題考察的是代碼塊的執(zhí)行順序。帶代碼中存在代碼塊和構(gòu)造方法的時(shí)候。執(zhí)行順序?yàn)椋?/p>
1.靜態(tài)代碼塊
2.實(shí)例代碼塊
3.調(diào)用的對應(yīng)的構(gòu)造方法
第2種情況:當(dāng)存在相同類型的代碼塊和成員變量的時(shí)候,需要看定義順序執(zhí)行。
習(xí)題六:
結(jié)果?
aaabbb
class Test{ public String toString() { System.out.print("aaa"); return "bbb"; } } public static void main(String[] args) { Test test = new Test(); System.out.println(test); }
在執(zhí)行println函數(shù)的時(shí)候,會(huì)調(diào)用Object類的toString方法,此時(shí)當(dāng)我們自己類重新通過編譯器實(shí)現(xiàn)了toString方法之后,會(huì)調(diào)用我們自己寫的方法。
我們自己寫的是返回“bbb”,先打印aaa,然后返回打印“bbb”
習(xí)題七:
結(jié)果?
答:102
public class HasStatic {// 1 private static int x = 100;// 2 public static void main(String args[]) {// 3 HasStatic hsl = new HasStatic();// 4 hsl.x++;// 5 HasStatic hs2 = new HasStatic();// 6 hs2.x++;// 7 hsl = new HasStatic();// 8 hsl.x++;// 9 HasStatic.x--;// 10 System.out.println(" x=" + x);// 11 } }
1.X是類變量,只有一份,所以說我們每次調(diào)用都會(huì)改變X的值,所有對x的操作針對的都是同一份。
2.靜態(tài)成員變量的訪問需要通過類名訪問,這是正確的訪問方式。本題中雖然使用了對象引用訪問,但是不會(huì)報(bào)錯(cuò),我們不建議這樣訪問,但不是錯(cuò)誤,所以,不會(huì)編譯報(bào)錯(cuò)
那大家看看這個(gè)代碼結(jié)果是什么?
class Test1 { public int count; public Test1(int a){ this.count = a; } public Test1(){ } } public class Test { public static void main(String[] args) { Test1 test = new Test1(88); System.out.println(test.count); Test1 test1 = new Test1(77); System.out.println(test1.count); Test1 test2 = new Test1(); System.out.println(test2.count); } }
結(jié)果:
習(xí)題八:
編譯運(yùn)行的結(jié)果?
public class Pvf{ static boolean Paddy; public static void main(String args[]){ System.out.println(Paddy); } }
Passy類變量也是成員變量的默認(rèn)賦值規(guī)則:
在Java當(dāng)中,成員變量沒有賦初值的時(shí)候,會(huì)有默認(rèn)的初始值。基本類型是對應(yīng)的0值。如:int是0,boolean是false,char類型是'\u0000',引用類型是null,如String。
習(xí)題九:
下述代碼運(yùn)行的結(jié)果是什么?
public class Test { public int aMethod(){ static int i = 0; i++; return i; } public static void main(String args[]){ Test test = new Test(); test.aMethod(); int j = test.aMethod(); System.out.println(j); } }
Java里面局部變量不能被static修飾!?。?/strong>
在一個(gè)類中,在方法當(dāng)中定義的變量是局部變量,而靜態(tài)的變量屬于類變量。隨著類的加載而被創(chuàng)建,而局部變量是調(diào)用該方法的時(shí)候才創(chuàng)建的。
所以,此時(shí)兩種變量的性質(zhì)是沖突的。程序會(huì)報(bào)編譯時(shí)異常
總結(jié)
到此這篇關(guān)于Java類和對象習(xí)題及詳細(xì)答案解析的文章就介紹到這了,更多相關(guān)Java類和對象習(xí)題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
三分鐘帶你掌握J(rèn)ava開發(fā)圖片驗(yàn)證碼功能方法
這篇文章主要來為大家詳細(xì)介紹Java實(shí)現(xiàn)開發(fā)圖片驗(yàn)證碼的具體方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02解決springboot中mongodb不啟動(dòng)及Dao不能被掃描到的問題
這篇文章主要介紹了解決springboot中mongodb不啟動(dòng)及Dao不能被掃描到的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05springboot+VUE前后端分離實(shí)現(xiàn)疫情防疫平臺JAVA
本文主要使用了Java、springmvc、VUE、node.js、mybatis、mysql、tomcat、jquery、layui、bootstarp、JavaScript、html、css、jsp、log4j等一些常見的基本技術(shù),實(shí)現(xiàn)一個(gè)疫情防疫小平臺2021-08-08最新springboot中必須要了解的自動(dòng)裝配原理
本文給大家介紹springboot中必須要了解的自動(dòng)裝配原理,spring-boot-dependencies:核心依賴都在父工程中,這個(gè)里面主要是管理項(xiàng)目的資源過濾及插件,本文對springboot自動(dòng)裝配原理給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-05-05Java集合排序規(guī)則接口Comparator用法解析
這篇文章主要介紹了Java集合排序規(guī)則接口Comparator用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09基于java實(shí)現(xiàn)websocket協(xié)議過程詳解
這篇文章主要介紹了基于java實(shí)現(xiàn)websocket協(xié)議過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:考拉茲猜想 Collatz Conjecture
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:考拉茲猜想 Collatz Conjecture,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06