Java运算符、流程控制
运算符
- 算术运算符
public class Demo1 {
public static void main(String[] args) {
//算术运算符
//+、-、*、/、%、++、--
int x = 2046;
x = x /100 * 100;
System.out.println(x);//整数除法的结果只保留整数部分,舍弃小数部分
System.out.println(6%5);//模运算
System.out.println(x++);//自增
System.out.println(x--);//自减
}
}
- 赋值运算符
public class Demo2 {
public static void main(String[] args) {
//赋值运算符
//= , +=, -=, *=, /=, %=
int a,b,c;
a = b = c = 6;
int x = 2046;
x+=4;//等效于x = x + 4;
}
}
- 比较运算符和逻辑运算符
public class Demo3 {
public static void main(String[] args) {
//比较运算符的结果都是boolean型
//==、!=、<、>、<=、>=
int a,b,c=7;
a = b = 6;
System.out.println(a==b);//true
System.out.println(a>=c);//false
/*逻辑运算符用于连接boolean类型的表达式。
true & true = true;
true & false = false;
false & true = false;
false & false = false;
只要两边的boolean表达式结果,有一个为false。那么结果就是false。只有两边都为true,结果为true。
*/
int x = 8;
System.out.println(x>3&x<6);//false
/*
true | true = true;
true | false = true;
false | true = true;
false | false = false;
两边只要有一个为true,结果为true。只有两边都有false,结果为false。
*/
System.out.println(x>3|x<6);
/*
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
两边相同结果是false。两边不同结果是true。
*/
System.out.println(x>3^x<6);
/*“&”和“&&”的区别:
&&:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“||”的区别类似,左边为真,右边不参与运算。
*/
}
}
位运算符 | |||
---|---|---|---|
运算符 | 运算 | 例子 | 运算规则 |
<< | 左移 | 4<<2=16 | 空位补0,被移除的高位丢弃 |
>> | 右移 | 4>>2=1 | 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1 |
>>> | 无符号右移 | 4>>>2=1 | 被移位二进制最高位无论是0或者是1,空缺位都用0补 |
& | 与运算 | 4&2=0 | 二进制位进行&运算,只有1&1时结果是1,否则是0 |
| | 或运算 | 4|2=6 | 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1 |
^ | 异或运算 | 4^2=6 | 任何相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 进行^ 运算结果是1。1^0=1 , 0^1=1 |
~ | 反码 | ~4=-5 | 正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. |
程序流程控制
- 判断结构
- if(条件表达式){
执行语句;
} - if(条件表达式){
执行语句;
}
else{
执行语句;
} - if(条件表达式){
执行语句;
}
else if (条件表达式){
执行语句;
}
…
else{
执行语句;
}
- 三元运算符
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
class IfDemo
{
public static void main(String[] args)
{
int x = 10;
if(x>10)
{
System.out.println("x>10");
}
else
{
System.out.println("x<=10");
}
/*
if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
*/
int a = 9,b;
b = (a>10)?100:200;
if(a>10){
b = 100;
}
else{
b = 200;
}
int n = 4;
if(n>1)
System.out.println("a");
else if(n>2)
System.out.println("b");
else if(n>3)
System.out.println("c");
else
System.out.println("d");
}
}
- 选择结构
switch(表达式){
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…
default:
执行语句;
break;
}
(switch语句选择的类型只有四种:byte,short,int , char)
class SwitchDemo
{
public static void main(String[] args)
{
int a=4,b =2;
char ch = '-';
switch(ch){
case '-':
System.out.println(a-b);
break;
case '+':
System.out.println(a+b);
break;
case '*':
System.out.println(a*b);
break;
case '/':
System.out.println(a/b);
break;
default:
System.out.println("error");
}
}
}
- 循环结构
while方式:
while(条件表达式){
执行语句;
}
do while方式:
do{
执行语句;
}while(条件表达式)
(无论条件是否满足,循环体至少被执行一次)
for方式:
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;
}
(最简单无限循环格式:while(true) , for( ; ; ),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环)
class CycleDemo
{
public static void main(String[] args)
{
int i = 10;
while(i > 0){
if(i==8){
i--;
continue;//跳出本次循环
}
System.out.println(--i);
if(i==5) break;//结束循环
}
System.out.println(i);
do{
System.out.println(i++);
}while(i < 8 );
for (;; --i){//也是无限循环
if (i==5)continue;
System.out.println("m = " + i);
}
}
- break(跳出),continue(继续)
break:跳出整个循环
continue:结束本次循环继续下次循环