JAVA 第三章

第三章

主要内容
运算符与表达式
  • Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。

  • Java语言中的绝大多数运算符和C语言相同,基本语句,如条件分支语句、循环语句等也和C语言类似,因此,本章就主要知识点给予简单的介绍 。

  • 算术运算符

    • 加减运算符:+ , -

      • 加减运算符是二目运算符;
      • 加减运算符的结合方向是从左到右;
      • 加减运算符的操作元是整型或浮点型数据
      • 加减运算符的优先级是4级。
    • 乘、除和求余运算符:* , / , %

      • 以上运算符是二目运算符,
      • 结合方向是从左到右,
      • 乘、除和求余运算符的操作元是整型或浮点型数据
      • 运算符的优先级是3级。
    • 算术表达式

      • 用算术符号和括号连接起来的符合java语法规则的式子,称为算术表达式。
      如:
      x+2*y-30+3*(y+5)
      
    • 自增、自减运算符:++,–

      • 单目运算符,
      • 可以放在操作元之前,也可以放在操作元之后。
      • 操作元必须是一个整型或浮点型变量。
      • 作用是使变量的值增1或减1,
      如:
      ++x(--x)表示在使用x之前,先使x的值增(减)1。
      x++(x--)表示在使用x之后,使x的值增(减)1。
      例如:  
          int f=2;
          int m=2; 
          int x=(f*m++)+m; //x=7;
          int y=(f*++m)+m; //y=9;
      
    • java中数据类型的精度从排列的顺序是:

      • byte
      • short
      • char
      • int
      • long
      • float
      • double
    • Java在计算算术表达式的值时,使用下列计算精度规则:

      • 如果表达式中有双精度浮点数(double型数据),则按双精度进行运算.
      • 如果表达式中最高精度是单精度浮点数(float型数据),则按单精度进行运算.
      • 如果表达式中最高精度是long型整数,则按long精度进行运算.
      • 如果表达式中最高精度低于int型整数,则按int精度进行运算.
      • char型数据和整型数据运算结果的精度是int。
  • 关系运算符: > , < , >= , <= , == , !=

    • 特点:

      • 关系运算符是二目运算符,
      • 用来比较两个值的关系
    • 关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false。

    • 运算规则:

      • 在关系运算符中,当操作数是基本数据类型时,比较的是数据内容
      • 在关系运算符中,当操作数是引用类型时,比较的是引用对象的引用值判断是否是同一对象,而没有比较对象的内容。
  • 逻辑运算符包括: &&、||、!

    • &&、|| 为二目运算符,实现逻辑与、逻辑或;

    • !为单目运算符,实现逻辑非。

    • 规则:

      • 逻辑运算符的操作元必须是boolean型数据,逻
      • 辑运算符可以用来连接关系表达式
    • &&,||也称短路运算符

      • 当前面的表达式op1的值为false时,&&运算符在运算时就不再去计算op2表达式的值;
      • 当op1为true时,||运算符就不再计算op2的值。(
  • 赋值运算符:=

    • 赋值运算符是二目运算符,

    • 左面的操作元必须是变量,不能是常量或表达式。

    • 赋值运算符的优先级较低,是14级,

    • 结合方向右到左。

    • 赋值表达式的值就是=左面变量的值。

    • 注意:不要将赋值运算符=与等号逻辑运算符==混淆。

  • 位运算符:是指对两个整型数据按照对应的位进行运算,结果为新的整型数据。

    • 按位运算
      • &
        • 双目运算符。
        • 运算法则是:如果a,b两个数据对应位都是1,则c的该位是1,否则是0。
    • 按位运算
      • |
        • 双目运算符。
        • 运算法则是:如果a,b两个数据对应位都是0,则c的该位是0,否则是1。
    • 按位运算
      • ~
        • 是单目运算符。
        • 运算法则是:如果a对应位都是0,则c的该位是1,否则是1。
    • 按位异运算
      • ^
        • 双目运算符。
        • 运算法则是:如果a,b两个数据对应位相同,则c的该位是0,否则是1。
  • instanceof 运算符

    • 二目运算符,
    • 左面的操作元是一个对象;右面是一个类。
    • 当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是true ,否则是false。
  • Java的表达式就是用运算符连接起来的符合Java规则的式子。

  • 运算符的优先级决定了表达式中运算执行的先后顺序。

  • 在编写程序时尽量使用括号()运算符号来实现想要的运算次序,以免产生难以阅读或含糊不清的计算顺序。

  • 运算符的结合性决定了具有相同级别运算符的先后顺序 。

  • 语句概述

    • Java里的语句可分为以下六类
      • 方法调用语句:
        如:
        System.out.println(" Hello");
        
      • 表达式语句:表示式尾加上分号。
        比如赋值语句:
        x=23;
        
      • 复合语句:可以用{ }把一些语句括起来构成复合语句,
         如:
         {   z=123+x;
                 System.out.println("How are you");
                 }
        
      • 空语句:一个分号也是一条语句,称做空语句。
      • 控制语句:控制语句分为条件分支语句、开关语句和循环语句。
      • package语句和 import语句:它们和类、对象有关
  • 顺序结构

  • if条件分支语句

    • 条件分支语句按着语法格式可细分为三种形式:

      • if语句
      • if-else语句
      • if-else if- ……- else if -else 语句
    • if语句

      • 是单条件分支语句,即根据一个条件来控制程序执行的流程

      • if 语句的语法格式:

        if(布尔表达式){ 
            若干语句
        }
        
        package com.lxt;
        
        import java.util.Scanner;
        
        public class Demo{
            public static void main(String[] args){
                Scanner scanner = new Scanner(System.in);
        
                System.out.println("请输入一个内容");
                String s = scanner.nextLine();
        
                if(s.equals("HELLO")){
                    System.ot.println(s);
                }
        
                scanner.close();
            }
        }
        
      • 注:

        • 表达式的值必须是boolean型的;
        • 不能用0代表false,用1代表true
    • if-else 语句

      • 是双条件分支语句,即根据一个条件来控制程序执行的流程。

      • if-else 语句的语法格式:

        if(表达式) {
                若干语句
        }
        else {
            若干语句
        } 
        
    • if-elseif 语句

      • 是多条件分支语句,即根据多个条件来控制程序执行的流程。
      • if-else if-else语句的语法格式:
        if(表达式) {
                若干语句
        }
        else if(表达式) {
                若干语句
        }
        … …
        else {
            若干语句
        } 
        
  • switch开关语句

    • switch 语句是单条件多分支的开关语句 ,

    • 它的一般格式定义如下(其中break语句是可选的):

      switch(表达式)
      {
      case 常量值1:
                  若干个语句
                  break;
      case  常量值2:
                  若干个语句
                  break;
          ...
      case  常量值n:
                  若干个语句
                  break;
      default:
              若干语句
      }
      
    • 说明:

      • 表达式的值必须是:byteshortIntchar,不能是String或者long型的;(与int兼容类型)
      • 这里面必须要有break语句,否则,就会匹配显示从匹配的常量值到最后。
      • default语句放的位置是任意的。
      • 检查时case 常量必须与switch表达式可用的类型相同。
  • 循环语句

    • for

      • for语句的语法格式:
        for (表达式1; 表达式2; 表达式3) {
            若干语句 
        } 
        
      • for语句的执行规则是:
        • 计算表达式1,完成必要的初始化工作。
        • 判断表达式2的值,若表达式2的值为true,则执行循环体,否则进行结束for语句的执行。
        • 执行循环体,然后计算“表达式3”,以便改变循环条件,再次判断表达式2的值
        • 结束for语句的执行。
      • 打印九九乘法表
        package com.lxt.struct;
        
        import java.util.*;
        
        public class Demo{
            public static void main(String[] args){
                for(int i = 1;i < 10;i++){
                    for(int j = 1;j <= i;j++){
                        System.out.print(i+"*"+j+"="+(i*j));
                    }
                    System.out.print();
                }
            }
        }
        
    • while

      • while语句的语法格式:
        while (表达式) {
                若干语句 
        }
        
      • while语句的执行规则是:
        1. 计算表达式的值,如果该值是true时,就进行(2),否则执行(3)。
        2. 执行循环体,再进行(1)。
        3. 结束while语句的执行。
    • do-while

      • do-while语句的语法格式:
        do {
                    若干语句
        } while(表达式); 
        
      • do- while语句的执行规则是:
        1. 执行循环体,再进行(2)。
        2. 计算表达式的值,如果该值是true时,就进行(1),否则执行(3)。
        3. 结束while语句的执行。
  • breakcontinue语句

    • breakcontinue语句是用关键词breakcontinue加上分号构成的语句。
    • 在循环体中可以使用break语句和continue语句。
    • 如果在某次循环中执行了break语句,那么整个循环语句就结束。
    • 如果在某次循环中执行了continue语句,那么本次循环就结束,即不再执行本次循环中循环体中continue语句后面的语句,而转入进行下一次循环。
  • 数组与for语句

    • JDK1.5后,对for语句的功能给予扩充、增强,以便更好地遍历数组。语法格式如下:
      for(声明循环变量:数组的名字) {
          …… 
      }
      
    • 其中,声明的循环变量的类型必须和数组的类型相同。
    • 这种形式的for语句类似自然语言中的for each语句,
    • 为了便于理解上述for语句,可以将这种形式的for语句翻译成对于循环变量依次取数组的每一个元素的值
  • 的打印三角形

    package com.lxt.struct;
    
    import java.util.*;
    
    public class Demo{
        public static void main(String[] args){
            for(int i = 0;i < 5;i++){
                for(int j = 5;j >= i;j-- ){
                    System.out.print(" ");
                }
                for(int k = i;k >= 0;k--){
                     System.out.print("*");
                }
                for(int k = i;k > 0;k--){
                    System.out.print("*");
               }
                System.out.println();
            }
        }
    }
    
重点和难点

重点:运算符、表达式和各种控制语句

难点:各种控制语句用法

习题
  1. 问答题

    1. 关系运算符的运算结果是 boolean 类型
    2. if语句中的条件表达式不可以为int类型
    3. while语句中的条件表达式的值是 boolean 类型
    4. switch语句中default选项不是必须的
    5. while语句的循环体中,执行break语句的效果是 结束while语句的执行
    6. 可以用for语句代替while语句的作用
  2. 选择题

    1. A 数据类型的判断
    2. C
    3. C。
  3. 阅读程序

    1. 你,苹,甜
    2. Jeep好好
    3. x=-5,y=-1
  4. 编程序题

    public class Xiti1 {
      public static void main(String args[]) {
    double sum=0,a=1;

     int i=1;
    

while(i<=20) {
          sum=sum+a;

i++;

a=a*i;

}

System.out.println(“sum=”+sum);

}

}

  1. public class Xiti2 {
      public static void main(String args[]) {
          int i,j;

    for(j=2;j<=100;j++) {
              for(i=2;i<=j/2;i++) {
                 if(j%i==0)

    break;

    }

    if(i>j/2) {
                 System.out.print(" "+j);

    }

    }

    }

    }

    class Xiti3 {
      public static void main(String args[]) {
          double sum=0,a=1,i=1;

    do { sum=sum+a;

    i++;

    a=(1.0/i)*a;

    }

    while(i<=20);

    System.out.println(“使用do-while循环计算的sum=”+sum);

    for(sum=0,i=1,a=1;i<=20;i++) {
              a=a*(1.0/i);

    sum=sum+a;

    }

    System.out.println(“使用for循环计算的sum=”+sum);

    }

    }

    4.
    public class Xiti4 {
      public static void main(String args[]) {
         int sum=0,i,j;

    for(i=1;i<=1000;i++) {
            for(j=1,sum=0;j<i;j++) {
               if(i%j==0)

    sum=sum+j;

    }

    if(sum==i)

    System.out.println(“完数:”+i);

    }

    }

    }

    5.
    public class Xiti5 {
      public static void main(String args[]) {
         int m=8,item=m,i=1;

    long sum=0;

    for(i=1,sum=0,item=m;i<=10;i++) {
            sum=sum+item;

    item=item*10+m;

    }

    System.out.println(sum);

    }

    }

    6. 
    public class Xiti6 {
      public static void main(String args[]) {
          int n=1;

    long sum=0;

    while(true) {
            sum=sum+n;

    n++;

    if(sum>=8888)

    break;

    }

    System.out.println(“满足条件的最大整数:”+(n-1));

    }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值