记录写零碎获得的知识点(不断补充)

*1.java为什么不支持泛型数组?

根本的原因是:数组在创建的时候必须知道内部元素的类型,而且一直都会记得这个类型信息,每次往数组里添加元素,都会做类型检查。

但因为Java泛型是用擦除(Erasure)实现的,运行时类型参数会被擦掉。


*2.

 初始化过程(静态>普通成员初始化/代码块>构造方法):  

1. 初始化
父类中的静态成员变量和静态代码块 ;  

2. 初始化
子类中的静态成员变量和静态代码块 ;  

3.初始化父类的
普通成员变量和代码块,再执行父类的构造方法; 

4.初始化子类的
普通成员变量和代码块,再执行子类的构造方法;  


*3
 floor : 意为地板,指向下取整,返回不大于它的最大整数 
ceil : 意为天花板,指向上取整,返回不小于它的最小整数 
round : 意为大约,表示“四舍五入”,而四舍五入是往大数方向入。Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11而不是-12。

*4
 表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。 

①所有的byte,short,char型的值将被提升为int型; 

②如果有一个操作数是long型,计算结果是long型; 

③如果有一个操作数是float型,计算结果是float型; 

④如果有一个操作数是double型,计算结果是double型; 

b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。 

Java中的byte,short,char进行计算时都会提升为int类型。 

被final修饰的变量是常量,会被JVM优化,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了 

posted @ 2017-09-06 20:48  词汇族  阅读(93)  评论(0编辑  收藏  举报