欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java十道入門易踩坑題分析后篇

 更新時(shí)間:2022年01月28日 15:44:39   作者:/少司命  
這篇文章總結(jié)分析了Java入門容易碰到的幾點(diǎn)易進(jìn)坑的題目,對(duì)于新手小白剛開始學(xué)Java非常有益處,讓你少走避開彎路,感興趣的朋友快來看看吧

一,寫在前面

本篇主要講類和對(duì)象這一章節(jié)的踩坑題,這一章也相對(duì)復(fù)雜和難理解,面試也是??嫉囊活愵},我分析的都是比較經(jīng)典的,讀者覺得自己學(xué)習(xí)的不夠扎實(shí),可以收藏,如果覺得寫發(fā)不錯(cuò)的話,求個(gè)免費(fèi)的贊,謝謝!

二,代碼分析        

代碼分析①

閱讀如下代碼。 請(qǐng)問,對(duì)語句行 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.能編譯通過,并正確運(yùn)行

B.因?yàn)槭褂昧宋闯跏蓟淖兞浚圆荒芫幾g通過

C.以錯(cuò)誤的方式訪問了靜態(tài)方法

D.能編譯通過,但因變量為null,不能正常運(yùn)行

靜態(tài)的方法不依賴于對(duì)象,直接可以調(diào)用類名,雖然test=null,但test不指向任何對(duì)象,可以直接調(diào)用test。選擇A

代碼分析②

下面代碼的運(yùn)行結(jié)果是()

public static void main(String[] args){
 
  String s;
 
  System.out.println("s="+s);
 
}

A.代碼編程成功,并輸出”s=”

B.代碼編譯成功,并輸出”s=null”

C.由于String s沒有初始化,代碼不能編譯通過。

D.代碼編譯成功,但捕獲到NullPointException異常

 使用局部變量必須初始化,否則會(huì)報(bào)錯(cuò)

如果我們使用成員變量,成員變量將會(huì)賦初值,局部變量使用一定要初始化

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

代碼分析④

當(dāng)你編譯和運(yùn)行下面的代碼時(shí),會(huì)出現(xiàn)下面選項(xiàng)中的哪種情況?

public class Pvf{
    static boolean Paddy;
    public static void main(String args[]){
        System.out.println(Paddy);
    }
}

A.編譯時(shí)錯(cuò)誤

B.編譯通過并輸出結(jié)果false

C.編譯通過并輸出結(jié)果true

D.編譯通過并輸出結(jié)果null

 靜態(tài)成員變量沒有賦初值,打印false

選擇B

代碼分析⑤

以下代碼運(yùn)行輸出的是

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.編譯出錯(cuò)

D.運(yùn)行出錯(cuò)

被 private 修飾的成員變量或者成員方法, 不能被類的調(diào)用者使用,編譯出錯(cuò)

 選擇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行不能通過編譯.因?yàn)閤星私有靜態(tài)變量

D.5行不能通過編譯.因?yàn)橐昧怂接徐o態(tài)變量

一般靜態(tài)變量是用類名訪問,不能通過對(duì)象的引用訪問,但這里是可以這樣寫的,編譯器不報(bào)錯(cuò),但不建議這樣寫。成員變量被static修飾它在方法區(qū)只有一個(gè),雖然hsl被引用兩次,但x還是原來的X,所以結(jié)果為102,不管x指向何處,它在方法區(qū)只有一份,選擇A

代碼分析⑦

以下代碼在編譯和運(yùn)行過程中會(huì)出現(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.編譯運(yùn)行通過,輸出結(jié)果是88

B.編譯時(shí)錯(cuò)誤,count變量定義的是私有變量

C.編譯時(shí)錯(cuò)誤,System.out.println方法被調(diào)用時(shí)test沒有被初始化

D.編譯和執(zhí)行時(shí)沒有輸出結(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)代碼塊不管生成多少個(gè)對(duì)象,其只會(huì)執(zhí)行一次,且是最先執(zhí)行的。

靜態(tài)代碼塊執(zhí)行完畢后, 實(shí)例代碼塊(構(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);
    }
 
}

 觀察一和二,他們其實(shí)各自對(duì)應(yīng)等價(jià),所以選擇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為浮點(diǎn)型,f=10.0; this不能訪問靜態(tài)變量;m為成員變量,要用引用訪問,不能用類名訪問;類名可以訪問靜態(tài)變量,所以選擇D

到此這篇關(guān)于Java十道入門易踩坑題分析的文章就介紹到這了,更多相關(guān)Java 踩坑題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論