java基础复习(三)

一、运算符

  1.算术运算符

    1) 加法(+ 加法   正号  字符串拼接

    2) 减法(- 减法 负号

    3) 乘法 * 乘法

    4) 除法(/) 除法

      •     整数(小数)相除的例子

            10/3 =3;  10.0/3=3.33333

      •      0/0
      •      0.0/0.0  

            结果是NaN ,任何的NaN都不等于自己(面试题)

      •     1.0/0.0

            Infinity,表示无穷大

            

    5) 取模(%)

            

  2.自增自减

  ++(自增)     --(自减)

     自增自减只能够用于 变量,不能用于常量  

     自增自减运算的优先级    算术运算符  

    1)基本的使用

      1)

int  i=3;  // 表示把3赋值给变量i

i++;      //表示变量i的值加1i的值变成4

++i;      //表示变量i的值加 1i的值变成5

        

      2)

        

int i=3;

int j = i++;

i等于多少,j等于多少?


        

      3)

        

int i=3;

int j = ++i;

i等于多少,j等于多少?

         

        区别

          把整个表达式看成是一个整体。

          如果变量名在前面,那么整个表达式的值就是原来值不变。

          如果变量名在后面,那么整个表达式的值就是原来的值加

    2)常见的面试题

       1.

        

      2.

        

      3.

        

    3)练习

      1.

int i=5;

i++;

System.out.println("i="+i);//6

++i;

System.out.println("i="+i);//7

int a=++i;

System.out.println("a="+a);//8 i=8

a = a++;

System.out.println("a="+a);//8

a = ++a;

System.out.println("a="+a);//9

 

 

       2.

     4)总结

       不要把单独的  自增自减    有表达式的自增自减搞混淆了

      

i++;

 

int j =i++;

 

    

       一定要弄清楚计算规则,表达式的值     具体计数器的值的变化是什么

 

  3.赋值运算   

    =    +=     -=     *=     /=    %=

    1) 赋值符号的运算顺序?    

      从右到左,把符号右边的值赋值到左边的变量中

    2) 上面 后五个分别看成是一个整体: 例如 += 看成是一个符号,不要看成两个;

int i=3; 

i +=2;// 表示把2 累加到变量 i 中

i -=1;

i *=3;

i /=3;

i%=3;

 

       特例

short s = 3;

s += 2;   ----OK

 

short  s = 3;

s = s+2;//结果值是intint不能自动转换为short

 

  

  4.比较运算符

  ==    !=     >    <    >=    <=    instanceof

    规律:比较运算的结果是一个布尔类型的值(true false);   

  • 举例:

 

    定义一个布尔表达式,打印输出

 

  • 特别说明:instanceof 是判断一个对象是否属于某种类型

 

             是否可以用于我们之前学习的基本数据类型(回忆一下我们之前学习的数据类型除了基本数据类型 还有什么?)

  

  

  5.逻辑运算 

    &    |     &&     ||   ^    

  是应用于多个条件的组合判断。

    •   示例说明:

    例如小明参加2个学科的考试 java php  

    1) java php 同时考100分,奖励 欧洲十日游

    伪代码描述:java==100 并且 php==100

    2) java php,只要有一门考100分,奖励 源代码优惠券2000元一张

     伪代码描述:java==100 或者 php==100

  • 逻辑运算的两边结果值都必须是什么类型?  布尔

  &   :两边都为true ,结果为true

  |     只要有一边为true,结果为true

  &&    两边都为true ,结果为true

  ||    : 只要有一边为true,结果为true

  ^    : 两边不一样,结果为true ,否则为false,举个例子打印一下

  !   逻辑非,举个例子打印一下

  

  

  &&  ||   和   & |    区别?

    1)  & | 既可以充当逻辑运算,也可以是位运算符,怎么区分是逻辑运算还是位运算?

       根据表达式的结果是否为 布尔类型 来判断

    2) 双与  双或  具有短路行为  什么意思?

    举个例子 上面小明的考试的成绩 要求是两科都为100分,看到第一科低于100分之后没有必要再看第二科成绩

    代码表示:Java = 100  && php = 100   (java只考了5

    如果逻辑运算左边的值能够确定整个逻辑运算表达式的值,那么右边就不执行了,短路了。

        && 何时短路 ?    左边表达式结果为false

        ||  何时短路 ?    左边表达式结果为true

  • 思考:如何验证短路行为?

  提示:

    右边表达式用  自增自减,例如 ++i = 5

    或者使用一个编译正常,运行报错的表达式,例如 1/0

      

     常见错误

        例如:判断一个整数的变量 a里面的数据  在0-100之间

        正确写法 a>0   &&  a<100

        错误写法:   0<  a < 100  (java没有这种语法,不支持)

  6.位运算符 

  &    |    ^     ~    <<      >>     >>>

   位运算就是 二进制的位进行运算。

 

  •   示例:比如计算 125+176 ,从数学的角度是怎么计算的?
  •   同理,位运算也类似,比如 3&4

 

 

  可以把1看成是true,0看成是false

 

  &  :与 位运算,两边为1,结果为1

 

  |   :或 位运算,有一个为1,结果为1

 

  ^  :  异或,两边不一样,就为1,否则为0

 

  ~  :  取反,1变成0  ,0 变成1

 

  << :  向左位移动,例如1<<3                      

 

  >> :   向右位移动,例如8>>2        

 

  >>>:  无符号向右移动

  

  

    注意:正数的补码,反码,原码 都一样;

              负数的反码:符号为不变,其他位取反;

              负数的补码:它的反码+1;

  7.三目运算符  

    语法格式: X ? Y : Z

      1) 上面的三目运算整体看成是一个表达式,应该有一个结果值

      2) X ?  布尔类型的值或者结果为布尔类型的表达式

      3) Y  Z  ? 一般来说数据类型相同的值或者表达式

      4) 运算的规则?  

      X true,就是 Y 的结果值 ( 冒号前面的表达式的值)

      Xfalse,就是Z的结果值 ( 冒号后面的表达式的值)

      x ? y : z

 

    注意  不要受      :  的干扰,它们只是一个固定语法格式而已

    示例1 找出两个整型变量中的最大值

    

    示例2:判断一个数是 奇数 还是 偶数

    

    示例3 例如小明学习java 考试成绩  >=60 显示 非常优秀   否则输出 还有很大的提升空间。

    

二、条件选择结构

  

  • 举例: 加个条件 打印一句话。

 

           if(1==2){

 

  System.out.println(“今晚请大家吃大餐!”);

 

                   }

 

 

 

  • 示例  

 

智能机器人开发一套软件负责智能上厕所应该获取硬件设备上的性别标识)。

 

1.

 

                     

 

 

if(判断条件){

满足 判断条件(true),就执行此大括号里面的内容

}

 

 

 

                     2.

 

 

 

  if(判断条件A){

          满足 判断条件A(true),就执行此大括号里面的内容,后面的else不会执行

   }else{

           前面的 判断条件Afalse),执行else大括号里面的内容

   }

 

 

 

                   3.  

 

 

 

 if(判断条件A){

 满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行

}else if(判断条件B){

满足 判断条件B(true),就执行此大括号里面的内容

}

 

 

                    4.

 

 

 

if(判断条件A){

 满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行

   }else if(判断条件B){

       满足 判断条件B(true),就执行此大括号里面的内容

         }else{

前面的if  esle-if 都不满足条件(false),执行此大括号里面的内容

        }

 

 

 

    

 

5

 

   else if 可以有多个

 

if(判断条件A){

 满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行

   }else if(判断条件B){

       满足 判断条件B(true),就执行此大括号里面的内容,后面的else-if else 不执行

  } else if(判断条件C){

       满足 判断条件C(true),就执行此大括号里面的内容,后面的 else 不执行

         }else{

前面的if  esle-if 都不满足条件(false),执行此大括号里面的内容

        }

 

 

 

 

 

 

  • 总结 
  • if 后面的大括号如果不写,表示执行是后面的第一行代码(不建议这样写)

    

  • 练习
  1. 求出2个变量中的最大值
  2. 判断一个数是否是3的倍数

       ①  int a = 10;

      a %3 == 0 ?”就是3的倍数”:”不是”

       ②if(a %3 == 0 ){

           System.out.println(”就是3的倍数”)

      }else{

           System.out.println(”不是3的倍数”); 

      }

  3.小明java 考试成绩  按等级分   A B C  D ,判断变量值在不同的范围的,打印输出不同的等级

 

90~100 A等。

80-89 B等。

70-79 C等。

60-69 D等。

60以下E等。

 

    int score = 99;

    if(score>=90 && score <=100){

            }else if(score>=80 && scorce <90 ){

             }else if(score>=70 && scorce <80 ){

             }else if(score>=60 && scorce <70){

             }else{

             }

 

三、条件选择结构-switch

 

作用和if差不多,只是语法结构不一致而已。

  语法

switch(变量或者一个表达式){

case 变量的可能值1: 功能语句;break;

case 变量的可能值2: 功能语句;break;

case 变量的可能值3: 功能语句;break;

........

default:功能语句;break;

}

 

 

   

  示例 假设定义一个变量表示星期,然后使用switch结构,根据不同星期打印做不同的事情。

   

  

---------------------------------

  特殊的一些情况:

  1)  case的顺序(包括default) 可以是任意的,           但是建议先按照case的值的大小顺序排列,default放最后

  2) 执行顺序,是先依次找完所有的case,如果都不匹配才会执行default

  3)  break的作用,结束当前的这个switch结构

    •   从第一个匹配的条件开始,到第一个break之间的所有case判断失效
    • 在执行功能语句时,如果到末尾都没有break,自动结束,不会再循环回去。
    • 最后一个break 可以省略掉,但是建议还是写上
    • 再举例 一个 打印 春夏秋冬的例子?

        

  5) ase后面的值应该和变量的类型一致;

  6)  switch中的()中的变量地方类型可以是哪些?

  java5之前   :  byte short char int

  java5支持   :   enum枚举  (面向对象部分学习了之后回头测试)

  java7支持   :  String 类型

 四、循环的作用

  

  • 每一天重复干的事情? 

      睡觉 吃饭 耍朋友

  • 比如酷狗音乐的播放模式? 

       单曲循环 列表循环

  • 再比如说打印10句相同的内容?

  

Java中提供了3  种循环?

while  do-while  for

  1.上面的3中循环功能都是一样的,只是语法结构不一样,很多时候是可以相互交换的 既然都差不多,为什么有多个呢?  

    不同的循环结构,有不同的使用场景和优势

  2.在写循环代码之前呢?

    1) 要做什么事情

    2) 次数

    3) 要写循环,必须知道循环的语法

五、while的基本用法

  

while

语法格式:

while(条件(布尔类型的)){

// 循环体à具体做什么事情

}

 

 

  • 执行流程

1.一个循环可能会循环执行多次

  第一次判断条件true,继续执行

  第二次判断条件true,继续执行

  第三次判断条件true,继续执行

  。。。。。

  直到第n次判断条件false,终止循环

 2.为什么第一次 第二次是true 。。。 n次就是false?

  • 条件可以是一个常量

  举个例子(条件为布尔值true)

  

  • 一般我们使用一个变量来充当条件循环,

  举个例子:播放一首歌,循环播放10

    1) 定义一个整数的变量记录循环的次数

    2) 循环一次,自增一次

    3) 根据次数进行判断

  

3.写一段代码计算1-10的和

  1) 传统的做法

    1+2+3+4+5+6+7+8+9+10

    如果要求计算1-100 1-1000 这样写是否合理?

     可以动态的获得每一个加数

  2) 使用while循环每循环一次把取到的加数累加起来

  3) 在循环的外面定义一个变量用来放计算的和的值

  

练习

  1. 求出10以内2的倍数的数字 和 个数。
  2. 求出 1-10的所有偶数的和

六、do-while基本用法

 

l do-while    先执行一次,再判断

 

语法格式:

 

do{

    // 循环体

}while(条件);

 

 

 

举例:循环10

 

  • while区别?

 

  1) 定义一个 布尔变量,默认值false

 

  2) 将这个布尔变量放在 while  do-while 条件中,看有什么区别

  

 

   

 

posted @ 2019-01-03 18:21  Funkyd  阅读(292)  评论(0编辑  收藏  举报