类型转换
当大的向小的转换时,会出现溢出的情况。这时就需要强制类型转换。
int i=1;
byte b =(byte)i;
强制类型转换并不是看数值,而是看精度。如 int为3位字符,byte为8位字符
long和double
虽然都是64位,但是对于java而言,可以理解为double的精度比long大。double是java中最大的。
表达式类型自动提升
在表达式中类型会自动提升为较高的类型
int a ;
a=(int)(1+1.0);
System.out.println(a);
因为1+1.0是double类型。
byte d=1;
d = (byte)(d+1);
字符型的运算
char c1='a';
char c2='b';
System.out.println(c1+c2);
字符型相加是ascii码相加,即字符型相加会自动转换为int型。
char c3=(char)(c1+c2);
结果:?
这是错误的
因为编码是有范围的。
char c4='a'+'b';
因为‘a’、‘b’是没有携带数据类型的,以左边的数据类型为准。
常量
程序运行过程当中不能发生变化的,叫常量。
final int i=1;
在变量之前加final,变量就变成了常量,常量的值是最终不可改变的。
语言基础面试案例
数据结构的应用场景
JIT(Just in Time):动态(即时)编译,边运行边翻译
AOT(Ahead of Time):静态提前编译,运行前编译
编码:JVM使用Unicode
类型转换
位运算:
性能最高的运算符
原码、反码、补码
位与、位或、位非、位异或
位移
用位运算做一些优化:判断奇偶、计算绝对值、不用临时变量交换两个数的值。
程序逻辑:
循环优化:大型企业开发中,不建议使用多重循环、嵌套循环(外大内小)