Java第四章和第五章:运算符和控制结构(持续更新)

第四章:运算符

算数运算符

  • /

  • %:

    •   a%b,当a是小数时,公式 = a - (int)a / b * b
        注:跟C++不同,C++要求%两侧必须是整数
        如:-10.5%3
        但因为-10.5是近似的,所以算出的结果也是近似的(即十分接近,但不相等,若要判断是否相等根据差<0.0001来判断)
      
  • ++


  • +(字符串拼接)

    面试题:
    1.
    int i=1;
    i = i++;//规则:使用临时变量:(1)temp = i;(2)i = i+1;(3)i = temp;
    System.out.println(i);//1
    2.
    int i=1;
    i = ++i;//规则:使用临时变量:(1)i = i+1;(2)temp = i;(3)i = temp;
    System.out.println(i);//2
    

赋值运算符

  • =

  • 复合赋值运算符:自动进行类型转换

    • byte b = 1;
      b = b + 2;//报错,int-->byte
      b += 2;//不报错,相当于b = (byte)(b + 2);
      

关系运算符(比较运算符)

  • <
  • >
  • =
  • !=
  • <=
  • =>
  • instanceof:检查是否是类的对象

逻辑运算符

  • 逻辑与&
  • 逻辑或|
  • 逻辑异或^
  • 短路与&&
  • 短路或||
  • 取反!

位运算符

  • <<:算数左移
  • >>:算数右移
  • >>>:逻辑右移

三元运算符

定义:
条件表达式?表达式1:表达式2
口诀:一真大师

运算符优先级

(),{}等
单目运算符
算数运算符
位移运算符
比较运算符
逻辑运算符
三元运算符
赋值运算符

标识符命名规则和规范

  • 规则

    •   1.字母,数字,下划线,$组成
        2.数字不可以开头
        3.不能用关键字和保留字
        4.不能包含空格
        5.区分大小写
      
  • 规范

    •   1.包名:多单词组成时所有字母小写:aaa.bbb.ccc
        2.类名、接口名:大驼峰命名法
        3.变量名、方法名:小驼峰命名法
        4.常量名:所有字母都大写,单词之间_间隔,如:TAX_RATE
      

关键字和保留字

关键字:被赋予特殊含义,用做专门用途的字符串(都为小写)
保留字:尚未使用,以后版本可能会作为关键字使用

键盘输入

import java.util.Scanner
Scanner reader = new Scanner(System.in)
double c = reader.nextDouble()
String a = reader.next()

第五章:控制结构

顺序结构

顺序执行

分支结构

  • 单分支:if

  • 双分支:if-else

  • 多分支:if-else if…-else

  • 嵌套分支

  • switch分支

    • 细节

      1.表达式数据类型,应和case后的常量类型一致,或者可以自动转换
      2.switch(表达式)中表达式的返回值必须是:byte,short,int,char,enum(枚举)String
      3.case子句中的值必须是常量,不能是变量
      
  • switch和if的比较

    •   如果判断的具体数值不多,而且符合byte,short,int,char,enum[枚举],String,使用switch
        对区间进行判断,对结果为boolean类型判断,使用if
      

循环结构

  • 四要素:循环变量初始化,循环判断条件,循环变量迭代语句,循环体

  • for循环

    • 细节

      1.for(;;):表示无限循环
      2.
      int i = 1;//循环条件
      for(;i<10;i++){
      	循环体
      }
      循环条件是否放在for里面的区别:作用域不同
      如果循环结构结束之后还需使用i变量:就将循环变量初始化放在外面
      
    • 编程思想

      1.化繁为简:即将复杂的需求,拆解成简单的需求,逐步完成
      2.先死后活:先考虑固定的值,然后转成可以灵活变化的值
      
  • while循环

    循环变量初始化
    while(循环条件){
    	循环体
    	循环变量迭代语句
    }
    
  • do-while循环

    循环变量初始化
    do{
    	循环体
    	循环变量迭代语句
    }while(循环条件)
    
  • 多重循环:最多2-3层

break语句

功能:退出循环结构

细节:

可以通过标签指明终止哪一层语句块
如:
lable1:
for(;;){
lable2:
	for(;;){
		break label1;
	}
}

continue语句

功能:结束本次循环,进入下次循环

细节

标签使用同break

return语句

功能:跳出所在方法

本章作业

统计班级成绩
  1. 统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生成绩从键盘输入]

    统计三个班及格人数,每个班有5名同学

    import java.util.Scanner;
    public class classNum {
        public static void main(String[] args) {
            /*
            需求:统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生成绩从键盘输入]
                统计三个班及格人数,每个班有5名同学
            实现:编程思想:1.化繁为简:
                                (1):for循环实现一个班级的5名同学成绩的输入
                                (2):算出总分sum和平均分average
                                (3):if单分支统计及格人数passNum
                                (4):for循环实现3个班级的情况
                        2.先死后活:
                                (1):班级个数,班级人数
             */
            //代码实现:
            double sum = 0,totalSum = 0,aver = 0,totalAver = 0;
            int passNum = 0,totalPassNum = 0;
            int classNum = 3,stuNum = 5;
            for(int s = 0;s < classNum; s++){
                for(int i = 0;i <stuNum;i++) {
                    System.out.println("请输入学生的分数:");
                    Scanner reader = new Scanner(System.in);
                    double score = reader.nextDouble();
                    sum += score;
                    if (score >= 60) {
                        passNum++;
                    }
                }
                aver = sum / stuNum;
                totalSum += sum;
                sum = 0;
                System.out.println("本班平均分:" + aver);
                System.out.println("本班及格人数:"+passNum);
                totalPassNum += passNum;
                passNum = 0;
            }
            totalAver = totalSum / (classNum * stuNum);
            System.out.println("所有班级平均分:"+totalAver);
            System.out.println("所有班级及格人数:"+totalPassNum);
        }
    }
    
九九乘法表
  1. 九九乘法表

    class chengfa {
        public static void main(String [] args){
            /*
            需求:九九乘法表
             */
            //代码实现
            for(int i = 1;i <= 9;i++){
                for(int j = 1;j <= i;j++){
                    System.out.print(j+" * "+i + " = " + j*i + "\t");
                }
                System.out.println();
            }
        }
    }
    
    
打印空心金字塔
  1. 打印空心金字塔
public class jinzita {
    public static void main(String [] args){
        /*
        需求:打印空心金字塔
        实现:
            编程思想:1。化繁为简
                           (1):先打印半个金字塔
                           (2):打印整个金字塔
                           (3):将金字塔镂空
                    2。先死后活
                            (1):金字塔层数
         */
        //代码实现(1):控制好*个数
        int level = 5;
        /*
        for(int i = 0;i < 5;i++){
            for(int j = 0;j < i;j++){
                System.out.print("*");
            }
            System.out.println();
        }*/
        //代码实现(2):前面加空格,控制好*个数
        /*
        for(int i = 0;i < 5;i++){
            for(int s = 0;s < level-i;s++){//*前输出空格
                System.out.print(" ");
            }
            for(int j = 0;j < (2*(i+1)-1);j++){//*为1、3、5、7、9,为2*level - 1
                System.out.print("*");
            }
            System.out.println();
        }*/
        //代码实现(3):除最后一层之外其他层只有第一个和最后一个输出*,最后一层*全部输出
        for(int i = 0;i < level;i++){
            for(int s = 0;s < level-i;s++){//*前输出空格
                System.out.print(" ");
            }
            for(int j = 0;j < (2*(i+1)-1);j++){//*为1、3、5、7、9,为2*level - 1
                if(j == 0|| j == (2*(i+1)-1)-1 || i == level-1){
                    System.out.print("*");
                }
                else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
打印空心菱形

4.打印空心菱形

public class lingxing {
    public static void main(String [] args){
        /*
        需求:打印空心菱形
        实现:
            1.化繁为简:
                    (1):打印正金字塔
                    (2):打印正金字塔加倒金字塔
                    (3):镂空菱形
            2.先死后活:
                    (1):菱形层数
         */
        //代码实现(2):加倒金字塔,输出level-1层,i=4,3,2,1进行循环,可以使level-i=0,1,2,3输出空格
        /*
        int level = 5;
        // 输出上半部分菱形
        for (int i = 1; i <= level; i++) {
            // 输出空格
            for (int j = 1; j <= level - i; j++) {
                System.out.print(" ");
            }
            // 输出星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

        // 输出下半部分菱形
        for (int i = level - 1; i >= 1; i--) {
            // 输出空格
            for (int j = 1; j <= level - i; j++) {
                System.out.print(" ");
            }
            // 输出星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }*/
        //代码实现(3):
        int level = 20;
        // 输出上半部分菱形
        for (int i = 1; i <= level; i++) {
            // 输出空格
            for (int j = 1; j <= level - i; j++) {
                System.out.print(" ");
            }
            // 输出星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                if(j ==1||j == 2 * i - 1)
                {
                    System.out.print("*");
                }
                else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }

        // 输出下半部分菱形
        for (int i = level - 1; i >= 1; i--) {
            // 输出空格
            for (int j = 1; j <= level - i; j++) {
                System.out.print(" ");
            }
            // 输出星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                if(j ==1||j == 2 * i - 1)
                {
                    System.out.print("*");
                }
                else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

换行输出

5.每5个输出一行

int count = 0;
//每执行一次count++
if(count % 5 == 0){
	System.out.println();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值