day36

  1. 指出下面程序的運行結果:
     
     1 class A{  
     2   
     3     static{  
     4         System.out.print("1");  
     5     }  
     6   
     7     public A(){  
     8         System.out.print("2");  
     9     }  
    10 }  
    11   
    12 class B extends A{  
    13   
    14     static{  
    15         System.out.print("a");  
    16     }  
    17   
    18     public B(){  
    19         System.out.print("b");  
    20     }  
    21 }  
    22   //何問起 hovertree.com
    23 public class Hello{  
    24   
    25     public static void main(String[] args){  
    26         A ab = new B();  
    27         ab = new B();  
    28     }  
    29   
    30 }  
     
    

答:執行結果:1a2b2b。創建對象時構造器的調用順序是:先初始化靜態成員,然後調用父類構造器,再初始化非靜態成員,最後調用自身構造器。

題目:有時候我們需要訪問一個對象較深的層次,但是如果這個對象某個屬性不存在的話就會報錯,例如:
var data = { a: { b: { c: 'ScriptOJ' } } }
data.a.b.c // => scriptoj
data.a.b.c.d // => 報錯,代碼停止執行
console.log('ScriptOJ') // => 不會被執行
請你完成一個 safeGet 函數,可以安全的獲取無限多層次的數據,一旦數據不存在不會報錯,會返回 undefined,例如:·
//code from http://caibaojian.com/js-example.html
var data = { a: { b: { c: 'ScriptOJ' } } }
safeGet(data, 'a.b.c') // => scriptoj
safeGet(data, 'a.b.c.d') // => 返回 undefined
safeGet(data, 'a.b.c.d.e.f.g') // => 返回 undefined
console.log('ScriptOJ') // => 打印 ScriptOJ
答案:
const safeGet = (o, path) => {
  try {
    return path.split('.').reduce((o, k) => o[k], o)
  } catch (e) {
    return void 666
  }
}

3.簡單說一說drop、delete與truncate的區別

SQL中的drop、delete、truncate都表示刪除,但是三者有一些差別

  • delete和truncate只刪除表的數據不刪除表的結構
  • 速度,一般來說: drop> truncate >delete 
  • delete語句是dml,這個操作會放到rollback segement中,事務提交之後才生效;
    如果有相應的trigger,執行的時候將被觸發. truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger. 


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