第一天

1:實例化一個對象的時候,靜態變量,靜態初始化塊,普通變量,普通初始化快,構造函數的創建順序:

 

靜態初始化變量
靜態初始化方法
普通變量
普通初始化快
構造方法

 

 

2:當有繼承關係的時候:

 

父類靜態變量
父類靜態初始化塊
子類靜態變量
子類靜態初始化塊
父類普通變量
父類普通初始化塊
父類構造函數
子類普通變量
子類普通初始化塊
子類構造函數

 

 

3:靜態變量和靜態初始化快的先後順序是:

根據在類當中的聲明順序來定。

 

4:到底創建了幾個對象

String str = new String("abc");//創建了兩個對象

 

 

string a = "abc";//創建了一個對象

 

 

string b = "abc";

string c = "abc";//創建了一個對象

 

 

string d = "ab" + "cd";//創建了一個對象

 

string a = "ab";

string b ="cd";

string c = "abcd";

string e = a + "cd";//e != c

string d  = "ab" + "cd";// d == c

 

 

public static final string A = "ab";

public static final string B = "cd";

string s = A + B;

string t  = "abcd";//s == t;

 

public static final string A ;

public static final string B;

static{

  A = "ab";

  B = "cd";

}

string s = A + B;

string t  = "abcd";//s != t;

 

 

string s = new string(new char[]{'a','b','c','d'});

string t = s.intern();// t != s,因爲這個時候t指向的是字符串池中的對象,而s 不是

 

 5:變量的覆蓋

class Parent(){

  int i = 10;

}

 

class child extends Parent (){

  int i = 30;

 

public static void main(String[] args){
  new Child();
  Parent par = new Child();
  Child child = new Child();
  System.out.println(par.i + child.i);//值是40

//屬性的值取父類還是子類,不是由對象的類型來決定的,而是由我們定義的變量的類型來決定的;

//補充:方法是取子類的類型,這是多態。

//常量也可以被覆蓋
 }

}

 

6:final,finally,finalize的區別

final修飾的變量只能被初始化一次,且必須被初始化,在初始化的時候有一個static變量和static方法快互斥的關係。

final修飾方法的時候表示該方法不能被子類重寫。

final修飾類的話表示該類不能被繼承,所以final不能和abstract一起使用。

finalize表示gc在進行垃圾回收的時候調用該方法。

 

7:string 和 char

一箇中文是一個字符,也就是兩個字節,一個char是兩個字節;一個英文字母是一個字節,所以:

char a = '中';//正確

byte b ='國';//錯誤

byte c = 'a';

System.out.println(c);//97,而不是a

 

判斷一個string str1在不同的編碼方式encodetype(如gbk,utf-16)下有幾個字節:

str1.getBytes(encodetype).length;

 

string s1 和stringbuffer sb1的聯繫:

stringbuffer sb1 = new stringbuffer(s1);//sb1.reverse().toString()

 

string str1 和 char c1的聯繫:

str1 = String.valueOf(c1);

 

string str1 和byte數組byte[] tmp的關係:

str1 = new String(tmp);

 

 

8:Date和Calendar(一個抽象類)

date類基本上只有一個getTime方法(1262256841918),system.out.println(date)打印的值是(Thu Dec 31 18:55:01 CST 2009)。

 

因爲Calendar是一個抽象類,所以不能被初始化,它有一個具體的子類實體類,GenerationCalendar,這個類可以通過new方法實例化,也可以通過Calendar.getInstance()來獲得。

calendar對象就有很多的屬性可以被我們的程序使用:

cal.DATE;
  cal.DAY_OF_MONTH;
  cal.DAY_OF_WEEK;
  cal.DAY_OF_WEEK_IN_MONTH;
  cal.DAY_OF_YEAR;
  cal.DECEMBER;
  cal.DST_OFFSET;
  cal.AM_PM
  cal.SECOND
  cal.MILLISECOND

等等。

 

Date和Calendar之間的轉換:

Date d1 = cal.getTime();

 

9:基本數據類型:

double

float

long

 

double d1  = 7L;//正確

float f1 = 7L;//正確

long l1 = 2f;//錯誤

long l2  3d;//錯誤

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章