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

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

程序员文章站 2022-06-05 13:48:09
...

8大基本类型

类型 占用字节
byte 1
short 2
int 4
long 8
boolean 1
char 2
float 4
double 8
  • 变量在使用前必须赋值.不能只声明不初始化.(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)

三目运算符