Java類(lèi)和對(duì)象習(xí)題及詳細(xì)答案解析
廢話不多說(shuō),例題:
習(xí)題一:
局部變量必須初始化:編譯不能通過(guò)
習(xí)題二:
首先hello方法是一個(gè)靜態(tài)成員方法(類(lèi)方法)(不依賴(lài)于對(duì)象):
并且在main方法里面本來(lái)就可以直接調(diào)用,但要你非要初始化也沒(méi)關(guān)系,就算是沒(méi)初始化成功也沒(méi)關(guān)系,畢竟靜態(tài)方法不依賴(lài)于成員變量
你用引用調(diào)用(test.hello)合法但是不合理(最后你還是編譯通過(guò)了)
但是如果hello沒(méi)有用static修飾可就錯(cuò)了,畢竟你沒(méi)有實(shí)例化一個(gè)對(duì)象出來(lái)
習(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)入的方式寫(xiě)起來(lái)更方便一些 . // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) ;這樣很爽,但是這樣的代碼要少寫(xiě) double result = sqrt ( pow ( x , 2 ) + pow ( y , 2 )); System . out . println ( result ); } }
習(xí)題四:
以下代碼在編譯和運(yùn)行過(guò)程中會(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)用的對(duì)應(yīng)的構(gòu)造方法
第2種情況:當(dāng)存在相同類(lèi)型的代碼塊和成員變量的時(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類(lèi)的toString方法,此時(shí)當(dāng)我們自己類(lèi)重新通過(guò)編譯器實(shí)現(xiàn)了toString方法之后,會(huì)調(diào)用我們自己寫(xiě)的方法。
我們自己寫(xiě)的是返回“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是類(lèi)變量,只有一份,所以說(shuō)我們每次調(diào)用都會(huì)改變X的值,所有對(duì)x的操作針對(duì)的都是同一份。
2.靜態(tài)成員變量的訪問(wèn)需要通過(guò)類(lèi)名訪問(wèn),這是正確的訪問(wèn)方式。本題中雖然使用了對(duì)象引用訪問(wèn),但是不會(huì)報(bào)錯(cuò),我們不建議這樣訪問(wèn),但不是錯(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類(lèi)變量也是成員變量的默認(rèn)賦值規(guī)則:
在Java當(dāng)中,成員變量沒(méi)有賦初值的時(shí)候,會(huì)有默認(rèn)的初始值。基本類(lèi)型是對(duì)應(yīng)的0值。如:int是0,boolean是false,char類(lèi)型是'\u0000',引用類(lèi)型是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修飾?。?!
在一個(gè)類(lèi)中,在方法當(dāng)中定義的變量是局部變量,而靜態(tài)的變量屬于類(lèi)變量。隨著類(lèi)的加載而被創(chuàng)建,而局部變量是調(diào)用該方法的時(shí)候才創(chuàng)建的。
所以,此時(shí)兩種變量的性質(zhì)是沖突的。程序會(huì)報(bào)編譯時(shí)異常
總結(jié)
到此這篇關(guān)于Java類(lèi)和對(duì)象習(xí)題及詳細(xì)答案解析的文章就介紹到這了,更多相關(guān)Java類(lèi)和對(duì)象習(xí)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
三分鐘帶你掌握J(rèn)ava開(kāi)發(fā)圖片驗(yàn)證碼功能方法
這篇文章主要來(lái)為大家詳細(xì)介紹Java實(shí)現(xiàn)開(kāi)發(fā)圖片驗(yàn)證碼的具體方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02解決springboot中mongodb不啟動(dòng)及Dao不能被掃描到的問(wèn)題
這篇文章主要介紹了解決springboot中mongodb不啟動(dòng)及Dao不能被掃描到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05springboot+VUE前后端分離實(shí)現(xiàn)疫情防疫平臺(tái)JAVA
本文主要使用了Java、springmvc、VUE、node.js、mybatis、mysql、tomcat、jquery、layui、bootstarp、JavaScript、html、css、jsp、log4j等一些常見(jiàn)的基本技術(shù),實(shí)現(xiàn)一個(gè)疫情防疫小平臺(tái)2021-08-08最新springboot中必須要了解的自動(dòng)裝配原理
本文給大家介紹springboot中必須要了解的自動(dòng)裝配原理,spring-boot-dependencies:核心依賴(lài)都在父工程中,這個(gè)里面主要是管理項(xiàng)目的資源過(guò)濾及插件,本文對(duì)springboot自動(dòng)裝配原理給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-05-05Java集合排序規(guī)則接口Comparator用法解析
這篇文章主要介紹了Java集合排序規(guī)則接口Comparator用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09基于java實(shí)現(xiàn)websocket協(xié)議過(guò)程詳解
這篇文章主要介紹了基于java實(shí)現(xiàn)websocket協(xié)議過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(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