第二周学习小结

第一章 运算符

一.运算符

1.1 运算符是什么

对常量和变量进行操作的符号称为运算符

1.2 算数运算符

+ , - , * , / , % , ++ , --

/: Java中默认除法取整数    例:  3/4 = 0

%: Java中取余数   

算数运算符拓展之++与--:

两种场景:
                1)单独使用
                        无论在数据前还是或者数据后:都是对当前变量的值进行自增1或者自减1 
                                应用场景:循环语句中有一个控制体语句(步长语句)
                        
                2)参与运算使用
                        在数据前:
                                先将当前变量本身的值进行自增1或者自减1,然后在参与运算
                       
                        在数据后:
                                先运算,然后变量的本身的值进行自增1或者自减1

        //定义两个变量
		int a = 3 ;
		int b = 4 ;
		
		//先输出a,b的值
		System.out.println("a:"+a) ;//3
		System.out.println("b:"+b) ;//4
		
		System.out.println("----------------------------------") ;
		
		//场景1:单独使用
		//a)在数据前面
		//++a ;
		//--b ;
		
		//b)在数据的后面
		//a ++ ;
		//b -- ;
		
		
		
		
		//场景2:参与运算使用
		//a)在数据的前面
		//定义两个变量m,n
		//int m = ++ a; //将a变量先自增1,结果赋值m
		//int n = -- b ;//将b变量先自减1,结果赋值n
		
		
		//b)在数据的后面
		int m = a ++ ; //先将a值赋值m,m就是3,然后a进行自增1,变成4
		int n = b -- ;//先将b的值赋值n,n就是4,然后将b的值进行自减1,变成3
		System.out.println("m:"+m) ;
		System.out.println("n:"+n) ;
		System.out.println("a:"+a) ; 
		System.out.println("b:"+b) ; 
        //定义两个变量x,y
		int x = 4;  //x=4
		int y = (x++)+(++x)+(x*10); //70  x++:4  ++x:6  x*10:60
 		
        
		//():运算过程,优先级的是一个整体
		System.out.println("y的值是:"+y) ;

1.3 赋值运算符

= , += , -= , *= , /= , %=

       //定义一个变量
		int a = 10 ;  //将10赋值给int类型的变量a
		

+=: 将符号左边的数据和右边的数据相加,然后在将结果赋值左边的变量a   类似于a = a + 200

特点: 隐藏了强转类型转换

同理可知-= , *= , /= , %=也是一样的 


		//面试题
		short s = 1 ;
        1)s = s + 1 ;
		2)s += 1 ; 
		s = s + 1 ; 
        /*不兼容的类型: 从int转换到short可能会有损失  (默认类型提升:隐式转换)
          Java中隐式类型提升:byte,shor,char三者之间不转换,参与运算时优先提升int(考 
          点),long,float,double;
        */
		//强制类型转换
		//s  = (short)(s+1) ;
        s += 1 ; //扩展的赋值运算符
		System.out.println("s:"+s) ;

1.4 关系运算符

关系运算符主要是完成数据和数据之间的比较,有> , >= , < , <= , == , !=

注意: 1.无论表达式简单还是赋值,最终都是boolean(true/false)

         2.==不能写成"="

         3.==:比较连接的两个基本数据类型(目前使用的基本类型),比较数据值相同

        //定义三个变量
		int a = 3 ; 
		int b = 4 ;
		int c = 5 ; 
		
		//输出
		System.out.println(a>b) ;//false
		System.out.println(a>=b) ;//a大于b或者a和b的值相同  false
		System.out.println((a+b)<=(b+c)) ;//true
		System.out.println(a==c) ;//false
		System.out.println(a!=b) ;//true
		
		System.out.println("-------------------------------------") ;
		
		//定义两个变量
		int m = 100 ;
		int n = 200 ;
		
		//定义一个boolean
		//boolean flag = (m=n) ; //不兼容的类型: int无法转换为boolean boolean不参与运算
		
		boolean flag = (m==n) ; //false
		System.out.println(flag) ;

1.5 逻辑运算符

逻辑运算符:开发使用居多
                   基本逻辑运算符
                           逻辑单与&:  并列关系
                                  结论: 有false,则false; 多个条件必须同时满足才成立!
                           逻辑单或|: 有true,则true; 多个条件,满足一个即可成立!
                           逻辑异或^: 相同则为false,不同则为true;
                           简单记:    男女关系
                            
                            男男 女女:false        男女 女男 :true
                    逻辑非!:
                            非true,则false;非false则true!                            

扩展的逻辑运算符(推荐)
                        逻辑双与&&
                        逻辑双或||

&:有false则false

|: 有true则true

^: 相同false,不同true 

!: 非false则true,非true则false

&&,||和&以及|的区别: 结果相同,但是有短路效果,一般建议使用&&,||

 逻辑单与&和逻辑双与&&的区别:
        
 共同点: 有false,则false; 都是并列关系,多个条件必须同时满足才成立!
        
 不同点:
            逻辑单与&: 当符号左边的表达式为false,右边还需要继续执行判断
            而逻辑双与&&: 当符号左边的表达式为false,右边不执行了,具有短路效果 ;  
            逻辑双||: 当这个符号左边表达式为true,则右边不执行了,具有短路效果;

1.6 位运算符

位运算符: 针对多个数据进行操作(使用"补码"计算结果)
                 计算出来的结果是具体的数据值;

基本的位运算符:
        位与&: 有0,则0
        位或|: 有1,则1
        位异或^:相同则为0,不同则为1   一个数据被另一个数据位异或两次,其值是它本身
        反码~: 按位取反,全部都0变1,1变0 

<<:  将<<符号左边数据乘以2的移动次幂 

>>:  将>>符号左边的数据除以2的移动次幂

>>>:无符号右移   无论最高符号位是1还是0,始终左边补0;(使用补码无符号右移)

1.7 三元运算符(三目运算符)

三元运算符的格式:
        (表达式)?执行语句1(具体的结果):执行语句2(具体的结果);

执行的流程:
        1)先判断表达式的结果是否成立,如果结果为true,就执行成立的语句1;
        否则不成立,则执行不成立的语句2;

        //定义两个变量
		int a = 30 ;
		int b = 20 ;
		
		//定义一个结果变量:max
		//(表达式)?执行语句1:执行语句2;
		int max = (a>b)?a:b; 
		//a大于b如果成立,那么就执行a的结果,否则就执行b的结果
		System.out.println("两个数据中的最大值是:"+max) ;
		
		System.out.println("------------------------------------") ;
		
		//2)定义三个变量,求三个变量中的最大值 (采用方式1实现)
		//方式1(分步实现): 可以使用中间变量的方式,先使用这个中间变量记录两个数据中的最大值,
		//然后在使用这个中间变量和第三个变量进行比较;
		
		//定义三个变量
		int x = 100 ;
		int y = 120 ;
		int z = 60 ;
		
		//定义一个中间变量:先记录x和y的最大值
		int temp = (x > y)? x : y ;
		//定义结果变量max2
		int max2 = (temp>z)? temp : z ;
		
		System.out.println("三个数据中的最大值是:"+max2) ;
		
		
		System.out.println("------------------------------------") ;
		
		//方式2:三元运算符的嵌套(不建议使用,如果没有带括号,层次不明显)
		int max3 = ( x > y)?((x>z)?x:y):((y>z)?y:z) ; //带了括号,结构很明显
		//int max3 =  x > y?x>z?x:y:y>z?y:z ; 
		System.out.println("三个数据中的最大值是:"+max3) ;
		
		System.out.println("----------------------------------") ;
		
		//定义两个变量,求两个变量是否相等
		
		int m = 50 ;
		int n = 55 ;
		
		//定义boolean类型变量接收
		boolean flag = (m==n)? true:false;
		System.out.println("flag:"+flag) ;
		
		//优化上面代码:==本身比较 :本身结果就是true/false
		
		boolean flag2 = (m==n) ;
		System.out.println("flag2:"+flag2) ;

第二章 键盘录入数据与流程控制语句

一 键盘录入数据

1. 步骤

1)导包 用哪个一类,就需要导入到当前Java文件中(只要不是java.lang包下的类,都需要导入)
           
            固定写法:
                    import java.util.Scanner; //用谁导谁
           书写位置:在class的上面
        
    2)固定格式:创建文本扫描器对象
        Scanner 对象名 = new Scanner(System.in) ; //对象名:自己起名字
        
    3)提示并录入数据 (默认录入int类型)
        System.out.println("请您输入数据:") ;
        int 变量名= 对象名.nextInt() ; //录入一个int类型的数据
        
    4)完成自己的业务操作:使用这个变量名(求两个数据是否相等/比较数据最大值等等...)    

二 流程控制语句

2.1 概述

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对 运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语 句的执行顺序来实现我们要完成的功能。

2.2 流程控制语句的分类

顺序结构语句

选择结构语句

循环结构语句

三 顺序结构语句

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大 多数的代码都是这样执行的。 总的来说:写在前面的先执行,写在后面的后执行

四 选择结构之if语句

4.1 if语句格式1

执行流程: 
        1)首先表达式是否成立,成立,则执行该语句
        2)不成立,不会进入if里面;

4.2 if语句格式2

 执行流程:
        1)先判断表达式是否成立,如果成立,执行执行语句1;
        2)如果不成立,则执行语句2;

4.3 if语句格式3

执行流程:
            1)首先判断表达式1是否成立,如果成立,则执行语句1;
            2)如果上面表达式1不成立,继续判断表达式2是否成立,如果成立,执行语句2
            3)如果表达式2也不成立,继续判断表达式3是否成立,如果成立,执行语句3
            ...
            ...
            4)如果上面的条件表达式都不成立,则执行最终语句n+1 ; 

4.4 if语句格式2和三元运算符有什么区别?

if是一个流程控制语句,不仅能够表示具体的结果,而且还可以一个输出语句体现;
但是三元运算符,一般情况:就是最终是具体的结果体现!
if范围大于三元;能够使用三元运算符实现的一定能够使用if格式2;反之,不一定!

五 选择结构之switch语句

5.1 格式

5.2 执行流程

执行流程:很类似于if格式3    
        1)switch中的表达式的结果值和case语句匹配,值1和结果匹配,
            就执行语句1,遇见break,switch结束;
        2)值1和switch表达式结果不匹配,继续判断值2是否匹配,如果匹配,就执行语句2,switch语句                 结束
        
        ...
        ...
        3)如果case语句后面值都不匹配,这个执行default语句,执行语句n+1,程序执行到末尾结束...

5.3 注意事项

1)case语句后面只能是常量(Java是一个强类型语言: 语法,结构非常严谨)
            相对来说:前端:javascript :简称"js",Switch语句的case中不仅可以常量,也可以是变量
                                        是一个弱类型语言(语法结构非常不严谨)
        
 2)case语句中beark 最好携带上,如果没有携带break语句,会造成"case穿透"
             "case穿透": (要灵活使用,并不是说这个情况不好)
             某个case语句中没有带break,此时当跟case的值匹配,这个时候继续就往下执行,不会在判                 断case!
        
3)default语句可以在switch语句中的任何位置,不会影响switch的执行流程
             如果在语句中,
             default里面的break千万不能省略;省略,造成case穿透(考点)
             如果在语句末尾,break可以省略不写,前期不建议
            
4)switch语句的结束条件是什么?
             a)遇见break结束
             b)程序默认执行到末尾

5.4 switch跟的表达式可以是什么数据类型?    

能够跟的基本类型:int,byte,short,char
Jdk版本不同的跟的类型不一样
JDK5以后,可以 跟枚举: enum : 枚举类(引用类型,里面的都常量!)                                      
JDK7以后:可以跟String类型     

六 For循环

6.1 格式

6.2 执行流程

    1)初始化语句对变量进行赋值 
    2)判断条件表达式是否成立;
        如果是成立,执行循环体语句;
    3)继续执行控制体语句 
    4)继续回到2)里面判断
        如果是成立,执行循环体语句;
    继续回到3)    
    ...
    ...
    ...
    一直执行到条件不成立结束;

七 while循环

7.1 格式

7.2 执行流程 

     1)先初始化赋值
     2)判断条件表达式是否成立,成立,则执行循环体语句-
     3)执行控制体语句---继续判断条件是否成立,----循环,,,
      ...
      ...
     4)执行到条件表达式不成立,while语句结束

 7.3 while循环和for循环的区别

1)共同点:都时能够实现循环的效果;
    
2)从格式有些差异
        通用格式:
        for循环:整个操作(初始化语句;条件表达式;控制体语句){
                
        }
        初始化语句;
        while(条件表达式){
            循环体
            控制体语句
        }
        
        a)从内存角度考虑:for循环结束之后,当前里面的局部变量被释放了,节省内存空间!
            相对来说,while循环,结束之后,依然可以访问到这个变量,
            整个main方法结束之后,才释放内存,使用过程中,消耗内存空间!
            for循环比while更好一些!
            
        b) 当前明确循环次数时候,优先使用for循环;不明确循环次数使用的while循环
            for使用最多;

7.4 死循环

 八 do-while循环

 8.1 格式

8.2 执行流程

        1)初始化语句赋值
        2)执行循环体语句
        3)执行控制体语句
        4)条件表达式判断,如果条件成立,继续执行循环体...
        ...
        
        ...
        条件表达式不成立,语句结束;  

九 For循环嵌套

9.1 格式

9.2 打印99乘法表

        //99乘法表
		//为了表示有效数据:从1开始
		for(int x = 1 ; x <= 9 ; x++){//控制行数
			//内层循环:列数在变化
			for(int y = 1; y <=x ; y++){
				System.out.print( x+"*"+y+"="+(y*x)+"\t") ;
				//使用制表符号:
				//转义字符"\x" 
				//\n :表示换行
				//\t :制表符,类似于tab键的效果,缩进空格
				
			}
			System.out.println() ;
		}

十 跳转控制语句

10.1 跳转控制语句都有哪些

break:中断,结束
    不能单独使用,
    1)只能在switch或者循环语句中使用;  单循环for循环中使用
    
    2)在for循环嵌套中使用 
            break 标签语句 ;(现在很少见)
            
            给外层循环,或者内层循环起名字--->标签语句;

continue:继续---->结束当前循环,立即进入下次循环
    不能单独使用

return:返回具体的结果(结束方法)

          一般return很少单独使用,需要在有具体返回值类型的方法中使用!

          return 一般都是结合方法使用
          return 结果值;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值