JAVA 編程思想二

來源:互聯網
上載者:User

標籤:防止   system   最大的   參考型別   order   16進位   不能   原因   封裝   

1: java  單根繼承的優點?

           方便記憶體回收: 記憶體回收的設計會方便實現。

     多重繼承的函數重名的問題。

2: 向下轉型和向上轉型?

      向下轉型不安全,向上轉型安全。

3: system.gc() ?

     只是提醒JVM做垃圾處理。不保證一定做。

4:ArrayList  VS  LinkedList?

5: java 基本類型大小? 對應的封裝類用處?

          boolean(沒有明確指定)    char(2)  byte(1)   short(2)   int(4)    long(8)  float(4)  double(8) : 每個基本類型都有對應的封裝類。

          封裝類用處:

      作為和基礎資料型別 (Elementary Data Type)對應的類類型存在,方便涉及到對象的操作;

      包含每種基礎資料型別 (Elementary Data Type)的相關屬性如最大值、最小值等,以及相關的操作方法;

基礎資料型別 (Elementary Data Type)

封裝類

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

6: JAVA堆和棧? 

  一:在方法中聲明的變數,即該變數是局部變數,每當程式調用方法時,系統都會為該方法建立一個方法棧,其所在方法中聲明的變數就放在方法棧中,當方法結束系統會釋放方法棧,其對應在該方法中聲明的變數隨著棧的銷毀而結束,這就局部變數只能在方法中有效原因

      在方法中聲明的變數可以是基本類型的變數,也可以是參考型別的變數。

         (1)當聲明是基本類型的變數的時,其變數名及值(變數名及值是兩個概念)是放在JAVA虛擬機器棧中

         (2)當聲明的是引用變數時,所聲明的變數(該變數實際上是在方法中儲存的是記憶體位址值)是放在JAVA虛擬機器的棧中,該變數所指向的對象是放在堆類存中的。

   二:在類中聲明的變數是成員變數,也叫全域變數,放在堆中的(因為全域變數不會隨著某個方法執行結束而銷毀)。

       同樣在類中聲明的變數即可是基本類型的變數 也可是參考型別的變數

       (1)當聲明的是基本類型的變數其變數名及其值放在堆記憶體中的

       (2)參考型別時,其聲明的變數仍然會儲存一個記憶體位址值,該記憶體位址值指向所引用的對象。引用變數名和對應的對象仍然儲存在相應的堆中

 7: 將字串“12”轉成16進位數?

 int a = Integer.parseInt("12", 16) ;

8:  整數轉String?

  String a1 = Integer.toString(5); // 其他類型都可以轉String
  String a2 = String.valueOf(5);   // String本身也有函數可以把其他類型轉string

9:在精度要求高的計算中用浮點數?

  浮點數值不適合用于禁止出現舍入誤差的金融計算中。例如System.out.println( 2.0 - 1.1);將列印0.899999999999999,而不是0.9。因為浮點數值採用二進位系統資料表示,而二進位無法精確表示分數1/10,就像十進位無法精確表示1/3一樣。如果需要在數值計算中不含有舍入誤差,就應該使用BigDecimal類和BigInteger。

  BigDecimal類:   支援任何精度的定點數。

  BigInteger類:支援任何精度的整數。

10: 當float, double轉int時,都是截尾操作,如果想四捨五入,用java.lang.Math.round(5.8)方法

int a3 = (int) java.lang.Math.round(5.8);   // 6 

11:資料提升: 

  如果對基礎資料型別 (Elementary Data Type)執行算術運算貨按位元運算,只要類型比INT 小(char,byte,short),在運算前,會自動轉成int.。如果想把結果轉成較小類型,必須使用類型轉換。通常運算中最大的類型決定了結果的類型。

12:switch的類型?

   int , char,    enum,  String

13:   類的驚天資料成員的初始化?

          靜態成員只被初始化一次; 當首次產生這個類的執行個體或首次訪問類的靜態成員時;先初始化靜態,然後是非靜態             

14: 子類如何調用父類建構函式?

                super(x)   

15: @override註解的作用?

   想在子類中覆寫某個函數,添加這個註解,在不小心重載的時候,編譯器會提示錯誤。

16:final用法?

          當修飾引用時,表示永遠指向這個引用,但是指向的對象可以變化。

 final List<String >  list = new ArrayList<String>();     list.add("afa");  // 正確      list = new LinkedList<String>();  // 錯誤

  final Person p1 = new Person(a2, a);
  p1.setAge(5);  // 正確

  final String s= "fsdf";
  s = "fsdfsdfsdfdsf";  // 錯誤, 因為String是不可變對象,重新賦值導致new了新對象,與final衝突。

    final 可以是空白的,在建構函式的時候進行初始化。

       當修飾函數參數的時候,無法更改參數引用指向的對象(可以改變對象的值,但是不能重新指向其他的對象)。

       final方法:防止繼承。

          類中所有的private 方法都隱式的指定為final。

          final類:不能有子類(不能被繼承)   

17:抽象類別特性?

          抽象類別可以沒有抽象方法;    抽象方法沒有函數體,子類必須實現,如果不實現,子類也是抽象類別;     抽象類別不能執行個體化;

18:  介面中屬性?

    介面中如果定義屬性是static final的,所以一般不定義屬性;       

19: 介面中的方法是public的,預設是public的; 實現介面的類的函數是public的。

20: 抽象列和介面都是為了實現多態,向上轉型,解耦合。

 

JAVA 編程思想二

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.