重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1.1 +号+,-,*, / 、% 、++ 、 –
System.out.println(+20); // 表示 正数
System.out.println(3+4); // 两数相加
System.out.println("Hello" + 666); // 拼接
1.2 - * / %System.out.println(5-3); // 2
System.out.println(-3); // -3
System.out.println(5*3); // 15
System.out.println(5/3); // 1
System.out.println(5%3); // 2
System.out.println(2%4); // 2
System.out.println(5/(double)3); // 1.666667
System.out.println((double)5/3); // 1.666667
1.3 ++/–++ – 属于单目运算
++ 表示自增1
– 表示自减1
单独使用
表示自增或者自减,没有任何的区别
public static void main(String[] args)
{int a = 10;
int b = 20;
// a = 10 b = 20
System.out.println("a = " + a + " b = " + b);
//a ++;
//b --;
// a = 11 b = 19
//System.out.println("a = " + a + " b = " + b);
++ a ;
-- b ;
// a = 11 b = 19
System.out.println("a = " + a + " b = " + b);
}
参与运算
// ++ -- 参与运算
int a1 = 3;
int a2 = 4;
int result = (a1++)/3 + (--a2)*2 -(a1--)%6 + (a2++)*3 - (a2--);
System.out.println("a1=" + a1 + " a2="+a2 + " result="+result);
课堂练习:
普通的 =
扩展的 += -+ *= /= %=
public static void main(String[] args)
{// 赋值运算符 这个不是==赋值语句
int a = 10 ; // 表示将常量10赋值给变量a地址所对应的内存区域中
a += 3; //等价于a = a + 3
System.out.println(a);
a -= 3; // 等价于 a = a - 3;
System.out.println(a);
}
面试题1
: short s1 = 1 ; ? s1 = s1 + 1; 有什么错?
short s1 = 1; s1 += 1; 又有什么错?
short s1 = 1;
s1 = s1 + 1; // 报错 需要强制类型转换
s1 += 1; // 不会 += 会帮助我们自动完成强制类型转换
面试题2
:如何交换两个数?
int x = 10;
int y = 20; // 互换x和y的值
int c = x;
x = y;
y = c;
解决方案:声明一个中级变量即可
3 关系运算符>< >=<= != ==
关系运算符得到的结果都是boolean类型的数据(true和false)
public static void main(String[] args)
{int a = 10;
int b = 20;
System.out.println(a >b) ; // false
System.out.println(a< b) ; // true
System.out.println(a >= b) ; // false
System.out.println(a<= b) ; // true
System.out.println(a != b) ; // true
System.out.println(a == b) ; // false
}
4 逻辑运算符 连接多个boolean类型的表达式
4.1 位逻辑运算符boolean类型的表达式1 boolean类型的表达式2 boolean类型的表达式3 boolean类型的表达式4
二进制运算
按位与(&):两边都是1才是1,其他都是0(有0为0)
按位或(|):两边都是0才是0,其他都是1(有1为1)
异或(^):两边不同为1,同为0(同0异1)
public static void main(String[] args)
{int a = 10;
int b = 20;
// 按位 & 都为true 结果 true
System.out.println((a >b ) & (a< b)) ; // false & true = false
System.out.println((a< b ) & (a >b)) ; // true & false = false
System.out.println((a< b ) & (a< b)) ; // true & true = true
System.out.println((a >b ) & (a >b)) ; // false & false = false
System.out.println("----------------------------");
// 按位 | 有true 就为true
System.out.println((a >b ) | (a< b)) ; // false | true = true
System.out.println((a< b ) | (a >b)) ; // true | false = true
System.out.println((a< b ) | (a< b)) ; // true | true = true
System.out.println((a >b ) | (a >b)) ; // false | false = false
System.out.println("----------------------------");
// 按位 异或 相同为false 不同为true
System.out.println((a >b ) ^ (a< b)) ; // false ^ true = true
System.out.println((a< b ) ^ (a >b)) ; // true ^ false = true
System.out.println((a< b ) ^ (a< b)) ; // true ^ true = false
System.out.println((a >b ) ^ (a >b)) ; // false ^ false = false
}
按位符号也会运用在位运算
,位运算操作要比普通运算的效率要高很多
&:有0取0,否则取1
1001 & 0110 = 0
1 0 0 1
& 0 1 1 0
----------
0 0 0 0
|:有1取1,否则取0
1001 | 0110 = 15
1 0 0 1
| 0 1 1 0
----------
1 1 1 1
^:相同为0 不同为1
1001 ^ 0110 = 15
1 0 0 1
^ 0 1 1 0
----------
1 1 1 1
4.2 短路逻辑运算符&& 短路与
|| 短路或者
! 非
& 表示按位与,无论什么情况都会同时计算运算符两边的表达式
&& 表示短路与,如果前面的表达式为false,那么无论后面的表达式结果如何,都不会去计算后面表达式的值。因为后面表达式的值不会影响结果
同时注意:在实际使用中我们很少使用按位与,更多的是使用短路与
!:取反
当!的个数是奇数个的时候,结果相反
当!的个数是偶数的时候,结果不变
`面试题:& 与 && 的区别
5 位运算符
- & 表示按位与,无论什么情况都会同时计算运算符两边的表达式
- && 表示短路与,如果前面的表达式为false,那么无论后面的表达式结果如何,都不会去计算后面表达式的值。因为后面表达式的值不会影响结果
- && 开发中使用,&基本不使用
- &常用与位运算操作,效率高
位运算符:用来计算二进制的运算符
6条件运算符& | ^ ~
有符号移动:<< >>
无符号移动:>>>、<<<
eg:4>>1,结果为2
条件运算符又称为三目运算
格式: X ? Y : Z ;
X 表达式必须是boolean类型的表达式
计算流程:
1. 首先计算X的值
2. 如果X为true,那么整个表达式的结果就是Y的值
3. 如果X为false,那么整个表达式的结果就是Z的值
【上一篇】:【1基础语法】2-标识符-数据类型及转换
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧