求余 %
double num = 5.0;
double num2 =1.5;
System.out.println(num%num2);
0.5
Process finished with exit code 0
前置++和后置++的区别主要在于取表达式的返回值
如果不取返回值,那么两者一样,效果等价
int a = 10;
int ret = ++a;
System.out.println("a:"+a);
System.out.println("ret:"+ret);
a:11
ret:11
int a = 10;
int ret = a++;
System.out.println("a:"+a);
System.out.println("ret:"+ret);
a:11
ret:10
++a 表达式返回的是自增之后的结果
a++表达式返回的是自增之前的结果
逻辑运算
&& 并且 || 或者 or !逻辑取反
&&一假则假 || 一真则真
注意事项:短路求值
1.对于逻辑与运算来说,如果左侧表达式为flase。右侧表达式不再求值
2.对于逻辑或运算来说,如果左侧表达式为ture。右侧表达式不再求值
对于大部分编程语言都支持短路求值
如果操作数是布尔类型 &表示与 | 表示或 但不支持短路求值
如果操作数是整数 &表示按位与 |表示按位或
先把数据理解成二进制,然后再针对对应的bit位进行运算
int a= 10;
int b= 20;
System.out.println(a|b);
30
不是相加 换算成二进制之后得到的结果
^ --------按位异或 如果两个对应的bit位,相同结果就是0 相异结果是1
a=10 b=20
a^0 = a 01010 00000
a^b^b = a 01010 10100--------11110 10100----01010
不使用临时变量 交换 a b 的值 (使用异或)
int a =10;
int b =20;
a=a^b;
b=a^b;
a=a^b;
System.out.println(a);
System.out.println(b);
20
10
移位运算
<< 最左侧的位就不要了,最右侧补0 左移一位相当于*2
>>算术右移,最右侧的位就不要了,最左侧补符号位 右移1位相当于/2
>>> 逻辑右移 最右侧的位不要了 最左侧补0
条件运算符
? :
int max=a>b?a:b;
System.out.println(max);
20
相当于 if else 语句
int num = 10;
if(num>20){
System.out.println("hello");
}else{
System.out.println("world");
world
多分支
int score = 90;
if (score>=90) {
System.out.println("优秀");
}else if(score>=80) {
System.out.println("良好");
}else if (score>=60) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
优秀
判断一个数的奇偶性 代码如下👇
int num = 10;
if(num%2==0) {
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
偶数
判断正负数
int num = -1;
if (num>0) {
System.out.println("正数");
}else if (num<0) {
System.out.println("负数");
}else{
System.out.println("0");
}
}
switch 语句
int day = 8;
switch(day){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("输入有误");
}
}
switch 语句中的一些局限性
1.switch的()中只能放有限的几种类型
2.break语句一旦遗漏了,程序的执行效果可能会出错
3.switch 很难表达一些复杂的逻辑
4.switch 虽然支持嵌套 但是非常丑
循环结构
while循环
计算1加到100
int result = 0;
int num = 1;
while(num<=100) {
result += num;
num++;
}
System.out.println(result);
}
}
5050
计算5的阶乘
int result = 1;
int num = 1;
while(num<=5){
result*=num;
num++;
}
System.out.println(result);
}
}
120
shift +f6 触发rename功能
调试 断点
break表示结束整个循环 continue 表示跳过这次循环
用for 循环打印1--10
//打印1--10
for(int num=1; num<=10;num++){
System.out.println(num);
}
}
}
1
2
3
4
5
6
7
8
9
10
for 最大的好处在于把循环语句的三个要素放在一起集中表示
计算1加到100
int result=0;
for(int num =1;num<=100;num++){
result+=num;
}
System.out.println(result);
}
}
5050
计算5的阶乘
int result = 1;
for(int num = 1;num<=5;num++){
result*=num;
}
System.out.println(result);
}
}
120
计算1-5的阶乘求和 双重循环
int result = 0;
// 第一层循环用来控制求和
for(int num =1;num<=5;num++){
// 第二层循环用来控制求num
int factorResult =1;
for(int i = 1;i<=5;i++){
factorResult*=i;
}
result+=factorResult;
}
System.out.println(result);
}
}
600