变量运算分为四种:

  1. 整数运算 :
    (1)四则运算:加(+)、减(-)、乘(*)、除(/)、求余(%)。注意的是除法求得的永远是结果的整数部分,并且除数为零时报错
    (2)溢出:如果算数超出了整数所限制的范围,则会出现溢出现象,程序不会报错,但会得到错误结果。
    (3)简写的运算符:+=、-=、*=、/=
    (4)自增自减:++、–
    (5)移位运算:将以二进制表示的整数进行左右移动,使之值发生变化。对byte和short类型进行位移时,会先将其转化为int 再位移
    (6)位运算:位运算是按位进行与(‘&’两个数同为1,则为1)、或(‘|’任意一个数为1,结果为1 )、非(‘~’0和1互换)和异或(‘^’相同为1,不同为0)的运算
  2. 浮点数运算 (较整数而言,不能做位运算和)
    浮点数运算会产生误差
    (1)比较数是否相等:正确的方法是判断两个数的差是否小于一个很小的数。
    (2)类型提升:整数和浮点数做运算,则整数会自动转化为浮点数
    (3)浮点数除法运算时,除数为零不会报错,但会返回特殊值
    (4)类型强转:浮点数转为整数时,小数部分会丢掉。若返回值超过整形值的最大范围时,会返回整形的最大值。
  3. 布尔运算 (true和false):
    (1)布尔运算是关系运算,运算符:!(非)、>、>=、<、<=、==、!=、&&(与)、||(或)。(安照优先级排列)
    (2)短路运算:一个表达式能提前确定结果,则后续的计算不再执行。
boolean b = 5 < 3;
        boolean result = b && (5 / 0 > 0);
  1. b为false,则做与运算时该表达式一定为false,后续的计算不再执行,因此除零不会报错
    (3)三元运算符:b ? x : yb为true,返回x,否则返回y
  2. 字符和字符串:
    (1)字符char:保存的是Unicode字符,占两个字节,字符用单引号表示
    (2)字符串String:(引用类型)用双引号表示开始和结束。字符串中的转义字符\。字符串可以用“+”连接。多行字符串可以用三引号"""....."""表示。
    (3)字符串的不可变属性:字符串创建时,jvm先在内存中添加字符串内容,然后将其对象指向该内容,当改变字符串内容时,原内容没有发生改变,改变的是地址。
    (4)空字符串和null:空字符串是有效字符串对象,但null 指向空。

一个例子:String s = a+b+c;abc都是int类型的,如何将其加为字符串?
方法一:String s = “”+a+b+c;
方法二:String s = Integer.toString(a)+b+c;

简单结论:类对基本类型都是复制。对引用类型是指向,修改应用类型内存中的数据,都会变;修改字符串本身是指向转移,类的指向不变,所有数据不变。