欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

你还记得这些细节吗?

程序员文章站 2022-04-19 18:43:12
...


你还记得这些细节吗?
庆余年上映啦!!!

&&与&的区别

&&:短路,当左侧表达式false,则判定整个表达式false;
&:非短路,得判断两侧得表达式的真假,才判定整个表达式的真假;

||与|的区别

同上

数据类型的自动提升
byte a = 40,b = 50;
byte c = a + b //类型自动提升为int,所以会出现编译错误。
//改正
byte c = (byte) (a + b) 
位运算符

在Java中,整数是使用二进制的补码表示的
补码表示中,最高位符号位,正数为0,负数为1;
正数,补码与原码相同;
负数,补码为原码的反码+1;

移位运算符

“<<” 左移指的的是二进制表达式位数的左移,移出高位丢弃,右侧补零;
“>>” 右移指的的是二进制表达式位数的右移,移出地位丢弃,正数高位补0,负数高位补1;
“>>>” 无符号的右移,不论正负,左侧补零;

+ 即是加号,也是拼接符
10 + "" 即可转换成字符串
"10" + 0 即可转成数值
BigInteger 和 BigDecimal 类

是Number类的拓展类,用于存放高精度浮点数与大整数。
其数据类型是String,因此实例是不可变的。
加减乘除就不说了,补充科学计数法:BigDecimal.ValueOf(n,e)表示n*10^(-e);

main()为啥要用static修饰呢?

可以在不实例化类的境况下,使用类名直接访问静态成员;
作为应用程序执行入口——main()必须使用static修饰,也是因为Java在运行时系统在开始执行程序前,并没有生成类的一个实例,因此只能通过类名直接调用main方法开始执行程序。

final防止类的拓展和方法的覆盖

Math和String是final类;
static final 变量 = 常量;

可变参数

在方法参数列表的最后一个参数类型名后加 “…” 即可。
可变参数是可选的:没有传参就返回长度为0的数组;若传null将产生空指针异常;

自动装箱

面试常爱考:
对于-128 ~ 127(byte类型)的数在装箱时只会生成一个实例。

hashCode()到底干啥?

Object类中hashCode()实现返回的是对象在计算机内部存储的十进制内存地址