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。创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

2.safeGet

题目:有时候我们需要访问一个对象较深的层次,但是如果这个对象某个属性不存在的话就会报错,例如:

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. 

猜你喜欢

转载自blog.csdn.net/zwwlxf/article/details/80863735