初识Java(三)(基础的选择结构)(自己学习整理的资料)

目录

一.程序的三大结构

二.关系运算符

三.关系表达式

四.boolean类型

五.if选择结构

if案例

六.if - else选择结构

if - else案例

七.多重if选择结构

多重if选择结构案例

八.嵌套if选择结构

嵌套if选择结构案例

逻辑运算符

九.switch选择结构

switch选择结构案例

十.选择结构的对应练习题

十一.笔记


一.程序的三大结构

  • 顺序结构:程序只能从第一行开始执行,中间不能跳过某一行代码,去执行后续代码。

  • 选择结构:打破顺序结构的限制,可以让代码进行有选择的执行,也就是说某一行或者某几行代码在条件不符合的时候不执行。

  • 循环结构:让某一行或者某几行代码可以重复多次执行。

二.关系运算符

关系运算符表
名称大于大于等于等于小于等于小于不等于
付哈>===<=<!=

ps:在初识Java(二)中学习了赋值运算符,算数运算符以及自增自减运算符。

:=为赋值运算符,==才表示等于。

三.关系表达式

  • 用关系运算符连接起来的算式我们称之为关系表达式。

  • 关系表达式的值是一个逻辑值,即"真"或"假"。

  • 关系表达式的结果只能是"真"或者"假"两种情况。

四.boolean类型

  • 在全宇宙范围内,布尔类型的值只有两个,真:true    ;  假:false    。

ps:到现在已学习了五种类型:整型int,双精度浮点型double,字符串类型String,字符型char以及布尔类型boolean。

五.if选择结构

  • 流程图

ps:流程图可以帮助我们梳理编程的步骤和逻辑。

  • 基本语法:

                          if(条件){ 

                                 //代码块

                          }

  • 当条件成立,即表达式的值为真(非0)时,执行"语句1";否则执行if语句的下一个语句。
if案例
  • 如果小明在期中考试语文大于90分,小明的妈妈就会奖励小明一个篮球。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int score = input.nextInt();
        if (score > 90){
            System.out.println("小明得到妈妈奖励的篮球");
        }
    }
}

练习

  • 输入一个整数,判断是不是偶数,若是则输出“是偶数”。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        if (num % 2 == 0){
            System.out.println(num + "是偶数");
        }
    }
}

六.if - else选择结构

  • 流程图

  • 基本语法

                         if(条件){ 

                                 //代码块1

                          }else{

                                //代码块2

}

  •  当条件成立,即表达式值为真(非0)时,执行"代码块1",否则执行else后的"代码块2"。

ps:if和else互斥,不可能同时执行。(As:生活中的十字路口)

if - else案例
  • 在体育测试中,若一分钟的跳绳次数大于等于180次则为"合格",否则为"不合格"。

  • 做题思想流程图

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        if (num >= 180){
            System.out.println("合格");
        }else{
            System.out.println("不合格");
        }
    }
}

 练习题

  • 给定一个数,判断该数是奇数还是偶数。如果为奇数,则输出odd;如果为偶数,则输出even。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        System.out.println("请输入一个整数:");//提示用户输入信息
        Scanner input = new Scanner(System.in);//接收用户输入的信息
        int num = input.nextInt();
        if (num %2 == 0){//进行判断,是否有余数
            System.out.println("even");//是偶数则输出even,不是则执行后面的语句
        }else{
            System.out.println("odd");//输出odd
        }
    }
}

七.多重if选择结构

  • 多重 if 既可以做等值判断,也可以做范围判断。

  • 基本语法

          if (条件1){
            //代码块1
          }else if (条件2){
            //代码块2
          }else {
           //代码块3
          }

多重if选择结构案例
  • 对学员的期末考试进行评测,成绩>=90为优秀,成绩>=为良好,成绩>=70为中等,成绩>=60为合格,成绩<60为不及格。

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        System.out.println("请输入一个学生的分数:");//提示用户输入信息
        Scanner input = new Scanner(System.in);//接收用户输入的信息
   int score = input.nextInt();
        if (score >= 90){
            System.out.println("优秀");
        }else if (score >= 80){
            System.out.println("良好");
        }else if (score >= 70){
            System.out.println("中等");
        }else if (score >= 60){
            System.out.println("及格");
        }else {
            System.out.println("不及格");
        }
    }
}

ps :多重 if 可以没有最后的else,用else if 再做一次判定,系统也不会报错。

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        System.out.println("请输入一个学生的分数:");//提示用户输入信息
        Scanner input = new Scanner(System.in);//接收用户输入的信息
   int score = input.nextInt();
        if (score >= 90){
            System.out.println("优秀");
        }else if (score >= 80){
            System.out.println("良好");
        }else if (score >= 70){
            System.out.println("中等");
        }else if (score >= 60){
            System.out.println("及格");
        }else if (score < 60){
            System.out.println("不及格");
        }
    }
}
  • 多重 if 在使用过程中的注意事项
  1. 在写很多个不同分支结构的 if 时,我们需要从高到低或者从低到高按照次序写代码,如果不按照次序写代码的话,结果可能会出现和我们的预期不一致的现象。

练习

  • 输入两个整数,比较它们的大小。若 x > y,输出 >;若 x = y,输出 = ;若 x < y,输出 <。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        System.out.println("请输入两个整数:");//提示用户输入信息
        Scanner input = new Scanner(System.in);//接收用户输入的信息
   int num1 = input.nextInt();
   int num2 = input.nextInt();
        if (num1 > num2){
            System.out.println(">");
        }else if (num1 == num2){
            System.out.println("=");
        }else{
            System.out.println("<");
        }
    }
}

八.嵌套if选择结构

  • 在 if 语句中又包含一个或者多个 if 语句,称为 if 语句的嵌套。

  • 大体框架

  • 语法结构
if (条件1){
    if (条件2){
        //代码块1
    }
}else {
    //代码块2
}
}else{
    //代码块3
}
嵌套if选择结构案例
  • 写一个登陆程序,输入正确的用户名和密码,输出语句"欢迎您!",否则输出"用户名不正确!"或者"密码错误!"。

import java.util.Scanner;
import java.util.concurrent.Callable;

public class lian {
    public static void main(String[] args) {
        //准备一个正确的用户名以及密码
        final String UNAME = "李";
        final String UPW = "555555";
        //提示输入用户名和密码
        System.out.println("请输入用户名:");
        Scanner input = new Scanner(System.in);
        String uname =input.next();
        //比较输入的数据是否和准备的用户名和密码一致
        if (uname.equals(UNAME)){
            //如果用户名输入正确,则继续运行下面的代码
            //否则返回”用户名不正确!“
            System.out.println("请输入密码:");
            String upw = input.next();
            if (upw.equals(UPW)){
                   //继续比较密码,如果正确则返回欢迎您!
                //如果错误则返回”密码错误!“
                System.out.println("欢迎您!");
            }else{
                System.out.println("密码错误!");
            }
        } else {
            System.out.println("用户名不正确!");
        }
    }
}

ps:在Java中,比较两个字符串的时候,要用equals。

练习

  • 输入一个整数,若这个数 > 1并且 < 100,则输出 yes ,否则输出 no。
import java.util.Scanner;
import java.util.concurrent.Callable;

public class lian {
    public static void main(String[] args) {
       // 输入一个整数,若这个数 > 1并且 < 100,则输出 yes ,否则输出 no。
        //提示输入一个整数
        System.out.println("请输入一个整数:");
        Scanner input = new Scanner(System.in);
        int num =input.nextInt();
        //对输入的数进行判断
        if (num > 1){
            //如果输入的数 > 1,则继续运行下面的代码
            //否则返回”no“
            if (num < 100){
                   //继续判断输入的数是否 < 100
                //如果 < 100,则返回”yes“,如果 > 100,则返回no。
                System.out.println("yes");
            }else{
                System.out.println("no");
            }
        } else {
            System.out.println("no");
        }
    }
}
逻辑运算符
逻辑与逻辑或逻辑非
&&| |
  • 逻辑三兄弟:逻辑与(&&)、逻辑或(| |)、逻辑非(!)

  • 逻辑与(3>1&&5>3):如果表达式A为真,同时表达式B也为真,整体结果为真。简记:同真为真,其余为假

  • 逻辑或(A | | B):表达式A和B中,只要有一个为真,整个表达式的结果就可以为真。简记:有真必真,其余为假

  • 逻辑非(!):取反。原来是真的,取反后结果为假。

学习了逻辑运算符后,那么上面的题代码可以简化为:

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
       // 输入一个整数,若这个数 > 1并且 < 100,则输出 yes ,否则输出 no。
        //提示输入一个整数
        System.out.println("请输入一个整数:");
        Scanner input = new Scanner(System.in);
        int num =input.nextInt();
        //对输入的数进行判断
        if (num > 1 && num < 100){
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
    }
}

九.switch选择结构

  • 适用于条件判断是等值判断的情且只能做等值判断。

  • switch应用的场景是有限的。优点:可以简化代码,使程序员输入代码的时间更短。

  • 语法结构

switch (表达式){
    case 常量1:
        //语句;
        break;
    case 常量2:
        //语句;
        break;
        //···
    default:
        //语句;
        break;
}
switch选择结构案例
  • 根据输入的数字,代表周几,打印该日菜单

  • 周一(1):红烧肉

  • 周二(2):土豆牛肉

  • 周三(3):炸鸡

  • 周四(4):汉堡

  • 周五(5):麻婆豆腐

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int day = input.nextInt();
  switch (day){
      case 1:
          System.out.println("红烧肉");
          break;
      case 2:
          System.out.println("土豆牛肉");
          break;
      case 3:
          System.out.println("炸鸡");
          break;
          case 4:
          System.out.println("汉堡");
              break;
          case 5:
          System.out.println("麻婆豆腐");
              break;
      default:
          System.out.println("今日未提供菜品。");
          break;
  }
    }
}
  •  Switch注意事项
  1. 常量:int    char    String

  2. 一定要在每一个case块以及default后加上break,否则造成case穿透,也就是代码会一直向下执行,直到碰到第一个break。

  3. 如果多个变量值,输出的语句相同,可以共用一个break节省程序员时间。

Ag:星期一到星期三的菜品都是炸鸡就可以优化代码如下

  switch (day){
      case 1:
      case 2:
      case 3:
          System.out.println("炸鸡");
break;
}

十.选择结构的对应练习题

  • (一)输入三个数,输出其中最大的数。
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入三个数字:");
        int first = input.nextInt();
        int second = input.nextInt();
        int third = input.nextInt();
        //一定要默认一个最大值。一般处理方式都是将第一个数字作为最大值。
        int max = first;
        if (second > max){
           max = second;
        }if (third > max){
            max = third;
        }//经过这样一个过程,那么最后保存在max中的值就是最大值。
        System.out.println("最大值为:" + max);
  }
    }
  • (二)判断输入的年份是否为闰年,如果是闰年就输出“是闰年”,否则就输出“平年”。 
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = input.nextInt();
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
            System.out.println("闰年");
        }else
        System.out.println("平年");
  }
    }

十一.笔记

  • 使用Scanner需要先导包 import java.util.Scanner。

  • 流程图符号代表的含义

  •  input.nexInt();后按住alt+enter能够快速补全代码并生成变量。

  • 在Java中,比较两个字符串的时候,要用equals。

  • switch:转换。

<think>好的,用户想要获取Java基础知识点的总结。我需要先整理一下用户提供的引用内容,看看里面有没有相关的信息。 首先,引用[1]提到Java基础知识点总结的目录,包括简介、基础语法、面向对象、String、Integer、Object、异常、IO、序列化、泛型、注解、反射。看来这些都是基础部分的重要内容。用户可能希望了解这些方面的基本概念和关键点。 引用[2]更详细地列出了Java基础的结构,比如第一章的初识Java、常识知识、大平台、基础语法、跨平台工作原理、JDK安装目录、注释、项目结构、关键字、基本数据类型和变量、常量、类型转换、运算符、流程控制等。这些内容都是Java入门必须掌握的知识点,用户可能需要一个系统的梳理。 引用[3]提供了一个数据结构原理的链接,但链接已经失效。不过数据结构在Java中也是基础的一部分,比如集合框架,但用户的问题可能更偏向于语言本身的基础,而不是数据结构。不过可能需要提到集合框架作为基础的一部分。 接下来需要组织这些内容,按照逻辑顺序进行总结。通常Java基础会从简介开始,然后是环境搭建、语法要素、数据类型、运算符、流程控制、面向对象、异常处理、常用类库、IO、集合框架、泛型、注解、反射等。 需要注意的是用户引用的资料中提到了IDEA的层级结构,这部分可能属于开发工具的使用,但如果是基础知识点,可能不需要深入,但可以简要提及项目结构。 此外,引用中提到的面试题可能也是用户关心的,比如关键字的例子、类型转换的问题,这些可以作为示例加入总结中,帮助理解。 需要检查是否有遗漏的部分,比如面向对象是Java的核心,必须详细说明四大特性:封装、继承、多态、抽象。还有String和Integer的特殊性,比如不可变性、自动装箱拆箱等。 异常处理部分包括try-catch-finally、异常分类(Checked和Unchecked),IO部分包括流的概念、字节流和字符流的区别,序列化的机制。 泛型部分需要解释类型参数化,注解和反射则是高级特性,但属于基础知识点的一部分。 另外,用户提供的引用中有提到跨平台原理,即JVM的作用,这点需要强调。 可能还需要补充一些引用中没有明确提到但基础中重要的内容,比如对象生命周期、垃圾回收、静态关键字static、final等。 最后,生成相关问题时要围绕用户可能进一步想了解的内容,比如面向对象的具体细节、JVM内存模型、集合框架、异常处理的最佳实践等。 在整理时要注意使用正确的中文术语,避免翻译错误,同时确保LaTeX格式的正确应用,比如类名使用$...$包裹,例如$String$、$Integer$等。 现在需要将这些思考整理成一个结构清晰、涵盖主要知识点、符合用户引用内容的总结,并生成相关问题。</think>### Java 基础知识点总结 #### 一、Java 简介 Java 是一种面向对象的编程语言,具有**跨平台**特性,通过 JVM(Java 虚拟机)实现“一次编写,到处运行”[^2]。其大平台包括: - **Java SE**(标准版):基础核心库。 - **Java EE**(企业版):企业级应用开发。 - **Java ME**(微型版):嵌入式设备开发。 #### 二、基础语法 1. **变量与数据类型** - **基本数据类型**:8 种,如$int$、$double$、$boolean$等。 - **引用数据类型**:如$String$、数组、类对象。 - **类型转换**:自动类型转换(小转大)与强制类型转换(大转小)。 - **常量**:用$final$修饰,例如$final\ int\ MAX = 100;$。 2. **运算符** - 算术运算符:$+,-,*,/,\%$。 - 逻辑运算符:$&&, ||, !$。 - 面试题示例: ```java int a = 3; int b = a++ + ++a; // 结果:3 + 5 = 8 [^2] ``` 3. **流程控制** - **分支结构**:$if-else$、$switch-case$。 - **循环结构**:$for$、$while$、$do-while$。 - 示例: ```java if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } ``` #### 、面向对象编程(OOP) 1. **四大特性** - **封装**:通过访问修饰符(如$private$、$public$)隐藏实现细节。 - **继承**:使用$extends$实现类层级关系。 - **多态**:通过方法重写(Override)和接口实现。 - **抽象**:抽象类($abstract\ class$)与接口($interface$)。 2. **常用类** - **$String$**:不可变性,操作效率低时建议用$StringBuilder$[^1]。 - **$Integer$**:自动装箱与拆箱机制。 - **$Object$**:所有类的基类,包含$equals()$、$hashCode()$等方法。 #### 四、异常处理 - **异常分类**: - **Checked 异常**:编译时检查(如$IOException$)。 - **Unchecked 异常**:运行时错误(如$NullPointerException$)。 - **处理方式**: ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 异常处理 } finally { // 资源释放 } ``` #### 五、IO 与序列化 1. **IO 流** - **字节流**:$InputStream$、$OutputStream$(处理二进制数据)。 - **字符流**:$Reader$、$Writer$(处理文本数据)。 2. **序列化**:实现$Serializable$接口,将对象转换为字节流。 #### 六、高级特性 1. **泛型**:类型参数化,例如$List<String> list = new ArrayList<>();$。 2. **注解**:通过$@Override$、$@Deprecated$等添加元数据。 3. **反射**:通过$Class$类动态获取类信息。 #### 七、开发环境 - **JDK 目录结构**:包含$bin$(工具)、$lib$(库)、$src.zip$(源码)等[^2]。 - **IDEA 层级结构**:项目(Project)→ 模块(Module)→ 包(Package)→ 类(Class)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值