Java面试必知:Java基本变量与运算

8大基本类型

类型占用字节
byte1
short2
int4
long8
boolean1
char2
float4
double8
  • 变量在使用前必须赋值.不能只声明不初始化.(Java的基本类型默认值在类实例化,也就是对象中才有默认值0,或者是静态变量)
  • 整数没有加上标识,默认是int(long型在数据后面加L),小数没有加上标识,默认是double(float型在数据后面加F)
  • java中整数数据类型都是已补码的方式进行存储的

数据类型转换与运算

  • byte,short,char型的类型进行运算时,会先自动转型为int型.
    原因: Java虚拟机的操作码长度只有一个字节.但是一个字节不够各种数据类型与运算符的结合. 所以对不常进行运算的数据类型在运算时进行转换.
    大部分的指令都没有支持byte,short,char.没有任何指令支持boolean类型数据.
    编译器在编译期或者运行期将byte,short,boolean,char类型的数据带符号扩展为相应的int类型数据.因此大多数对于byte,char,short和boolean类型数据的操作,实际上都是使用相应的int类型作为运算类型的.

运算符

字节码指令入门
  1. iconst_0到iconst_5—将int常量0,1,2,3,4,5分别压入到操作数栈顶

  2. iload_0到iload_3—将第0,1,2,3个本地变量的值分别压入到操作数栈顶

  3. istore_0到iload_3—将操作数栈顶的值存入第0,1,2,3个本地变量中

  4. iadd—取出操作数栈顶的两个int型数值相加,并将结果压入栈顶

  5. isub—取出操作数栈顶的两个int型数值相减,并将结果压入栈顶

  6. imul—取出操作数栈顶的两个int型数值相乘,并将结果压入栈顶

  7. idiv—取出操作数栈顶的两个int型数值相除,并将结果压入栈顶

【参考】详细指令介绍

算术运算符 - + * / %
赋值运算符 = += -= *= /=

优点: 编译器会自动进行强类型转换,无需手动强转

short s = 10;
s = s + 2;   //报错
System.out.println(s); 

short s = 10;
s += 2;    //编译器会自动进行强制类型转换
System.out.println(s); 
关系比较运算符 == != > < >= <=

==和!=
对于基本数据类型, ==比较俩个数据的数据值
对于引用数据类型,==比较比较俩个对象的内存地址

逻辑运算符 & | ! ^ && ||

&&与&的区别:(|| 和 | 同)
&&为短路与, 如果左边为false 则右边不会执行,&都会执行

二进制位运算符 & | ~ ^
移位运算符 << >> >>>
  1. << 算术左移(保留符号位,其他位左移,最低位补0)
  2. >> 算术右移(保留符号位,其他位右移,最高位补原先的最高数据位)
  3. >>> 无符号右移 逻辑右移 ( 逻辑右移,最高位永远补0)
三目运算符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值