编程基础
2020-04-23 本文已影响0人
想象不到2019
整数的数字常量默认是int
小数常量默认是double
// 规范写法,避免了编译器默认的类型转换
long a = 33L;
long b = 44l;
float f1 = 333.33F;
float f2 = 444.44f;
int[] a = new int[]{1,2,3};
int[] b = new int[]{1,2,3};
a 和 b 存储的是数组的首地址,所以 a != b
数组的具体值也是存储在堆上
程序最终都是一条条的指令
如果分支比较多,switch效率比if/else效果高
跳转表,存储了条件值以及要跳转的地址
跳转表可以使用二分查找,来提高效率
如果值是连续的,跳转表还可以特殊优化为一个数组
可变长度的参数
// 可变长度的参数会转换为数组参数
public static int max(int min, int ...a) {
}
递归是有开销的
异常类型 java.lang.StackOverflowError
栈一般是从高位地址向地位地址扩展
栈底的内存地址是最高的
递归函数每调用一次,都要执行入栈一次,直到有返回值,
才会一个一个出栈
所以,一旦递归调用层次过大,超出栈顶,就会报异常java.lang.StackOverflowError