第3章 运算符
3.1.1 % 取余运算符(也成为模运算符)
取余运算符既可用于两个操作数都是整数的情况,也可用于两个操作数都是浮点数(或一个操作数是浮点数)的情况。
a%b的计算公式为:a % b = a - (int)(a /b) * b
/和%:
//两边为整数
int a = 9;
int b = 2;
System.out.println(a / b); // 4
System.out.println(a % b); // 1
// 两边为浮点数
int d1 = 9;
double d2 = 3.0;
System.out.println(d1 / d2); // 3.0
System.out.println(d1 % d2); // 0.0
7 / 3 //整除,运算结果为2
7.0 / 3 //除法,运算结果为2.33333,即结果与精度较高的类型一致
7 % 3 //取余,运算结果为1
7.0 % 3 //取余,运算结果为1.0
-7 % 3 //取余,运算结果为-1,即运算结果的符号与左操作数相同
7 % -3 //取余,运算结果为1,即运算结果的符号与左操作数相同
3.1.2 自增自减运算符(++,--)
如果为前缀(++i,--i),则为先加一或减一,然后使用。
如果为后缀(i++,i--),则为先使用,然后加一或减一。
3.1.3 “+”运算符
如果两边是数值类型,则完成数值相加;
如果两边至少有一个是字符串类型的参数,则为字符串追加符。
案例:
System.out.println(" " + 2 + 3);// 空格23
System.out.println(2 + 3); //5
System.out.println(2 + 3 + " "); //5空格
System.out.println(2 + " " + 3); //2空格3
3.1.4 移位运算符 :>>(右移),<<(左移 ),>>>(无符号右移)
如果是byte,short,int,char型移位时自动扩展为int型。
一般规律:
<< 往左移 左移n位,右面补0。 byte、short和char类型移位后的结果会变成int类型。
>> 往右移 右移n位,高位补符号位。
>>> 无符号移位 始终补0。
注意: 1)移位运算的前提是不要超出数的表示范围
2)移位运算只针对整数类型(byteshort char int long)
3.1.5 赋值运算符=,及其扩展赋值运算符如+=,―=,*=,/=等
例如:
byte i=3;
i+=3;
bytei=3;
i=i+3; //错误,正确写法为:i=(byte)(i+3);
右边的例子:i本来是byte型的,与字面量3相加则变成int型的了。
可见, += 或 -= 有时隐含着强制类型转换。
案例分析:
String s = "Hello";
String s1 = "hh";
int i = 10;
s += i;
System.out.println(s); //s=Hello10
s += s1;
System.out.println(s); //s=Hello10hh
总结:如果+=两边至少有一个是字符串则为字符串追加符。