20天jvava(三)

20天jvava(3)
1. Java 运算符
      运算符 -->表达式 -->语句,如 int result=1+2;
  1.1 Java运算符的分类
           数学运算符:+ - * / %
           赋值运算符:= += -= *= /= %=
           自增自减运算符:++ --
           关系运算符:> < >= <= != ==        
           逻辑运算符:&& || ! & |       
           位运算符:     & | ^ ~ >> <<
           三元运算符: 布尔表达式 ? 表达式1 : 表达式2
        
1.1 数学运算符: + - * / %
  (1) 运算的封闭性:
    1.同种类型参与数学运算,返回同种类型(可能发生:上溢出和下溢出)
    2.不同类型参与数学运算的规则:
               如果操作元只有byte、 short、 char、int,运算结果都是int型
                     如:byte a=1,b=1;  byte c=a+b;//编译出错
               如果操作元包含long、float、double,运算结果是大类型 
          练习:交换两个整数的值(2种算法)
            //不使用中间变量
            int a=10,b=20;
a = a + b;
b = a - b;
a = a - b;
  (2) % 取余数运算
     0%5 -> 0, 2%5->2, 5%5->0, -1%5->-1
  
      ------------------------------->
n    -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10
n%5  -1 0  -4 -3 -2 -1 0 1 2 3 4 0 1 2 3 4  0
        练习:打印输出100个数字,每10个数字一行
  
  (3) 字符串的连接运算: +
       任何数据与字符串连接(+) 都会生成新字符串
   ","+2 -> ",2"   'C'+2 -> "69"
  
1.2 赋值运算符:= += -= *= /= %=
    int a=10;  //使用=将10赋给变量a
    a+=1;      //使用复合赋值运算符+=,等价于a=a+1; 复合赋值运算符使程序更加简洁
   
1.3 自增自减运算符:++ --
    ++ 加1, -- 减1
    "++"和"--"既可以作为前置运算符,也可以作为后置运算符
       int x=0,i=10,k=100;
       i=x++;//"++"作为后置运算符,i的值变为0,x的值变为1
       k=++x;//"++"作为前置运算符,k的值变为2,x的值变为2
     
  1.4 关系运算符:> < >= <= != == 
            比较运算符的结果是boolean类型,如boolean b = '\u0000'==0;//true
                
  1.5 逻辑运算符:&& || ! & |
          逻辑操作符只能操作boolean类型的表达式,能够表达与、或、非三种逻辑
    "&&"和"&"为与运算符,boolean c = a && b;
           运算规则是:
        a      b      c
      true    true   true
      true    false  false
      false   true   false
      false   false  false
     
    "||"和"|"为或运算符,boolean c = a || b;
             运算规则是:
        a      b      c
      true    true   true
      true    false  true
      false   true   true
      false   false  false   
     
      如:int age = 12;
  char sex = '男';
      boolean isChild = age<16;
  boolean isMan = sex=='男';
  boolean isBoy = isChild && isMan;
  boolean isGirl = isChild && !isMan;
  boolean isKid = isBoy || isGirl;
  
     
    "&&"和"||"称为短路运算符,当左边的布尔表达式能够计算出整个结果时,将不执行右边的布尔表达式。大多数情况下使用 短路运算符
    "&"和"|"称为非短路运算符,始终执行左右边的布尔表达式
             如:   int i=1,j=1,k=0;boolean c = (i>j) && (i/k>2);//使用&&结果为false,使用&时报错
            
    "!"为非运算符,true->false,false->true  如:int a=1; boolean b = !(a>1);//b的值为false

  1.6 位运算符:     & | ^ ~ >> <<
    Java支持整数类型的位运算:
    "&" 按位进行与运算,规则:1&1=1,1&0=0,0&1=0,0&0=0
              练习:截取整数的后4位
         int a=0x2a,b=0x0f;int c=a&b;//c=0x0a;    
              
    "|" 按位进行或运算,规则:1|1=1,1|0=1,0|1=1,0|0=0
             练习:0xf0 | 0x0f = ?
            
    "^" 按位进行异或运算,规则:1^1=0,1^0=1,0^1=1,0^0=0
              练习:交换两个整数的值(使用异或运算符)           
            int a=10,b=20;
a = a ^ b;
b = b ^ a;
a = a ^ b;

   "~" 按位取反,规则:~1=0, ~0=1
   ">>" 右移运算符,右移1位相当于除以2,如12>>2等价于12/(2*2)
   "<<" 左移运算符,左移1位相当于乘以2,如12<<2等价于12*(2*2)
  
  1.7 三元运算符: 布尔表达式 ? 表达式1 : 表达式2
      如果布尔表达式为true,返回表达式1的值,否则返回表达式2的值
      int a=1,b=1;
      int c=a>b?a:b;//c=1
     
      int rows = 20;//数据行数
      int size = 10;//每页行数
      int pages = rows%size==0 ? rows/size : rows/size+1; //页数
     
     
2 分支流程控制语句
    分支语句使代码在满足特定条件的情况下才会被执行。
  if...else语句
  if(布尔表达式){
    //...
  }else if(布尔表达式){
  //...
  }else{
  }
 
  switch(){
    
  }
    练习:判断某一年是否为闰年(闰年共有366天,四年一闰,百年不闰,四百年再闰)
  
3. 循环流程控制(1)
   3.1 循环语句的作用是反复执行一段代码,循环语句一般包括如下4个部分:
       (1)初始化部分:用于设置循环的初始条件
       (2)循环条件:一个布尔表达式,用于判断是否终止循环
       (3)迭代部分:用于改变循环变量的值
       (4)循环体:循环操作的主体内容
   3.2 for 循环
     for(初始化表达式;循环布尔表达式;迭代表达式){
                   循环体
     }
     练习1:计算1到100之和
  
      
作业:
1 复习并且完成 全部 课堂演示代码, 添加适当的 输出语句, 研究输出结果, 添加适当的注释.
   
2 (选做)案例练习 输出等额本息还款计划表
如(示例):
  月份     本金       利息         归还
  第1月   930       712         1642
  第2月   940       701         1642
  ......
 
3. 将一个二进制数值的高4位和低4位交换
,如38的二进制形式为00100110,转变为01100010

4. 打印输出九九乘法表
    1*1=1 1*2=2      ..1*9=9
    1*2=2 2*2=4      .......
    .
    .
    .
    1*9=9 2*9=18 ......9*9=81