java----牛客练习
Posted 爱简单的Paul
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java----牛客练习相关的知识,希望对你有一定的参考价值。
1.
形式参数就是函数定义时设定的参数。例如函数头 int min(int x,int y,int z) 中 x,y,z 就是形参。实际参数是调用函数时所使用的实际的参数。
真正被传递的是实参
形参可以是对象,是对象的时候传递引用.
对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误 。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用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); 这种是指定数组大小的创建,没有扩充
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
低 ---------------------------------------------> 高
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个字节,但浮点数最大值要比长整型的范围要大。
以上是关于java----牛客练习的主要内容,如果未能解决你的问题,请参考以下文章