运算符、选择结构、循环结构

运算符、选择结构、循环结构

1. 算术运算符

1) 加法(+) 加法 正号 字符串拼接
2) 减法(-) 减法 负号
3) 乘法 (*) 乘法
4) 除法(/) 除法
5) 取模(%)

2. 自增自减

++ –
- 自增自减只能够用于变量,不能用于常量
- 自增自减运算的优先级 比 算术运算符 高

1) 基本的使用

enter code here
i++;      //表示变量i的值加1,i的值变成4
++i;      //表示变量i的值加 1,i的值变成5
int i=3;
int j = i++;//i的值变成4,j的值为3
int i=3;enter code here
int j = ++i;//i的值变成4,j的值为4

区别:

把整个表达式看成是一个整体。
如果变量名在前面,那么整个表达式的值就是原来值不变。
如果变量名在后面,那么整个表达式的值就是原来的值加1。

3. 赋值运算

= += -= *= /= %=
1) 赋值符号的运算顺序?
从右到左,把符号右边的值赋值到左边的变量中
2) 上面 后五个分别看成是一个整体: 例如 += 看成是一个符号,不要看成两个;
int i=3;
i +=2;// 表示把2 累加到变量 i 中
i -=1;
i *=3;
i /=3;
i%=3;

4. 比较运算符

== != > < >= <= instanceof
- 规律:比较运算的结果是一个布尔类型的值(true 或false);
特别说明:instanceof 是判断一个对象是否属于某种类型。

5. 逻辑运算符

& | && || ^ !
& :两边都为true ,结果为true
| :只要有一边为true,结果为true
&&:两边都为true ,结果为true
|| :只要有一边为true,结果为true
^ :两边不一样,结果为true
!: 逻辑非

&& || 和 & | 区别?

1) & | 既可以充当逻辑运算,也可以是位运算符,怎么区分是逻辑运算还是位运算?
根据表达式的结果是否为 布尔类型 来判断

2) 双与 双或 具有短路行为 什么意思?

举个例子 小明的考试的成绩 要求是两科都为100分,看到第一科低于100分之后没有必要再看第二科成绩
代码表示:Java = 100 && php = 100 (java只考了5分)
如果逻辑运算左边的值能够确定整个逻辑运算表达式的值,那么右边就不执行了,短路了。
&& 何时短路 ? 左边表达式结果为false
|| 何时短路 ? 左边表达式结果为true

6. 位运算符

& | ^ ~ << >> >>>
- 位运算就是 二进制的位进行运算。
- 示例:比如计算 125+176 ,从数学的角度是怎么计算的?

- 同理,位运算也类似,比如 3&4

可以把1看成是true,把0看成是false

& :与 位运算,两边为1,结果为1
| :或 位运算,有一个为1,结果为1
^ : 异或,两边不一样,就为1,否则为0
~ : 取反,1变成0 ,0 变成1
<< : 向左位移动,例如1<<3
>> : 向右位移动,例如8>>2
>>>: 无符号向右移动

7. 三目运算符

语法格式: X ? Y : Z

1) 上面的三目运算整体看成是一个表达式,应该有一个结果值
2) X ? 布尔类型的值或者结果为布尔类型的表达式
3) Y Z ? 一般来说数据类型相同的值或者表达式
4) 运算的规则?
X 为true,就是 Y 的结果值 ( 冒号前面的表达式的值)
X为false,就是Z的结果值 ( 冒号后面的表达式的值)

注意: 不要受 ? 和 : 的干扰,它们只是一个固定语法格式而已。
示例1: 找出两个整型变量中的最大值

    int a = 5;
    int b=6;
    System.out.println(a > b ? a : b);//?号前为真则取值为a的值,否则为b的值

示例2:判断一个数是 奇数 还是 偶数

    int x =6;
    String str =x%2==0?"偶数":"奇数";

8. 条件选择结构

举例: 加个条件 打印一句话。

    if(1==2){
        System.out.println(“今晚请大家吃大餐!”);
            }

1) if(判断条件){
满足 判断条件(true),就执行此大括号里面的内容
}

2)if(判断条件A){
满足 判断条件A(true),就执行此大括号里面的内容,后面的else不会执行
}else{
前面的 判断条件A(false),执行else大括号里面的内容
}

3) if(判断条件A){
满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行
}else if(判断条件B){
满足 判断条件B(true),就执行此大括号里面的内容
}

4)if(判断条件A){
满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行
}else if(判断条件B){
满足 判断条件B(true),就执行此大括号里面的内容
}else{
前面的if esle-if 都不满足条件(false),执行此大括号里面的内容
}

练习

  1. 求出2个变量中的最大值

    int a = 5;
    int b=6;
    if (a>b) {
        System.out.println(a);
    }
        System.out.println(b);
    
  2. 判断一个数是否是3的倍数

    int a = 5;
    if (a%3==0) {
            System.out.println(a+"是3的倍数");
    } else {
            System.out.println(a+"不是是3的倍数");
        }
    

9. 条件选择结构-switch

语法 :

 switch(变量或者一个表达式){
    case 变量的可能值1: 功能语句;break; 
    case 变量的可能值2: 功能语句;break;
    case 变量的可能值3: 功能语句;break;
    ........
    default:功能语句;break;
    }

1) case的顺序(包括default) 可以是任意的, 但是建议先按照case的值的大小顺序排列,default放最后
2) 执行顺序,是先依次找完所有的case,如果都不匹配才会执行default
3) break的作用,结束当前的这个switch结构
从第一个匹配的条件开始,到第一个break之间的所有case判断失效
在执行功能语句时,如果到末尾都没有break,自动结束,不会再循环回去。
4)case后面的值应该和变量的类型一致;
5) switch中的()中的变量地方类型可以是哪些?

10.Java中提供了3 种循环

while do-while for
1. 上面的3中循环功能都是一样的,只是语法结构不一样,很多时候是可以相互交换的
, 既然都差不多,为什么有多个呢?
不同的循环结构,有不同的使用场景和优势

  1. 在写循环代码之前呢?
    1) 要做什么事情
    2) 次数
    3) 要写循环,必须知道循环的语法

while 基本用法

while
语法格式:
while(条件(布尔类型的)){
// 循环体具体做什么事情
}

执行流程
1. 一个循环可能会循环执行多次
第一次判断条件true,继续执行
第二次判断条件true,继续执行
第三次判断条件true,继续执行
。。。。。
直到第n次判断条件false,终止循环

练习:

  1. 求出10以内2的倍数的数字 和 个数。
  2. 求出 1-10的所有偶数的和

    int a = 1;
    int sum = 0;// 用于存放和的值
    int cunt = 0;// 定义计数器,用于计数2倍数数字的个数
    /**
     * 当a<=10执行循环
     */
    while (a <= 10) {
        if (a % 2 == 0) {
            sum += a;
            cunt++;
            System.out.println("2倍数的数字有"+a);
        }
        a++;
    
    }
    System.out.println("10以内是2倍数的数字个数为"+cunt);
    System.out.println("10以内偶数的和为"+sum);
    

11.do-while 基本用法

do-while先执行一次,再判断
语法格式:
do{
// 循环体
}while(条件);

    int a =1;
    int sum=0;//用于储存1-10的和
    do {
        sum+=a;
        a++;
    } while (a<=10);
    System.out.println("1-10的和为"+sum);

}
while与do-while的区别:

1.while是先判断条件再执行循环
2.do-while是至少先执行一次,再判断条件。(总是会执行一次,无论条件是否为true)

12.for循环

语法格式:
for(初始化语句A ; 条件判断B ; 循环后功能语句C){
//循环体D
}
for的执行流程:
整个for循环结构中的 A 只会执行一次
循环第一次:A–>B(true)–>D–>C
第二次: B(true)–>D–>C
第三次: B(true)–>D–>C

第n次: B(false) 结束整个循环

练习:
  1. 用for循环计算1-10的 积(也就是 10的阶乘)

    int sum = 1;// 用于储存乘积
    for (int i = 1; i <=10; i++) {
        sum*=i;//累加乘积
    }
    System.out.println("10的阶乘为"+sum);
    

13.嵌套循环

循环嵌套 循环里面还有循环,可以嵌套多层,不同的循环结构相互之间也可以嵌套。
把循环里面的代码理解成一段普通的代码。

练习:
打印一个三角形

    for (int i = 1; i <= 5; i++) {
        System.out.println(" ");
        for (int j = 0; j < i; j++) {
            System.out.print("*");
        }
    }
    * 
    ** 
    *** 
    **** 
    *****

14.循环控制语句

1. break

break 表示终止 当前 这一层循环

    //循环打印1-5,打印到3的时候就停止循环
    /*
    System.out.println("循环开始...");
    for(int i=1;i<=5;i++){
        //判断i==3就结束,break
        if(i==3){
            break;
        }
        System.out.println(i);
    }
        System.out.println("循环结束...");

语法:用break 名字
结束当前这一层的循环结构(标签名字必须符合Java中标识符的命名规则)

    //break 终止当前这一层循环,怎么验证
    System.out.println("循环开始...");
    test:for(int i=1;i<=5;i++){ 
        System.out.println("i="+i);
        for(int j=1;j<=5;j++){
            if(i==3){
                break test;
            }
            System.out.print(" j="+j);
        }
        System.out.println();
    }

    System.out.println("循环结束...")

2. continue

continue 跳过本次循环,继续下一次循环

        for(int i=1;i<=7;i++){
        //当第5天的时候,不想打代码,但是第6天继续打代码
        if(i==5){
            continue;
        }
        System.out.println("打代码:"+i);
    }

3. return

return 表示结束当前的方法
使用刚才break的例子,修改为return 看看有什么区别
注意:break continue return 紧跟的后面不能够有其它的代码,因为永远执行不到

    // 判断i==3 终止整个方法的执行(也终止了for执行)
    for(int i=1;i<=5;i++){
        if(i==3){
            return;

        }
        System.out.println(i);
    }
    System.out.println("结束执行");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值