Java十道入門易踩坑題分析后篇
一,寫在前面
本篇主要講類和對象這一章節(jié)的踩坑題,這一章也相對復雜和難理解,面試也是常考的一類題,我分析的都是比較經(jīng)典的,讀者覺得自己學習的不夠扎實,可以收藏,如果覺得寫發(fā)不錯的話,求個免費的贊,謝謝!
二,代碼分析
代碼分析①
閱讀如下代碼。 請問,對語句行 test.hello(). 描述正確的有()
package NowCoder; class Test { public static void hello() { System.out.println("hello"); } } public class MyApplication { public static void main(String[] args) { // TODO Auto-generated method stub Test test=null; test.hello(); } }
A.能編譯通過,并正確運行
B.因為使用了未初始化的變量,所以不能編譯通過
C.以錯誤的方式訪問了靜態(tài)方法
D.能編譯通過,但因變量為null,不能正常運行
靜態(tài)的方法不依賴于對象,直接可以調(diào)用類名,雖然test=null,但test不指向任何對象,可以直接調(diào)用test。選擇A
代碼分析②
下面代碼的運行結(jié)果是()
public static void main(String[] args){ String s; System.out.println("s="+s); }
A.代碼編程成功,并輸出”s=”
B.代碼編譯成功,并輸出”s=null”
C.由于String s沒有初始化,代碼不能編譯通過。
D.代碼編譯成功,但捕獲到NullPointException異常
使用局部變量必須初始化,否則會報錯
如果我們使用成員變量,成員變量將會賦初值,局部變量使用一定要初始化
class rra{ String s; public static void main(String[] args) { rra t = new rra(); System.out.println(t.s); } }
選擇D
代碼分析③
如下代碼的輸出結(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); } }
A.0
B.1
C.2
D.編譯失敗
在方法里面不能定義靜態(tài)的變量,靜態(tài)的變量屬于類變量,不能編譯通過
選擇D
代碼分析④
當你編譯和運行下面的代碼時,會出現(xiàn)下面選項中的哪種情況?
public class Pvf{ static boolean Paddy; public static void main(String args[]){ System.out.println(Paddy); } }
A.編譯時錯誤
B.編譯通過并輸出結(jié)果false
C.編譯通過并輸出結(jié)果true
D.編譯通過并輸出結(jié)果null
靜態(tài)成員變量沒有賦初值,打印false
選擇B
代碼分析⑤
以下代碼運行輸出的是
public class Person{ private String name = "Person"; int age=0; } public class Child extends Person{ public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(p.name); } }
A.輸出:Person
B.沒有輸出
C.編譯出錯
D.運行出錯
被 private 修飾的成員變量或者成員方法, 不能被類的調(diào)用者使用,編譯出錯
選擇C
代碼分析⑥
關(guān)于以下程序代碼的說明正確的是()
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 } }
A.程序通過編譯,輸出結(jié)果為:x=102
B.程序通過編譯,輸出結(jié)果為:x=103
C.10行不能通過編譯.因為x星私有靜態(tài)變量
D.5行不能通過編譯.因為引用了私有靜態(tài)變量
一般靜態(tài)變量是用類名訪問,不能通過對象的引用訪問,但這里是可以這樣寫的,編譯器不報錯,但不建議這樣寫。成員變量被static修飾它在方法區(qū)只有一個,雖然hsl被引用兩次,但x還是原來的X,所以結(jié)果為102,不管x指向何處,它在方法區(qū)只有一份,選擇A
代碼分析⑦
以下代碼在編譯和運行過程中會出現(xiàn)什么情況
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; } }
A.編譯運行通過,輸出結(jié)果是88
B.編譯時錯誤,count變量定義的是私有變量
C.編譯時錯誤,System.out.println方法被調(diào)用時test沒有被初始化
D.編譯和執(zhí)行時沒有輸出結(jié)果
count 初始值為0.new帶有參數(shù)的構(gòu)造方法,a=88,count=88,選擇A
代碼分析⑧
cnt的值是( )
public class Test{ static int cnt = 6; static{ cnt += 9; } public static void main(String[] args){ System.out.println(“cnt =” + cnt); } static{ cnt /=3; }; }
A.cnt=5
B. cnt=2
C.cnt=3
D.cnt=6
靜態(tài)代碼塊不管生成多少個對象,其只會執(zhí)行一次,且是最先執(zhí)行的。
靜態(tài)代碼塊執(zhí)行完畢后, 實例代碼塊(構(gòu)造塊)執(zhí)行,再然后是構(gòu)造函數(shù)執(zhí)行
所以cnt從上到下依次執(zhí)行,選擇A
代碼分析⑨
程序輸出結(jié)果為:
class Test{ public String toString() { System.out.print("aaa"); return "bbb"; } } public static void main(String[] args) { System.out.println(new Test()); }
A.aaa
B.bbb
C.aaabbb
D.bbbaaa
解決這道題先引用一段代碼
class Test{ public String toString() { System.out.print("aaa"); return "bbb"; } } class ss{ public static void main(String[] args) { Test test = new Test(); System.out.println(test); System.out.println(new Test()); int a = 10; System.out.println(a); System.out.println(10); } }
觀察一和二,他們其實各自對應(yīng)等價,所以選擇C
代碼分析⑩
如下哪些使用是正確的()
public class Test{ private float f=1.0f; int m=12; static int n=1; public static void main(String args[]){ Test t=new Test(); } }
A.t.a = 1.0
B.this.n
C.Test.m
D.Test.n
由題意知,f和m放在堆區(qū),n在方法區(qū)(靜態(tài)成員變量放在方法區(qū)),f雖然可以引用,但f為浮點型,f=10.0; this不能訪問靜態(tài)變量;m為成員變量,要用引用訪問,不能用類名訪問;類名可以訪問靜態(tài)變量,所以選擇D
到此這篇關(guān)于Java十道入門易踩坑題分析的文章就介紹到這了,更多相關(guān)Java 踩坑題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot自定義starter啟動器的實現(xiàn)思路
這篇文章主要介紹了SpringBoot如何自定義starter啟動器,通過starter的自定義過程,能夠加深大家對SpringBoot自動配置原理的理解,需要的朋友可以參考下2022-10-10Java的Struts框架中登陸功能的實現(xiàn)和表單處理器的使用
這篇文章主要介紹了Java的Struts框架中登陸功能的實現(xiàn)和表單處理器的使用,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12JAVA隨機數(shù)隨機字母的實現(xiàn)(微信搶紅包小練習)
這篇文章主要介紹了JAVA隨機數(shù)隨機字母的實現(xiàn)(微信搶紅包小練習),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04