java----牛客练习

1. 

形式参数就是函数定义时设定的参数。例如函数头 int min(int x,int y,int z) 中 x,y,z 就是形参。实际参数是调用函数时所使用的实际的参数。
  真正被传递的是实参
  形参可以是对象,是对象的时候传递引用. 
  对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误 。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final   修饰。只有在特殊情况下,那就是:方法内部类。   

   一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。
2.
 java类中的静态代码块只在类加载到内存时执行一次
 B是A的父类,所以先加载B,再加载A
 然后在new A()过程中首先构造父类,再构造子类
 
 执行顺序:
 父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数
3.java的变量名有三种元素构成:数字+字符+$+下划线  不能有空格
 
4.
 ArrayList list=new ArrayList();   这种是默认创建大小为10的数组,每次扩容大小为1.5倍
 ArrayList list=new ArrayList(20);  这种是指定数组大小的创建,没有扩充
5.
 
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
==如果是primitive主类型,那么比较值;如果是对象,那么比较引用地址
equals需要根据具体对象的实现来判断,在Integer里面是判断值是否相等
 
一般说来,如果是两个Integer类型进行==比较,就是比较两个Integer对象的地址。但是有一点需要注意的是在-128至127这个区间,如果创建Integer对象的时候(1)Integer i = 1; (2) Integer i = Integer.valueOf(1); 如果是这两种情况创建出来的对象,那么其实只会创建一个对象,这些对象已经缓存在一个叫做IntegerCache里面了,所以==比较是相等的。
如果不在-128至127这个区间,不管是通过什么方式创建出来的对象,==永远是false,也就是说他们的地址永远不会相等。
6.自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下: 
     低 ---------------------------------------------> 高 
     byte,short,char-> int -> long -> float -> double
    
A:return;   没有返回值,错误
B:short → float 无须强制转换,正确
 
C:long → float  无须强制转换(这个最选项容易出错),正确。
 
float占4个字节为什么比long占8个字节大呢,因为底层的实现方式不同。
浮点数的32位并不是简单直接表示大小,而是按照一定标准分配的。
第1位,符号位,即S
接下来8位,指数域,即E。
剩下23位,小数域,即M,取值范围为[1 ,2 ) 或[0 , 1)
然后按照公式: V=(-1)^s * M * 2^E
也就是说浮点数在内存中的32位不是简单地转换为十进制,而是通过公式来计算而来,通过这个公式虽然,只有4个字节,但浮点数最大值要比长整型的范围要大。
posted @ 2017-03-06 22:31  爱简单的Paul  阅读(185)  评论(1编辑  收藏  举报