3、JAVA基础-运算符及流程控制语句

1:运算符(掌握)
     (1)算术运算符
          A:, , * , / , % , ++ , --
          B:+的用法
               a:加法
               b:正号
               c:字符串连接符
          C:/和%的区别
               数据做除法操作的时候,/取得是商,%取得是余数
          D:++和--的用法
               a:他们的作用是自增或者自减
               b:使用
                **单独使用
                 放在操作数据的前面和后面效果一样。
                 a++或者++a效果一样。
                **参与操作使用
                 放在操作数的前面:先自增或者自减,再参与操作
                  int a = 10;
                  int b = ++a;
                 放在操作数的后面:先参与操作,再自增或者自减
                  int a = 10;
                  int b = a++;
     (2)赋值运算符
          A:=,+=,-=,*=,/=,%=等
          B:=叫做赋值运算符,也是最基本的赋值运算符
               int x = 10; 把10赋值给int类型的变量x。
          C:扩展的赋值运算符的特点
               隐含了自动强制转换。
            short s = 1;
            s += 1;
            请问上面的代码哪个有问题?
            (下面这个包含了强制类型转换  s= (s的类型)(s+1))
 
     (3)比较运算符
          A:==,!=,>,>=,<,<=
          B:无论运算符两端简单还是复杂最终结果是boolean类型。
          C:千万不要把==写成了=
     (4)逻辑运算符
          A:&,|,^,!,&&,||
          B:逻辑运算符用于连接boolean类型的式子
          C:结论
           &:有false则false
           |:有true则true
           ^:相同则false,不同则true。
                情侣关系。
           !:非true则false,非false则true
   
           &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
           ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
     (5)位运算符(不管符号位,所有位全部进行运算)
          A:^的特殊用法
               一个数据针对另一个数据位异或两次,该数不变
          B:面试题
               a:请实现两个变量的交换
                **采用第三方变量
                **用位异或运算符
                 左边a,b,a
                 右边a^b
               b:请用最有效率的方式计算出2乘以8的结果
                2<<3
            C: 取反运算符 ~
                    int a = 3;
                    System.out.println(~a);
                    输出 的“~a”= -4;
                    因为取反后被当做补码存放的,然后再按照补码准换成原码输出的。
 
     (6)三元运算符
          A:格式
               比较表达式?表达式1:表达式2;
          B:执行流程:
               首先计算比较表达式的值,看是true还是false。
               如果是true,表达式1就是结果。
               如果是false,表达式2就是结果。
          C:案例:
               a:比较两个数据是否相等
               b:获取两个数据中的最大值
               c:获取三个数据中的最大值
   
2:键盘录入(创建对象-记得加上new)
     (1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入                    键盘录入数据。
     (2)如何实现呢?目前就记住
          A:导包
               import java.util.Scanner;
               位置:在class的上边
          B:创建对象
               Scanner sc = new Scanner(System.in);
          C:获取数据
               int x = sc.nextInt();
     (3)把三元运算符的案例加入键盘录入改进。
 
3:流程控制语句
     (1)顺序结构 从上往下,依次执行
     (2)选择结构 按照不同的选择,执行不同的代码
     (3)循环结构 做一些重复的代码
 
4:if语句(掌握)
     (1)三种格式
          A:格式1
               if(比较表达式) {
                    语句体;
               }
   
           执行流程:
            判断比较表达式的值,看是true还是false
            如果是true,就执行语句体
            如果是false,就不执行语句体
 
          B:格式2
               if(比较表达式) {
                语句体1;
                   }else {
                语句体2;
                   }
   
               执行流程:
                判断比较表达式的值,看是true还是false
                如果是true,就执行语句体1
                如果是false,就执行语句体2
   
  C:格式3
               if(比较表达式1) {
                语句体1;
               }else if(比较表达式2){
                语句体2;
               }
               ...
               else {
                语句体n+1;
               }
   
               执行流程:
                判断比较表达式1的值,看是true还是false
                如果是true,就执行语句体1
                如果是false,就继续判断比较表达式2的值,看是true还是false
                如果是true,就执行语句体2
                如果是false,就继续判断比较表达式3的值,看是true还是false
                ...
                如果都不满足,就执行语句体n+1
     (2)注意事项
          A:比较表达式无论简单还是复杂,结果是boolean类型
          B:if语句控制的语句体如果是一条语句,是可以省略大括号的;            如果是多条,不能省略。
   建议:永远不要省略。
          C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
          D:else后面如果没有if,是不会出现比较表达式的。
          E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
     (3)案例:
          A:比较两个数是否相等
          B:获取两个数中的最大值
          C:获取三个数中的最大值(if语句的嵌套)
          D:根据成绩输出对应的等级
          E:根据月份,输出对应的季节
          F:根据x计算对应y的值并输出
     (4)三元运算符和if语句第二种格式的关系
          所有的三元运算符能够实现的,if语句的第二种格式都能实现。
  反之不成立。
 
          如果if语句第二种格式控制的语句体是输出语句,就不可以。
          因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。
 
 
1:在定义Long或者Float类型变量的时候,要加L或者f。
  整数默认是int类型,浮点数默认是double。
 
  byte,short在定义的时候,他们接收的其实是一个int类型的值。
  如果接收的数据不在它们的范围内,就报错。
 
2:byte值的问题
 byte b1 = 127;
 byte b2 = (byte)128; //-128
 byte b3 = (byte)129; //-127
 byte b4 = (byte)130; //-126
 
 byte的范围:-128 ~ 127
 
 128:10000000
 -128:10000000 (这里的1即是符号位,也是数值位)
 
3:数据类型转换之默认转换
 byte,short,char -- int -- long -- float -- double
 
 long: 8个字节
 float:4个字节
 
 A:它们底层的存储结构不同。
 B:float表示的数据范围比long的范围要大
  long:2^63-1
  float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
 
4:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
 可以。因为java语言中的字符占用两个字节。
 
 Java语言采用的是Unicode编码。所有Java语言中的字符char可以存储一个中文汉字!
 
posted @ 2015-10-22 14:33  最美的记忆  阅读(188)  评论(0编辑  收藏  举报