Java基础系列--02_运算符和程序的语句

运算符:
  (1)算术运算符:
      +,-,*,/,%,++,--(加、减、乘、除、取余、自增,自减)
    ++和--的注意事项:
      a:他们的作用是自增或者自减
      b:使用
        1.单独使用
          放在操作数据的前面和后面效果一样。
          a++或者++a效果一样。
        2.参与操作使用
          放在操作数的前面:先自增或者自减,再参与操作

          放在操作数的后面:先参与操作,再自增或者自减

1 int a = 10;
2 int b = ++a;     //b=11,a=11
3 int a = 10;
4 int b = a++;    //b=10,a=11

  (2)赋值运算符
    A:=,+=,-=,*=,/=,%=(等于,加等于,减等于,乘等于,除等于,取摸等于)
    B:=叫做赋值运算符,也是最基本的赋值运算符
      举例:int x = 10; 把10赋值给int类型的变量x。
    C:扩展的赋值运算符的特点
        隐含了自动强制转换。
    举例代码:

1 short s = 1;//声明变量s,并将常量1赋值给变量s
2 s = s + 1; //Type mismatch: cannot convert from int to short short ss = 1;
3 short ss += 1;    //ss变量加上常量值1
4 /*s = s + 1; s转换为int型,在参与运算,得到的结果仍然是int型,
5 *而ss是short型无法将int转换为short,所以报错。
6 */

  (3)比较运算符
    A:==,!=,>,>=,<,<=
    B:无论运算符两端简单还是复杂最终结果是boolean类型。
    C:千万不要把==写成了=(==表示比较,=是赋值)
  (4)逻辑运算符
    A:常用的:!,&&,||   不常用:&,|,^,
    B:逻辑运算符用于连接boolean类型的式子,得到的结果也是boolean类型
    C:结论
      !:非true则false,非false则true
      &&:结果和&是一样的,都表示与运算,只不过有短路效果,即判断左边的表达式可以确定整个表达式的值,就不再运算其他部分表达式,而&要运算全部的表达式。

        举例:(1 !=1 && a > b)左边是false,右边不执行。
      ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
      &:有false则false
      |:有true则true
      ^:相同则false,不同则true。(异或)
  (5)位运算符
    ^的特殊用法
      一个数据针对另一个数据位异或两次,该数不变
  举例:
    1.实现两个变量的交换:
      A:采用第三方变量
      B:用位异或运算符

 1 /*实现两个变量的交换*/
 2 //方式一:采用第三方变量
 3 //方式二:巧用位异或运算符
 4 int a=0;             //0000
 5 int b=10;           //1010
 6 //方式一:
 7 int temp =  0;
 8 temp = a;
 9 a = b;
10 b = temp;
11 //方式二:
12 a = a^b;     //a=1010->10 使用异或操作符不仅节省了代码量,还可以让程序更加快速,更加专业,因为异或的底层是二进制的运算

   2.最有效率的方式计算出256乘以8和256除以16的结果
    256<<3 = 2048(二进制码右移3位补0),256>>4 = 16(二进制码左移4位补0)
     <<,>>是移位操作符,一个是右移,一个是左移。每向右移动一位都相当于是乘2,每向左移动一位都相当于是除2
  (6)三元运算符
    A:格式
      比较表达式?表达式1:表达式2;
    B:执行流程:
      首先计算比较表达式的值,看是true还是false。
      如果是true,表达式1就是结果。
      如果是false,表达式2就是结果。
        举例:c = a>b?a:b;  //如果 a > b ,则 c = a;否则 c = b;
  (7)运算符的优先级

  优先级   描述        运算符
  1     括号          ()、[]
  2    正负号       +、-
  3    自增自减,非   ++、--、!
  4    乘,除,取余    *、/、%
  5    加、减       +、-
  6    移位运算      <<、>>
  7    大小关系      >、>=、<、<=
  8    相等关系       ==、!=
  9    按位与        &
  10    按位异或        ^
  11    按位或       |
  12    逻辑与       &&
  13    逻辑或       ||
  14    条件运算      ? :
  15    赋值运算     =、+=、-=、*=、/=、%=
  16    位赋值运算    &=、|=、<<=、>>=、>>>=
备注:如果在程序中,要改变运算顺序,可以使用()。在一些比较复杂的运算中,使用括号,能够提高程序的可读性。

2:键盘录入(后面再详细解释)
  (1)目的从键盘上灵活的录入我们的数据。
    使用步骤:A:导包
          import java.util.Scanner;
          位置:在默认包名的下方,class的上方
         B:创建对象
          Scanner sc = new Scanner(System.in);
         C:获取数据
          int x = sc.nextInt();

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 if语句
      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)三元运算符和if语句第二种格式的关系
    所有的三元运算符能够实现的,if语句的第二种格式都能实现。

if (a > b ){
    c = a;
}else{
    c = b;
}
//等价的三元表达式
c = a>b?a:b;  //如果 a > b ,则 c = a;否则 c = b;

5.switch语句
  (1)格式:
    switch(表达式) {
      case 值1:
        语句体1;
      break;
      case 值2:
        语句体2;
      break;
      ...
      default:
        语句体n+1;
      break;
    }
    格式解释说明:
      switch:说明这是switch语句。
      表达式:可以是byte,short,int,char(都可以强转为int)
      JDK5以后可以是枚举
      JDK7以后可以是字符串
      case:后面的值就是要和表达式进行比较的值
      break:表示程序到这里中断,跳出switch语句
      default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
  (2)应注意的问题
    switch语句的表达式可以是byte,不可以是long,JDK7之后可以是String。
  (3)执行流程:
    A:首先计算表达式的值
    B:和每一个case进行匹配,如果有就执行对应的语句体,执行到break就结束。
    C:如果没有匹配,就执行default的语句体n+1。
  (4)注意事项:
    A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
    B:default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
    特殊情况:
      执行到switch语句之前,case就可以把值确定。
    C:break可以省略,但是如果break省略了,程序就不会跳出switch,会按照原来的顺序继续执行,直到跳出。这个现象叫做case穿透。   
    D:default的位置不一定要在最后,但是它一定是在最后执行。
    E:switch语句的结束条件
      a:遇到break就结束了
      b:执行到末尾就结束了
  (5)if语句和switch语句各自的场景
    A:if
      针对boolean类型的判断
      针对一个范围的判断
      针对几个常量的判断
    B:switch
      针对几个常量的判断

6.循环语句
  (1)有三种:for,while,do...while,foreach(增强for)
  (2)for循环语句
    A:格式
      for(初始化语句;判断条件语句;控制条件语句){
        循环体语句;
      }
  A.执行流程:
    a:执行初始化语句
    b:执行判断条件语句
      如果这里是true,就继续
      如果这里是false,循环就结束
    c:执行循环体语句
    d:执行控制条件语句
    e:回到b
  B.注意事项
    a:判断条件语句无论简单还是复杂,结果是boolean类型
    b:循环体语句如果是一条,可以省略大括号,但是不建议
    c:有分号就没有左大括号,有左大括号就没有分号

  (3)while循环
    A:基本格式
      while(判断条件语句) {
        循环体语句;
      }
    扩展格式:
      初始化语句;
      while(判断条件语句){
        循环体语句;
        控制条件语句;
      }
      通过查看这个格式,说明while循环可以和for循环等价转换。
    B:for和while的区别
      a:使用上的区别
        for语句的控制条件变量,在循环结束后不能在使用(作用域)。
        而while的可以继续使用。
      b:理解上的区别
        for适合于一个范围的判断
        while适合次数不明确的
  (4)do...while循环
    A:基本格式
      do {
        循环体语句;
      }while(判断条件语句);
    扩展格式:
      初始化语句;
      do {
        循环体语句;
        控制条件语句;
      }while(判断条件语句);
      通过查看格式,说明三种循环的格式可以相互替换的。

    B:三种循环的区别
      a:do...while循环至少执行一次循环体
      b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体
  (5)foreach循环(其实叫做:增强for)
     格式:for (int[] arr : array) {
          //遍历数组
        }

      注意:Java中没有foreach循环,foreach循环其他的语言中的名称,但是Java中的增强for的本质是跟foreach循环一样的,这个循环一般是用来实现遍历操作。
  (6)循环使用的注意事项(死循环)
    A:一定要注意修改控制条件,否则容易出现死循环。
    B:最简单的死循环格式
      a:while( true ) { ... }
      b:for( ; ; ) { ... }

7.控制跳转语句
  (1)break:中断的意思
    A:用在循环和switch语句中,离开此应用场景无意义。
    B:作用
      a:跳出单层循环
      b:跳出多层循环,需要标签语句的配合
  (2)continue:继续
    A:用在循环中,离开此应用场景无意义。
    B:作用
      a:跳出单层循环的一次,可以继续下一次

//控制台输出7次:Hello Java
1
for(int x=1; x <= 10; x++) { 2 if(x%3 == 0) { 3 continue; 4 } 5 System.out.println("Hello Java"); 6 }

  (3)return:返回
    A:用于结束方法的,并返回某个值。
    B:一旦遇到return,程序就不会在继续往后执行。

posted @ 2019-03-20 18:08  zhenjungan  阅读(245)  评论(0编辑  收藏  举报