运算符:
常见的运算符有:
• 算术运算符
• 赋值运算符
• 比较运算符(关系运算符)
• 逻辑运算符
• 位运算符
• 三元运算符
算术运算符的注意问题
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。
对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;x=x/1000*1000; x的结果是?
“+”除字符串相加功能外,还能把非字符串转换成字符串,
赋值运算符
• 符号:=
• 扩展赋值运算符: +=, -=, *=, /=, %=
比较运算符:
l 注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
l 注2:比较运算符“==”不能误写成“=” 。
逻辑运算符:
l 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3
l “&”和“&&”的区别:
• 单&时,左边无论真假,右边都进行运算;
• 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
l 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
位运算符:
• 位运算是直接对二进制进行运算
三元运算符:
l 格式
• (条件表达式)?表达式1:表达式2;
• 如果条件为true,运算后的结果是表达式1;
• 如果条件为false,运算后的结果是表达式2;
l 示例:
• 获取两个数中大数。
• int x=3,y=4,z;
• z =(x>y)?x:y;//z变量存储的就是两个数的大数。
下面是代码示例和注释:
public class Test
{
publicstatic void main(String[] args)
{
//取模
int r= 10 % 3;
System.out.println(r);
//自增
int i= 10;
//i++;先取 i 值,再运算(i = i + 1)
int j= i++;
System.out.println(j+","+i);
j = i;
System.out.println(j+","+i);
int m= 100;
//++m;先运算(m = m + 1),后取值
int n= ++m;
System.out.println(n);
//+: 字符串相加
Stringstr = "abc";
Stringstr2 = "def";
Stringstr3 = str + str2;//abcdef
System.out.println(str3);
//如果对负数取模,可以把模数的负号忽略不计
System.out.println(10% -3);//结果还是1
//如果被模数是负数,则先对其绝对值进行取模运算,再在结果前加一个负号
System.out.println(-10% 3);//结果是-1
System.out.println(-10% -3);//结果也是-1
//整数之间做除法时,只保留整数部分而舍弃小数部分
int x= 3510;
x = x/ 1000 * 1000;
System.out.println(x);//结果为3000
// + 除字符串相加功能外,还能把非字符串转换成字符串
Stringstr4 = "1";
System.out.println(str4+ 100);//结果为1100
//扩展赋值运算符: +=, -=, *=, /=, %=
//inty = x + 1000;
x +=1000;//x = x + 1000;
System.out.println(x);//结果为4000
System.out.println(x>= 1000);//结果为true
//逻辑运算符
int a= 10;
int b= 20;
//& 与运算符,当且仅当两边都为真时,表达式的结果才为true
System.out.println(a> 5 & b < 30);//结果为true
System.out.println(a> 15 & b < 30);//结果为false
System.out.println(a> 5 & b < 19);//结果为false
// | 或运算符,当且仅当两边都为假时,表达式的结果为 false,此外结果都为true
System.out.println(a> 5 | b < 30);//结果为true
System.out.println(a> 15 | b < 3);//结果为false
System.out.println(a> 5 | b < 19);//结果为true
// ^ 异或运算符,当且仅当两边的表达式的结果不同时为true,两边结果相同则为false
System.out.println(a> 5 ^ b < 30);//结果为false
System.out.println(a> 15 ^ b < 30);//结果为true
System.out.println(a> 5 ^ b < 19);//结果为true
// ! 非运算符
System.out.println(!(a> 5));//结果为false
//&& 短路与 || 短路或短路逻辑运算符: 若短路逻辑运算符前的表达式已经可以确定整个表达式的值
//则不再判断短路运算符后面的表达式
System.out.println(a> 15 && (10 / 0 == 1));
//位运算符
int c= 3;//0000 0011
//左移运算符
System.out.println(c<< 2);//0000 1100 结果为12 3*(2的2次幂)
//右移运算符
System.out.println(c>> 2);//0000 0000 结果为0 3/(2的2次幂)
//无符号右移运算符
int d= -1;
System.out.println(d>> 1);//结果为-1
System.out.println(d>>> 1);//2147483647
//& 位运算符
/*
* 00000010
& 0000 0011
* ---------
* 00000010
*/
System.out.println(2& 3);//结果为2
//三元运算符
Stringe = d > 3 ? "d > 3" : "d <= 3";
System.out.println(e);//结果为 d <= 3
e = d> 3 ? "大于" : "不大于";
System.out.println(e);
//以下不能通过编译,因为两边必须是表达式,且必须是类型兼容的表达式
//d> 3 ? System.out.println("a"); :System.out.println("b");
}
}