day03总结(运算符 if语句 循环语句 )

03.01运算符

03.01.1逻辑运算符

逻辑运算符有哪些
	&(并且) , |(或者) , !() , ^(异或) , &&(短路与) , ||(短路或)
注意事项:
	逻辑运算符一般用于连接boolean类型的表达式或者值。
		在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6 。
	表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
		算术表达式:a + b
		关系表达式:a == b
结论:
	&逻辑与:falsefalse|逻辑或:truetrue^逻辑异或:相同为false,不同为true!逻辑非:falsetrue,非truefalse

运算符&与&&的区别

两者最终结果一样。
&&具有短路效果。左边是false,右边不执行。
 
为提高效率,多使用&&|||同理    

03.01.2 位运算符

位运算符有哪些:
	&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
	注意事项:位运算是直接对二进制补码进行运算。运算效率高一些
	
        &:有0则0
		|:有1则1
		^:相同则0,不同则1
		~:按位取反  0变1 1变0  符号位也包含在内取反	
例:
正数的按位反:+9
原码:00001001
反码:00001001
补码:00001001
按位取反 1  1110110 补码
再推回原码
      1  1110110 补码
    -          1  
   -----------------------------   
      1  1110101 反码
  取反
   ----------------------   
      1  0001010 原码 
      
最后结果是: -10  

位异或运算符的特点及面试题

位异或运算符的特点
	^的特点:一个数据被另一个数据位异或两次,该数本身不变。
			自己位异或自己是0 
面试题:
    请自己实现两个整数变量的交换。
public class MyDemo1 {
    public static void main(String[] args) {
        //值交换
        int a = 10;
        int b = 20;
        //重新赋值
        /*  a=20;
         b=10;*/
        //方式1:采用中间变量,来进行值交换,开发中常用的手段,重点掌握

        int t = a; //中间变量
        a = b;
        b = t;


        //方式2:采用位异或进行运算,来交换值
        // 一个数被另一个数位异或两次该数不变
        /*
        a=a^b;
        b=a^b;//a^b^b ---> b=a;
        a=a^b;//a^b^a ----> a=b;
        */
        //方式3:通过 + - 运算
        /*
        a=a+b;
        b=a-b;
        a=a-b;
        */
        //方式4:一步写完
       // b=(a+b)-(a=b);
        System.out.println("a:" + a);
        System.out.println("b:" + b);
    }
}    

位运算符<< >> >>>的用法

    <<:左移			空位补0,被移除的高位丢弃。
	>>:右移			被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。
	>>>:无符号右移	  被移位二进制最高位无论是0或者是1,空缺位都用0补。
	(对所操作数的二进制补码进行移动)
	
结论:
	<< : 把<<左边的数据乘以2的移动次幂   
	>> : 把>>左边的数据除以2的移动次幂	

03.01.3三元运算符

三元(三目)运算符的格式
	(关系表达式) ? 表达式1 : 表达式2;
三元运算符的执行流程
	计算关系表达式的值,如果为true, 运算后的结果是表达式1; 
					 如果为false,运算后的结果是表达式2;
案例:获取两个数中的最大值   求三个数中的最大值
public class MyDemo2 {
    public static void main(String[] args) {
        //求两个数的最大值
        int a=5000000;
        int b=100;

        int max=a>b?a:b;
        System.out.println("最大值是:"+max);
        System.out.println("====================================");
        //求三个数的最大值:
        int j=200;
        int i=500;
        int h=30;

        int max1=j>i?j:i;
        int max2=max1>h?max1:h;
        System.out.println("最大值是:" + max2);
    }
}

03.02 键盘录入的格式

导包
		格式:
			import java.util.Scanner; 
		位置:
			在class上面。
创建键盘录入对象
		格式:
			Scanner sc = new Scanner(System.in);   sc可以自己起名字
通过对象获取数据	
		格式:
			int x = sc.nextInt();

03.03 if语句

03.03.1 if语句格式1及其使用

if语句的格式1
	if(比较表达式或者是boolean类型的值) {
		语句体;
	}
执行流程:
		先计算比较表达式的值,看其返回值是true还是false。
		如果是true,就执行语句体;
		如果是false,就不执行语句体;
案例演示
	判断两个数据是否相等
public class MyDemo2 {
    public static void main(String[] args) {
        int a=20;
        int b=100;
        if(a==b||a<b){ //表达式 但是结果是布尔类型
            System.out.println("要执行的语句333333");
        }

        System.out.println("下面的代码");

    }
}

03.03.2 if语句的格式2及其使用

if语句的格式2

	if(比较表达式) {
		语句体1;
	}else {
		语句体2;
	}

	注意事项:else后面是没有比较表达式的,只有if后面有。

执行流程:
	首先计算比较表达式的值,看其返回值是true还是false。
	如果是true,就执行语句体1;
	如果是false,就执行语句体2;
案例:判断一个数是奇数还是偶数,并输出。
class Demo{
	public static void main(String[] args){
		int a=3;
		if (a%2==0){
			System.out.println("a是偶数");
		}else{
			System.out.println("a是奇数");
		}
	}
}        

03.03.3 if语句的格式3及其使用

if语句的格式3if(比较表达式1) {
		语句体1;
	}else if(比较表达式2) {
		语句体2;
	}else if(比较表达式3) {
		语句体3;
	}
	...
	else {
		语句体n+1;
	}
执行流程:
	首先计算比较表达式1看其返回值是true还是false,
	如果是true,就执行语句体1if语句结束。
	如果是false,接着计算比较表达式2看其返回值是true还是false,
	
	如果是true,就执行语句体2if语句结束。
	如果是false,接着计算比较表达式3看其返回值是true还是false...
	
	如果都是false,就执行语句体n+1。

注意事项: 当只要有一个条件满足时,if语句结束。else是可以省略,但是不建议省略。
案例演示
需求:键盘录入一个成绩,判断并输出成绩的等级。
	/*
		90-100 优秀
		80-89  良
		70-79  中
		60-69  及格
		0-59   差
	*/
import java.util.Scanner;

public class MyDemo6 {
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的成绩 0---100");
        int score = scanner.nextInt();
        
        if(score>=0&&score<60){
            System.out.println("成绩不及格");
        }else if(score >= 60 && score <80){
            System.out.println("成绩差");
        }else if(score >= 80 && score < 90){
            System.out.println("成绩中等");
        }else if(score >= 90 && score < 100){
            System.out.println("优秀");
        } else if (score==100) {
            System.out.println("很棒 满分");
        }else{
            System.out.println("你乱输入 ,成绩不合法");
        }
    }
}	

03.03.4 if语句的嵌套使用

案例演示
	需求:获取三个数据中的最大值
	if语句的嵌套使用。
	可以三元实现,也可以if嵌套实现。
public class MyDemo4 {
    public static void main(String[] args) {
        
        // if else 可以嵌套使用
        int max=0;
        if(num1>num2){
            //再跟num3去比较
            if(num1>num3){
                max=num1;
            }else{
                max=num3;
            }
        }else{
           if(num2>num3){
               max=num2;
           }else{
               max=num3;
           }
        }
        System.out.println("最大值是:"+max);
    }
}

03.03.5 if语句使用的注意事项

比较表达式无论简单还是复杂,结果必须是boolean类型
	if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
	一般来说:有左大括号就没有分号,有分号就没有左大括号
else后是没有表达式的,只有if后面有。    

03.03.6 if语句和三元运算符的转换问题

三元运算符实现的,都可以采用if语句实现。反之不成立。
	
什么时候if语句实现不能用三元改进呢?if语句控制的操作是一个输出语句的时候就不能。
	为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
案例:获取两个数中较大的值。
    public class MyDemo7 {
     public static void main(String[] args) {
        
        int max=100>50?100:50;
        System.out.println(max);
        int max2=0;
        if(100>50){
            max2=100;
        }else{
            max2=50;
        }
--------------------------------------------------------------        
        if (100 > 50) {
            System.out.println("真的情况进来执行了");
        } else {
            System.out.println("假的情况进来执行了");
        }
    }
}

03.04 switch语句

03.04.1 switch语句的格式和基本使用

switch语句的格式
	switch(表达式){
		case1:
			语句体1;
			break;
		case2:
			语句体2;
			break;
		case3:
			语句体3;
			break;
		....
		default:	
			语句体n+1;
			break;
	}
switch语句的格式解释
	(1):switch表示这是switch语句
		表达式的取值:byte,short,int,char
		JDK5以后可以是枚举(什么是枚举,以后再讲)
		JDK7以后可以是String
	(2):case后面跟的是要和表达式进行比较的值
	(3):语句体部分可以是一条或多条语句
	(4):break表示中断,结束的意思,可以结束switch语句
	(5):default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
面试题
	byte可以作为switch的表达式吗?可以
	long可以作为switch的表达式吗?no
	String可以作为switch的表达式吗?JDK1.7
执行流程
	先计算表达式的值
	然后和case后面的匹配,如果匹配成功就执行对应的语句,遇到break就会结束,否则执行default控制的语句
    
案例:
public class MyDemo {
    public static void main(String[] args) {
      /*  A:
        案例演示
        分别用switch语句和if语句实现下列需求:
        键盘录入月份,输出对应的季节*/
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入月份 1----12");
        // 春季:3 4 5  夏季 6 7 8  秋季: 9 10 11 冬季:12 1 2
        int month = sc.nextInt();
        //对月份进行判断 输出 对应的季节
        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("冬季");
                break;
        }
    }
}    

03.04.2 switch语句的注意事项

case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的值
	default可以省略吗?
		可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
	break可以省略吗?
		可以省略,但是结果可能不是我们想要的。
		会出现一个现象:case穿透。
		最终我们建议不要省略
	default一定要在最后吗?
		不是,可以在任意位置。但是建议在最后。
	switch语句的结束条件
		a:遇到break就结束了
		b:执行到末尾就结束了

03.05 switch语句和if语句的使用场景

在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
	if语句使用场景:
		针对结果是boolean类型的判断
		针对一个范围的判断
		针对几个常量值的判断
	switch语句使用场景:
		针对几个常量值的判断

03.05 for语句

for语句的格式:
	for(初始化表达式语句;判断条件语句;控制条件语句) {
		循环体语句;
	}
执行流程:
	a:执行初始化表达式语句
	b:执行判断条件语句,看其返回值是true还是false
		如果是true,就继续执行
		如果是false,就结束循环
	c:执行循环体语句;
	d:执行控制条件语句
	e:回到B继续。	
注意事项:
	初始化表达式语句只执行一次
案例:在控制台输出10次"helloworld";
public class MyDemo2 {
    public static void main(String[] args) {
        //对于重复代码,我们要考虑使用循环来做
        //for 循环
        //输出10句我爱你
        /*
        * 1.int i=0; 循环的初始值 只执行一次
        * 2.i<10 循环的条件:当i<10 为true时 循环继续执行循环体里面的代码 i<10 为false时循环终止
        * 3. 循环体{ System.out.println("我爱你");}
        * 4. i++ 控制循环的语句。
        * 然后返回 2 继续判断 如果为true继续第3步 然后第4步,直到 i<10 为false时 循环结束
        *
        * */
             //1    2    //4
        for(int i=0;i<10;i++){
            //3
            System.out.println("我爱你");
        }
    }
}
注意事项
	a:判断条件语句无论简单还是复杂结果是boolean类型。
	b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
	c:一般来说:有左大括号就没有分号,有分号就没有左大括号
	idea快速生成循环语句  fori 回车
	    反向遍历快速生成 forr 回车

03.05.1 for语句练习(水仙花数)

public class MyDemo {
    public static void main(String[] args) {
       /* A:
        案例演示
        需求:在控制台输出所有的”水仙花数”

        所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
        举例:153 就是一个水仙花数。
        153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 = 1 + 125 + 27 = 153

        //1.能确定循环的范围  100-----999
        //2. 怎么获取每一个位上的数字
          // 1 5 3
          // 个位上的3 怎么获取出来
             153%10 =3
           //十位上的5
             153/10%10
            //百位上的1
            153/100%10
        */
      /*  System.out.println(153/1%10);
        System.out.println(153 / 10 % 10);
        System.out.println(153 / 100 % 10);*/

        //定义一个统计变量
        int count=0;
        for (int i =100; i <=999; i++) {
            //获取每个位上的数字
            int ge=i/ 1 % 10;
            int shi= i/ 10 % 10;
            int bai= i / 100 % 10;
            //求每个位上的数字的立方和
            int flowerNumber=ge*ge*ge+shi*shi*shi+bai*bai*bai;
            //判断
            if(i==flowerNumber){
                System.out.println("水仙花数是:"+i);
                count++;
            }
        }

        System.out.println("水仙花数总共有:"+count+" 个");
    }
}

03.06 while语句

循环结构while语句的格式:
	while循环的基本格式:
		while(判断条件语句) {
			循环体语句;
		}
	完整格式:
	    初始化条件语句;
	    while(判断条件语句) {
			 循环体语句;
			 控制条件语句;
	   }
执行流程:
	a:执行初始化条件语句;
	b:执行判断条件语句,看其返回值是true还是false
		如果是true,就继续执行
		如果是false,就结束循环
	c:执行循环体语句;
	d:执行控制条件语句
	e:回到b继续。
案例:输出10句我爱你
public class MyTest {
    public static void main(String[] args) {
        //while
        //输出10句我爱你
        //定义一个变量,作为循环的初始值
        /*
        //while(条件){
              循环体
              控制循环的语句
         }
        */

        int i=1;
        while (i<=10){
            System.out.println("我爱你们");
            //控制循环的语句 不要忘了写
            i++;
        }
    }
}        

03.07 do while 语句

循环结构do...while语句的格式:
	do {
		循环体语句;
	}while(判断条件语句);
	
	完整格式;
		初始化条件语句;
		do {
			循环体语句;
			控制条件语句;
		}while(判断条件语句);
执行流程:
	a:执行初始化条件语句;
	b:执行循环体语句;
	c:执行控制条件语句;
	d:执行判断条件语句,看其返回值是true还是false
		如果是true,就继续执行
		如果是false,就结束循环
	e:回到b继续。
案例:
public class MyTest4 {
    public static void main(String[] args) {
        //do{循环他}while(条件)
        //先执行一次 do里面的代码然后再去判断while()中的条件是否成立,如果成立就继续循环,不成立循环结束
        int i=10;
        do{
            //先执行一次,循环体,再去判断条件是否成立
            System.out.println("循环体执行了");
        }while (false);
        System.out.println("===========================");
        do {
            //先执行一次循环体,再去判断条件是否成立,如果成立,循环继续,如果不成立,循环结束
            System.out.println("循环体执行了");
            i--; //控制循环的语句,不要忘了
        } while (i>0);
    }
}        

03.08 三种循环语句的区别

三种循环语句的区别:
	(1):do...while循环至少执行一次循环体。
		而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
	(2):A: 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
			因为变量及早的从内存中消失,可以提高内存的使用效率。
		B:建议优先考虑for循环,然后是while循环 ,最后是do...while循环

03.09 死循环

一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
两种最简单的死循环格式
	while(true){...}
	for(;;){...}

03.08 三种循环语句的区别

三种循环语句的区别:
	(1):do...while循环至少执行一次循环体。
		而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
	(2):A: 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
			因为变量及早的从内存中消失,可以提高内存的使用效率。
		B:建议优先考虑for循环,然后是while循环 ,最后是do...while循环

03.09 死循环

一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
两种最简单的死循环格式
	while(true){...}
	for(;;){...}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值