学习Java------day03

爱⌒轻易说出口 提交于 2019-12-27 02:51:33

今日学习内容罗列:

1.运算符


昨天简单介绍了算术运算符和赋值运算符,今天重点学习比较运算符、逻辑运算符、位运算符和三目运算符:

      1.比较运算符:

             主要有以下几类:>、<、==、>=、<=、!=;
                       boolean不进行类型转换的:-------->Boolean  (引用类型)    (jdk5以后新特性:自动拆装箱)
            
                           举例:  int a = 100;
                                        boolean f = a;    //错误的, boolean类型的变量是:true 、 false;

              注意:运算符连接的表达式无论是简单还是复杂,结果最终都是boolean类型!


       2.逻辑运算符:实际开发中,逻辑运算符结合if(表达式){...}else{...};分为基本的运算符和扩展的运算符两大类,分别是:
             1)基本的运算符:
                    逻辑单与&:
                            结论:并列关系,有false,则false
                    逻辑单或|:
                            结论:或的关系,有true,则true (有一个满足条件,则成立)
                    逻辑异或^:
                            结论:相同则为false,不同则为true
                            简单记忆:男女关系(男男    女女   男女  女男;同性恋受歧视)

                                 举例:int a=3,b=4,c=5;

                                         System.out.println((a<c)^(b>c)) ;        //true(男) ^ false(女)    两表达式结果不同,输出结果为:true;
                                         System.out.println((a<c)^(b<c)) ;       //true(男) ^ true(男)       两表达式结果相同,输出结果为:false; 
                    逻辑非!:
                            结论:
                                      非true,则false
                                      非false,则true
                                      偶数个非是它本身!         //   int a=3,c=4; System.out.println(!!(a>c)) ;执行后为false
            2)扩展运算符:实际开发中,基本的逻辑运算符使用少,经常会用到 && 逻辑双与,|| 逻辑双或,具体用法如下:
                    逻辑双与(&&):

                           和逻辑单与&特点一致,但是它如果左边表达式为false,右边不执行,具有短路效果;
                    逻辑双或(||):

                           和逻辑单|特点一致,左边表达式为true,右边不执行(短路效果);

                     注意点:逻辑双与(&&)和逻辑单与(&)的区别?

                          共同点:都可以表示并列关系,有false,则false; 

                          区别:
                                 1)逻辑双与&&,如果左边的表达式位false,则符号右边的表达式不会执行,称为扩展的逻辑运算符的短路效果;
                                 2)同理逻辑双||,如果左边的表达式为true,则右边不执行,具有短路效果;

       3.位运算符:分为基本运算符和扩展运算符两大类,分别是:
             1)基本位运算: 连接的是具体的数值---->对应二进制数据
                     a. 位与&:     对应二进制数中,有0则为0;
                     b. 位或|:      对应二进制数中,有1则为1;
                     c. 位异或^: 相同则为0,不同则为1;

                            特点:一个数据被另一个数据位异或两次,其值是它本身;

                                     举例:int a = 10 ,b = 20 ;
                                                System.out.println(a ^ b ^ b);             //输出结果为:10;
                     d. ~(数据):  每个位按位取反,1变0,0变1;

               备注:一般以计算题的形式出现:  一些变量进行既有逻辑符号又有位运算符号;

            2)移位运算:
                        1)>>:右移

                                  特点:当前数据除以2的移动次幂;                  //System.out.println(24 >> 2);//24/2^2 = 6;
                                             最高位如果是1,左边补齐1,如果为0,左边补齐0;
                        2)<<:左移

                                    特点:当前数据乘以2的移动次幂;               //System.out.println(3 << 2) ;  //3 *2^2 = 12;
                                               最高位丢弃掉,右边补齐0;
                        3)>>>:无符号右移        (Java原码中会见到这种符号)
                                    无论最高符号位是1还是0,左边补齐0;

       三元运算符:(三目运算符)-------->Java底层原码中会有三元运算符 / TreeSet集合中 (自然排序/选择器排序)
                        表达式? 表达式1:表达式2;
                               流程:判断表达式是true还是false;如果为true,执行表达式1,如果为false,执行表达式2;
                               举例:int a = 10,b=20 ;    
                                          int result = (a>b)? a:b;
                                          System.out.println("result:"+result) ;
                                                                              输出结果为:result:20    

2.键盘录入数据


 在键盘录入数据时,我们会用到  Scanner类;该类是由Jdk提供的;

      键盘录入数据的使用步骤:
             第一步:创建键盘录入对象:

                           固定格式写法:Scanner  sc = new Scanner(System.in) ;
                           其中sc为定义的变量名,可以是其他的名称,但是还是要做到见名知义的原则;

            第二步:导包:位置是在class的上面  

                         (java.util.Scanner;  在Java语言中,只要不是java.lang包下的类,都需要导包(目录))
                           格式:   import java.util.Scanner;(固定格式)

            第三步:接收键盘录入的数据:
                           书写格式:int 变量名 = 对象名.nextInt() ;           //录入下一个int类型的数据

                           注意:“nextInt() ; ”的意思是录入int型数据,其他类型的在之后的学习中再介绍;
            第四步:输出结果:

    举例:import java.util.Scanner;               //导包,在class上面;
               class ScannerDemo{

                    public static void main(String[] args){

                         Scanner sc = new Scanner(System.in) ;           //创建键盘录入对象;
                         System.out.println("请您输入一个数据:");
                         int num = sc.nextInt() ;                                 //录入下一个int类型的数据;
                         System.out.println("您输入的数据是:"+num) ;
                         }
                    }

3.流程控制语句


流程控制语句可分为三大类,分别是:顺序结构、选择结构、循环结构;今天重点学习顺序结构,其余结构明天详细介绍!

      顺序结构:简言之就行是,代码由上而下加载;

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

             总的来说:写在前面的先执行,写在后面的后执行;

4.tips


a.  在比较运算符中,注意 == 不能写成 = ;

b.  位运算都是针对二进制数来进行计算的;

c.  运算符优先级:括号  ---->  单目运算符  ---->  双目运算符  ---->  三目运算符  ---->  赋值运算符;(自己总结)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!