Java 细节记录

1:System.nanoTime():遇到这个函数是在spark的官方实例scala代码中的,虽然能猜到是关于时间的方法,但是并不知道详情,查了后才知道这个函数和System.currentTimeMillis()方法是差不多的,都是返回现在时间,用途也是差不多,都是计算某个时间段的时间,不同的是,nanoTime更加精确一些,它的精度达到纳秒,而currentTimeMillis的精度只是毫秒,之间相差6个数量级,还有一点不同的是,nanoTime返回的是一个随机的时间,而currentTimeMillis返回的是距离1970年1月1日的时间差.大致就是这样.

2:抽象类.抽象类中可以有抽象方法,也可以没有抽象方法,抽象类不能用new运算符创建对象,但是可以作为上转型对象,

                抽象方法不能同时被声明为final和static

3:java中的变量的声明分为两种,一种是局部变量的声明,另一种是全局变量的声明,前者在声明的时候就必须初始化(即赋初值),而后者可以先声明,在后面的程序中再进行赋值,如果没有进行赋值,那么也会有默认值.

4:这里说一个刚看到的新颖的三目表达式,也许是我孤陋寡闻,其实也就是三目表达式的嵌套,比如:

int i = 1>0?(2>0?3:4):5 ;

返回也十分简单,就是3 ;

5:这里说一下java8中的默认方法,也就是说用default修饰的方法,这钟方法有什么不同吗?其实这种方法就是定义在接口中,但是可以有方法体的方法,为什么要这样做呢,这样做的话,抽象类和接口又有什么区别呢?但不能这样看,类和接口还是有很多本质的区别的,即使它是抽象类,就比如说,接口可以多继承,但是抽象类不行,等等.那为什么要添加默认方法呢,其实是因为在java8之前的版本,接口和实现类之间的耦合度实在太高了,如果一个接口有很多实现类,那么当我想在接口中添加新功能时,所有的实现类都必须实现这个新方法,这样实在是太蠢了,所以有了默认方法,在接口中直接写下默认方法,实现类不用实现这个新的方法也可以直接使用,就是这样.

6:java的上转型对象,即用父类声明,用子类创建,经过我的试验,上转型对象,如果是子类重写了父类的某个方法,上转型对象调用的就是重写后的方法,但是如果子类覆盖了某一个属性,那么上转型对象调用的就是被隐藏的属性.

7:我所用的throws:对于throw和throws,我一直不太了解,也一直没有怎么使用过,对于java的异常处理,我一般只使用try/catch,这里记录一下我所使用的throws,

如果一个方法中有可能存在编译时异常,那么在写这个方法的时候就会报错,如果想将报错都统一到调用时再进行处理,那么就对这个方法使用throws将错误抛出,然后,在方法的编写时就不会报错,但是一定要在调用时进行异常处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值