1. 程式人生 > >JavaSE複習——基礎篇

JavaSE複習——基礎篇

針對此次的java期末考試寫幾篇文,作為自己複習資料。

入門篇——定義概念

基礎篇——基礎知識

技術篇——對知識的深入理解


11、有以下方法的定義,請選擇該方法的返回型別(    )。
	ReturnType  method(byte x, double y)
	{
		return  (short)x/y*2;
	}
A、byte	B、short	C、int	D、double

選D

1.運算時所有byte、short、char型將被提升到int型

2.整個算術表示式的資料型別自動提升到與表示式中最高等級運算元同樣的型別(排序double>float>long>int>short>byte)

4.閱讀程式段,回答問題:
public class ClassA{
  public void method1(int i){}
  public void method2(int i){}
  public static void method3(int i){}
  public static void method4(int i){}
}
public class  ClassB extends ClassA{
  public static void method1(int i){}
  public void method2(int i){}
  public void method3(int i){}
  public static void method4(int i){}
}
ClassB中(method1、method2、method3、method4)四個方法,方法 
  _method2_______覆蓋了父類方法;方法___method4_____ 隱藏了父類方法。

Java例項方法被覆蓋,靜態方法被隱藏。(詳見技術篇

 

3. 已知有下列Test類的說明,則下列哪個語句是正確的?(_______    )
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.f;
    B)this.n;
    C)Test.m;
    D)Test.f;

連結:https://www.nowcoder.com/questionTerminal/ac5b5d29942a40bfa182a21db3b086a2?orderByHotValue=1&page=1&onlyReference=false
來源:牛客網
 

1、f 雖然是 Test 類的私有成員屬性,但因為 main 方法就在 Test 類內,因此可以通過 “物件名.屬性名” 的方式呼叫,所以 A 對。

2、static 靜態成員屬性不能使用 this 關鍵字呼叫,B 錯

      this是指向物件的的引用,而靜態方法在類載入的時候建立載入,此時沒有建立物件。

3、m 和 f 都是普通成員屬性,而 “類名.” 方式只能呼叫 靜態成員屬性,因此 C 和 D 都錯。

12.順序執行下列程式語句後,則b的值是(  )
    String  a="Hello";
    String  b=a.substring(0,2);
A)Hello
B)hello
C)Hel
D)null

這道題無正確選項,正確答案為"he",substring為左閉右開

string.substring(from):此時相當於從from位置擷取到原字串末尾

1、String.substr( ):作用也是抽去一個子串,但是它和上面的String.substring( )有所不同
用法如下:string.substr(start, length)
start:指代擷取子串開始下標
length:擷取子串的長度(可省略)

Substr補充兩種特殊情況:
a、第二個引數超過了剩餘字元長度,這種情況下預設從,start位置到原字串末尾,即返回:"ello"

b、第一個引數為負數
這種情況,從字串尾部開始計算,-1指字串最後一個字元,-2指倒數第二個字元...依次類推

2、String.substr(start):不帶length引數,預設指代從start位置擷取到字串末尾

13.下列整型的最終屬性 i 的定義中,正確的是(____    )。
  A) static final int i=100;     B) final i;
  C) static int i;               D) final float i=1.2f;

題目要點:
    一:整形
    二:最終屬性(final)
    三:定義,而不只是宣告

17、給定下列表達式
  Integer I= new Integer(42);
  Long  L= new Long(42);
  Double D= new Double(42.0);
則下列表達式輸出為true的是__D___
(A) (I==L)  (B)  (I==D)   (C) (D==L)   (D)  (I.equals (D))

   此處無正確答案

   ABC不同型別使用 == 編譯出錯

   D中包裝類使用equals會先判斷是否instance,不是的話直接返回false

   (用instanceof判斷傳入的物件和this是不是一個類的物件)

   (詳見技術篇)

10.下面在命令列執行Java應用程式A:
    java A the first snow came first  
    怎樣才能在main(String args[])方法中訪問單詞”first”(C) 
A )args[0]       B) args[2]        C) args[4]       D) args[5]

  java:對jvm說的執行命令

  A:這個類

15.下面程式中,有錯誤的一行是:( )
Final  class MyClass            ①
          { int var=100 ;          ②
            static int getVar()         ③
           { 
            return var;               ④
       } } 
A)①	           B)②           C)③	        D)④

   靜態方法不能呼叫非靜態變數。

2.關於Java語言的記憶體回收機制,下列選項中正確的一項是(C)
    A) Java程式要求使用者必須手工建立一個執行緒來釋放記憶體
    B) Java程式不允許使用者使用手動來釋放記憶體
    C) 記憶體回收執行緒負責釋放無用記憶體
    D) 記憶體回收執行緒不能釋放記憶體物件

Java和c++之間有一堵由記憶體分配和垃圾收集技術所圍成的“高牆”,牆外面的人想進去,牆裡面的人想出來

 java的GC回收是完全自動的,沒有提供相關api手動回收,所有的記憶體分配和回收許可權都在jvm,不在開發人員手裡

沒有絕對的強制垃圾回收的方法,不過可以這樣去做:
1. 對於不再引用的物件,及時把它的引用賦為null。 obj = null;
2. 如果記憶體確實很緊張,呼叫System.gc() 方法來建議垃圾回收器開始回收垃圾。通知GC執行,但是Java語言規範並不保證GC一定會執行。

重點內容
Java程式設計師在編寫程式的時候不再需要考慮記憶體管理。由於有個垃圾回收機制,Java中的物件不再有”作用域”的概念,只有物件的引用才有”作用域”。垃圾回收可以有效的防止記憶體洩露,有效的使用可以使用的記憶體。垃圾回收器通常是作為一個單獨的低級別的執行緒執行,不可預知的情況下對記憶體堆中已經死亡的或者長時間沒有使用的物件進行清楚和回收,程式設計師不能實時的呼叫垃圾回收器對某個物件或所有物件進行垃圾回收。
--------------------- 
作者:youngogo 
來源:CSDN 
原文:https://blog.csdn.net/youngogo/article/details/82184954 
版權宣告:本文為博主原創文章,轉載請附上博文連結!