1. 程式人生 > >牛客網刷題筆記 1

牛客網刷題筆記 1

刷題

  1. 實驗室鎖門了,因為清明節,劍指Offer在教室,大話資料結構在教室,所有書都在教室。。。。除了電腦,所以刷刷題吧;記一下筆記;

1 多型是對於什麼的? (未完成)

下面函式到底輸出什麼呢?

public class Base
{
    private String baseName = "base";
    public Base()
    {
        callName();
    }

    public void callName()
    {
        System. out. println(baseName);
    }

    static
class Sub extends Base { private String baseName = "sub"; public void callName() { System. out. println (baseName) ; } } public static void main(String[] args) { Base b = new Sub(); } }

我依稀記得一個道理,b是父類的引用,所以雖然用子類初始化,但是能用的也只有父類有的;也就是說引用b可以使用父類有的一切;但是不能呼叫子類裡特殊的部分;但是,他可以呼叫子類重寫的函式;這就是多型;

挺厲害的是吧,我們來模擬一下過程,由於繼承,所以建構函式先呼叫父類的,例項函式,先去找父類的,然後父類一看,誒,你是兒子,扔回兒子的函式中;這就形成了多型;但有一個問題,就是變數;變數這個貨是沒有多型性的;也就是說直接b.baseName 肯定是父類的,想得到子類的必須要使用get方法;就像上面callName想使用自己家的baseName發現啥也沒有;所以自然是null;

2 浮點型的比較

不可將浮點變數用“==”或“!=”與任何數字比較。
千萬要留意,無論是float還是double型別的變數,都有精度限制。所以一定要避免將浮點變數用“==”或“!=”與數字比較,應該設法轉化成“>=”或“<=”形式。
假設浮點變數的名字為x,應當將 if (x == 0.0) 轉化為 if ((x>=-EPSINON) && (x<=EPSINON))
或者 if ( fabs(x) <=EPSINON) // fabs(x)取x的絕對值
其中EPSINON是允許的誤差(即精度)。
一個例項
System.out.println(Math.pow(64, 1.0 / 3)); 輸出為3.9999999999,不是4!!!!!

3 後臺執行緒

將一個執行緒標記成daemon執行緒,意味著當主執行緒結束,並且沒有其它正在執行的非daemon執行緒時,該daemon執行緒也會自動結束。

4 靜態方法的呼叫 與靜態變數

簡單來說,即便物件是null,也可以呼叫類的靜態方法
靜態變數只能在類主體中定義,不能在方法中定義

5 變數放在那裡

用new建立的物件在堆區
函式中的臨時變數在棧去
java中的字串在字串常量區

6 垃圾回收

參考
這裡寫圖片描述

7 賦值

byte 最大是127;
boolean 不能是null

8 interface

只能用public+預設修飾詞;什麼private呀,protected呀,static都不能用

9 資料型別

  1. 基本資料型別(或叫做原生類、內建型別)8種:
    整數:byte,short,int,long(預設是int型別)
    浮點型別: float,double(預設是double型別)
    字元型別:char
    布林型別:boolean
  2. 引用資料型別
    陣列,類,介面;
    ps: string,陣列都是物件啊,都已經有new關鍵字了!
    擴充套件:
    • 行為:
      基本型別只是一個值,沒有任何行為
      物件型別有自己的行為
    • 記憶體分配:
      基本型別在棧內分配
      物件在堆內分配
      物件引用儲存在棧內
    • 引用與值:
      基本型別是值型別,僅表示一個值,儲存在棧內
      引用型別分兩部分,物件引用儲存在棧內,物件儲存在堆內,
      訪問變數,是使用的引用找物件

10 知識點

  1. final類的方法都不能是abstract,因為final類不能有子類
  2. throw用於丟擲異常。
    throws關鍵字可以在方法上宣告該方法要丟擲的異常,然後在方法內部通過throw丟擲異常物件。
  3. web會話跟蹤:cookie,session,地址重寫,隱藏域
  4. 優先選用介面,儘量少用抽象類,抽象類和介面都不能被例項化。