IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 21-Java分支结构 -> 正文阅读

[Java知识库]21-Java分支结构

一、if分支

  • 根据判断的结果(真或假)决定执行某个分支的代码

二、分支的作用

  • 例1:比如你去医院检查,医生给你测心跳,这个心跳数据呢,会录入到医院的系统里,然后判断你的心跳有没有超过正常指标,如果超过,就视为不正常;没超过或者刚刚好,就是正常的。

  • 例2:比如发微信红包给别人的时候,微信会判断你的钱包额度够不够发这个额度的红包,如果够,就可以发出;如果不够,就不能发。

三、if分支有三种格式

  • if:如果的意思

    格式1if (条件表达式) {
        语句体;
    }
    
    格式2if (条件表达式) {
        语句体1;
    }else {
        语句体2;
    }
    
    格式3if (条件表达式1) {
        语句体1;
    }else if (条件表达式2) {
        语句体2;
    }else if (条件表达式3) {
        语句体3;
    }
    ......
    else {
        语句体n+1;
    }
    
    package com.app.branch;
    
    /**
        目标:学会使用if分支结构解决问题,理解其流程
     */
    public class IfDemo1 {
        public static void main(String[] args) {
            // 需求:心跳(60~100)之间是正常的,否则系统提示进一步检查
            System.out.println("-----------------if格式1-----------------");
            /*
                分析需求:
                1.定义一个病人名字,测试的心跳频率
                2.使用if分支结构的格式1来判断该病人心跳是否在 60~100 之间;
                   心跳异常返回:姓名 + 先生,您的心跳数据是:?,需进一步检查!
                3. 格式1:if (条件表达式) {代码块...}
             */
            // 1.定义一个病人名字,测试的心跳数据
            String patientName = "刘备";  // 病人
            // 异常心跳
            int heartRate = 30;     // 用于测试 if分支结构
            // 正常心跳
            int heartRate2 = 80;     // 用于测试 if分支结构
    
            System.out.println("测试病人心跳数据异常时:");
            System.out.println("开始检查...");
            //2.使用if分支结构的 格式1 来判断心跳数据是否小于60,或者大于100,如果是true,就为异常
            if (heartRate < 60 || heartRate > 100) {    // if判断心跳数据是否小于60,或者大于100
                // 判断结果为true,发现病人的心跳数据异常,需进一步检查
                System.out.println(patientName + "先生,您的心跳数据是:" + heartRate + ",还需进一步检查!");
            }
            // 检查结束!
            System.out.println("检查结束!");
    
            System.out.println("\n测试病人心跳数据正常时:");
            System.out.println("开始检查...");
            // if判断心跳数据是否小于60,或者大于100,如果是true,就为异常
            if (heartRate2 < 60 || heartRate2 > 100) {
                // 判断结果为false,发现病人的心跳数据正常,不符合判断条件,所以不执行if里的代码语句
                System.out.println(patientName + "先生,您的心跳数据是:" + heartRate2 + ",还需进一步检查!");
            }
            // 检查结束!
            System.out.println("检查结束!");
    
            
            
            
            System.out.println("\n-----------------if格式2-----------------");
            // 需求:给女朋友发一个1314的红包,钱包余额:1550.89
            /*
                分析需求:
                1.定义一个男方名字、钱包:余额为1550.89
                2.使用if分支结构的 格式2 来判断男方微信钱包余额是否大于等于1314;
                   如果大于等于1314,则返回:“红包已发送!”
                   如果小于1314,则返回:“钱包余额不足,红包未发送!”
                3. 格式2:if (条件表达式) {代码块1...} else {代码块2...}
             */
            // 1.定义一个男方名字、钱包:余额为1550.89
            String manName = "赵云";
            double money = 1550.89;  // 模拟钱包余额充足
            double money2 = 2.5;     // 模拟钱包余额不足
    
            System.out.println("测试钱包余额充足时:");
            // 2.使用if分支结构的格式2来判断男方微信钱包余额是否大于等于1314
            if (money >= 1314) {
                // 判断结果为true,发现用户的余额大于等于1314,则返回:“红包已发送!”,将不执行代码块2
                System.out.println(manName + "先生,您的红包已发送成功!");
            }else {
                // 判断结果为false,发现用户的余额小于1314,则返回:“钱包余额不足,红包未发送!”,将不执行代码块1
                System.out.println(manName + "先生,您的钱包余额已不足,红包未发送成功!");
            }
    
            System.out.println("\n测试钱包余额不足时:");
            // 2.使用if分支结构的格式2来判断男方微信钱包余额是否大于等于1314
            if (money2 >= 1314) {
                // 判断结果为true,发现用户的余额大于等于1314,则返回:“红包已发送!”,将不执行代码块2
                System.out.println(manName + "先生,您的红包已发送成功!");
            }else {
                // 判断结果为false,发现用户的余额小于1314,则返回:“钱包余额不足,红包未发送!”,将不执行代码块1
                System.out.println(manName + "先生,您的钱包余额已不足,红包未发送成功!");
            }
    
            
            
            
            System.out.println("\n-----------------if格式3-----------------");
            /*
                需求:绩效系统——>评级:C(0-60)、B(60-80)、A(80-90)、A+(90-100)
                需求分析:
                1、定义一个公司员工,员工的绩效分数
                2、使用if格式3来判断这个员工的几个月份的绩效分别属于什么级别
                   属于c,则返回:姓名 + “,你的绩效是C等级“
                   ....
                3、格式3:
                   if (条件表达式1) {
                        代码1...
                   }else if (条件表达式2) {
                        代码2...
                   } ...
                   else {
                        代码n+1...
                   }
             */
            // 1、定义一个公司员工,员工的绩效分数
            // 假如第一个月5分、第二个月91分、第三个月78分、第四个月89分
            System.out.println("测试员工第一个月的绩效等级:");
            String staff = "关羽";
            int score = 5;    // 第一个月绩效5分,级别C
            int score2 = 91;  // 第二个月绩效91分,级别A+
            int score3 = 78;  // 第三个月绩效78分,级别B
            int score4 = 89;  // 第四个月绩效89分,级别A
            int score5 = 102; // 模拟超出等级规定范围的分数
    
            // 2、使用if格式3来判断员工的第一个月的绩效属于什么级别
            if (score >= 0 && score < 60) {  // 判断员工第一个月的绩效 是否大于等于0 与 小于60,如果是true,属于C级别
                // 如果第一个月的绩效属于C级别,执行如下代码,则不执行其他代码块(判断结果为true)
                System.out.println(staff + ",你的第一个月绩效是:C");
                
            } else if (score >= 60 && score < 80) {  // 判断员工第一个月的绩效 是否大于等于60 与 小于80,如果是true,属于B级别
                // 如果第一个月的绩效属于B级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第一个月绩效是:B");
                
            } else if (score >= 80 && score < 90) {  // 判断员工第一个月的绩效 是否大于等于80 与 小于90,如果是true,属于A级别
                // 如果第一个月的绩效属于A级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第一个月绩效是:A");
                
            } else if (score >= 90 && score <= 100) {  // 判断员工第一个月的绩效 是否大于等于90 与 小于100,如果是true,属于A+级别
                // 如果第一个月的绩效属于A+级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第一个月绩效是:A+");
                
            } else {
                // 如果本月的绩效分数超出了等级规定的范围,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println("这个月录入的分数有问题!请详察!");
            }
    
            System.out.println("\n测试员工第二个月的绩效等级:");
            // 2、使用if格式3来判断员工的第二个月的绩效属于什么级别
            if (score2 >= 0 && score2 < 60) {
                // 如果第二个月的绩效属于C级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第二个月绩效是:C");
                
            } else if (score2 >= 60 && score2 < 80) {
                // 如果第二个月的绩效属于B级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第二个月绩效是:B");
                
            } else if (score2 >= 80 && score2 < 90) {
                // 如果第二个月的绩效属于A级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第二个月绩效是:A");
                
            } else if (score2 >= 90 && score2 <= 100) {
                // 如果第二个月的绩效属于A+级别,执行如下代码,则不执行其他代码块(判断结果为true)
                System.out.println(staff + ",你的第二个月绩效是:A+");
                
            } else {
                // 如果本月的绩效分数超出了等级规定的范围,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println("这个月录入的分数有问题!请详察!");
            }
    
            System.out.println("\n测试员工第三个月的绩效等级:");
            // 2、使用if格式3来判断员工的第三个月的绩效属于什么级别
            if (score3 >= 0 && score3 < 60) {
                // 如果第三个月的绩效属于C级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第三个月绩效是:C");
                
            } else if (score3 >= 60 && score3 < 80) {
                // 如果第三个月的绩效属于B级别,执行如下代码,则不执行其他代码块(判断结果为true)
                System.out.println(staff + ",你的第三个月绩效是:B");
                
            } else if (score3 >= 80 && score3 < 90) {
                // 如果第三个月的绩效属于A级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第三个月绩效是:A");
                
            } else if (score3 >= 90 && score3 <= 100) {
                // 如果第三个月的绩效属于A+级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第三个月绩效是:A+");
                
            } else {
                // 如果本月的绩效分数超出了等级规定的范围,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println("这个月录入的分数有问题!请详察!");
            }
    
            System.out.println("\n测试员工第四个月的绩效等级:");
            // 2、使用if格式3来判断员工的第四个月的绩效属于什么级别
            if (score4 >= 0 && score4 < 60) {
                // 如果第四个月的绩效属于C级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第四个月绩效是:C");
                
            } else if (score4 >= 60 && score4 < 80) {
                // 如果第四个月的绩效属于B级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第四个月绩效是:B");
                
            } else if (score4 >= 80 && score4 < 90) {
                // 如果第四个月的绩效属于A级别,执行如下代码,则不执行其他代码块(判断结果为true)
                System.out.println(staff + ",你的第四个月绩效是:A");
                
            } else if (score4 >= 90 && score4 <= 100) {
                // 如果第四个月的绩效属于A+级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你的第四个月绩效是:A+");
                
            } else {
                // 如果本月的绩效分数超出了等级规定的范围,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println("这个月录入的分数有问题!请详察!");
            }
    
            System.out.println("\n测试员工错误分数的绩效等级:");
            // 2、使用if格式3来判断员工的错误分数的绩效属于什么级别
            if (score5 >= 0 && score5 < 60) {
                // 如果本月绩效属于C级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你本月绩效是:C");
                
            } else if (score5 >= 60 && score5 < 80) {
                // 如果本月绩效属于B级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你本月绩效是:B");
                
            } else if (score5 >= 80 && score5 < 90) {
                // 如果本月绩效属于A级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你本月绩效是:A");
                
            } else if (score5 >= 90 && score5 <= 100) {
                // 如果本月绩效属于A+级别,执行如下代码,则不执行其他代码块(判断结果为false)
                System.out.println(staff + ",你本月绩效是:A+");
                
            } else {
                // 如果本月的绩效分数超出了等级规定的范围,执行如下代码,则不执行其他代码块(判断结果为true)
                System.out.println("这个月录入的分数有问题!请详察!");
            }
        }
    }
    

    以上代码是为了方便初学者理解,才写那么多重复代码,不建议你们也写重复代码。如果你们是自己写,只需要定义一个分数变量,然后通过修改这个变量的值分别对if的各分支进行测试

    输出结果:
    -----------------if格式1-----------------
    测试病人心跳数据异常时:
    开始检查...
    刘备先生,您的心跳数据是:30,还需进一步检查!
    检查结束!
    
    测试病人心跳数据正常时:
    开始检查...
    检查结束!
    
    -----------------if格式2-----------------
    测试钱包余额充足时:
    赵云先生,您的红包已发送成功!
    
    测试钱包余额不足时:
    赵云先生,您的钱包余额已不足,红包未发送成功!
    
    -----------------if格式3-----------------
    测试员工第一个月的绩效等级:
    关羽,你的第一个月绩效是:C
    
    测试员工第二个月的绩效等级:
    关羽,你的第二个月绩效是:A+
    
    测试员工第三个月的绩效等级:
    关羽,你的第三个月绩效是:B
    
    测试员工第四个月的绩效等级:
    关羽,你的第四个月绩效是:A
    
    测试员工错误分数的绩效等级:
    这个月录入的分数有问题!请详察!
    
    

If分支总结

1、If分支的写法有几种,各有什么特点?

  • 三种

    格式1if (条件表达式) {
        语句体;
    }
    
    
    格式2if (条件表达式) {
        语句体1;
    }else {
        语句体2;	// 当第一个条件不符合才会执行这一句
    }
    
    
    格式3if (条件表达式1) {
        语句体1;
    }else if (条件表达式2) {
        语句体2;
    }else if (条件表达式3) {
        语句体3;
    }
    ......
    else {
        语句体n+1;		// 当以上所有判断都不符合才会执行这一句
    }
    
  • 特点

    • 第一种格式:适合一个判断条件使用:条件表达式判断为true时,则执行语句体
    • 第二种格式:适合一个判断条件,如果…否则使用:条件表达式判断为true时,则执行里面的语句体1;否则为false,执行语句体2;
    • 第三种格式:适合多个判断条件使用:条件表达式1判断为true时,则执行语句体1;条件表达式1判断为false,则进行条件表达式2的判断,为true,则执行语句体2;… 如果条件表达式1和2和 … 的判断都为true,则执行最后一个 else 里的语句体

四、switch分支

  • 也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好

    switch(表达式) {
        case1:
            执行代码...;
           	break;	// 跳出switch分支
        case2:
            执行代码...;
            break;
        ...
        case 值n-1:
            执行代码n-1...;
            break;
        default:
            执行代码n;
    }
    
  • 执行流程

    • 先执行表达式的值,拿着这个值与case后的值进行匹配。
    • 匹配哪个case的值为true,就执行哪个case,遇到break就跳出switch分支。
    • 如果case后的值都不匹配则执行default代码。
  • switch案例

    • 周一:埋头苦干,解决bug
    • 周二:请求大牛程序员帮忙
    • 周三:今晚喝酒、龙虾、小烧烤
    • 周四:主动帮助新来的女程序员解决bug
    • 周五:今晚吃鸡、王者
    • 周六:与王婆介绍的小芳相亲
    • 周日:郁郁寡欢、准备上班
    package com.app.branch;
    
    public class SwitchDemo2 {
        public static void main(String[] args) {
            // 目标:学会使用switch分支结构,理解其流程
            /*
                一、需求:备忘录(一周的行程)
                    周一:埋头苦干,解决bug
                    周二:请求大牛程序员帮忙
                    周三:今晚喝酒、龙虾、小烧烤
                    周四:主动帮助新来的女程序员解决bug
                    周五:今晚吃鸡、王者
                    周六:与王婆介绍的小芳相亲
                    周日:郁郁寡欢、准备上班
                二、分析需求
                   1.定义变量,分别存放周一、周二、周三、周四、周五、周六、周日
                   2.使用switch分支结构,设置case值,用变量值 与 case值 进行匹配,提示当天该干什么
             */
            // 1.定义变量,用于存放工作日
            String weekday = "周一";  // 想测试哪天,就把值换成哪天来测试
    //        String weekday = "周六";
    //        String weekday = "周九";    // 用于测试错误数据
    
            // 2.使用switch分支结构,设置case值,用变量值 与 case值 进行匹配,输出当天该干什么
            switch (weekday) {
                case "周一":
                    // 值匹配成功,提示今日要做的事
                    System.out.println("埋头苦干,解决bug");
                    // 跳出switch
                    break;
                case "周二":
                    System.out.println("请求大牛程序员帮忙");
                    break;
                case "周三":
                    System.out.println("今晚喝酒、龙虾、小烧烤");
                    break;
                case "周四":
                    System.out.println("主动帮助新来的女程序员解决bug");
                    break;
                case "周五":
                    System.out.println("今晚吃鸡、王者");
                    break;
                case "周六":
                    System.out.println("与王婆介绍的小芳相亲");
                    break;
                case "周日":
                    System.out.println("郁郁寡欢、准备上班");
                    break;
                default:	// 当switch(表达式)——>表达式的值匹配不上所有case后的值时,执行以下代码
                    System.out.println("数据错误!");
            }
        }
    }
    
    输出结果:
    埋头苦干,解决bug
    
    

Switch分支总结

1、switch分支的格式、执行流程是怎么样的?

  • switch(表达式) {
        case1:
            执行代码...;
           	break;	// 跳出switch分支
        case2:
            执行代码...;
            break;
        ...
        case 值n-1:
            执行代码n-1...;
            break;
        default:
            执行代码n;
    }
    
  • 执行流程

    • 先执行表达式的值,拿着这个值与case后的值进行匹配。
    • 匹配哪个case的值为true,就执行哪个case,遇到break就跳出switch分支。
    • 如果case后的值都不匹配则执行default代码。

2、if、switch分支各自适合做什么业务场景?

  • if其实在功能上远远强大于switch
  • if适合做区间匹配
  • switch适合做:值匹配的分支选择、代码优雅

五、switch使用的注意事项

  • (1)表达式类型只能是byte、short、int、char,JDK5开始支持枚举(还没学可以先了解),JDK7开始支持String,不支持double、float、long

  • 都没有报错,说明支持
    在这里插入图片描述

  • 可以看到,都报错了,说明不支持

  • 在这里插入图片描述

  • (2)case给出的值不允许重复,且只能是字面量,不能是变量

    • 发现case值重复后,报错了!
      在这里插入图片描述

    • 看到报错了,因为变量具有不确定性,所以不支持
      在这里插入图片描述

  • (3)不要忘记写break,否则会出现穿透现象
    在这里插入图片描述
    在这里插入图片描述

? 可以看出,将周二、三、四、五的break注释之后。当表达式的值”周二“ 与 case 值”周二“ 匹配成功后,由于没有break,无法跳出switch分支,才会导致,穿到周三,由于周三也没有break;又穿到周四,周四也没有break;又穿到周五,周五也没有break;又穿到了周六,结果发现在周六这里遇到了break,就跳出switch分支了。结果将周二、三、四、五、六的事件都输出了个遍。

? 所以,每设置完一个case后,必须搭配一个break,不然会出现switch穿透性的问题!!!

六、switch穿透性

  • 如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出switch分支,这就是switch的穿透性

switch穿透性案例(月份天数查看器)

  • 需求:用户输入月份可以展示该月份的天数

    • 1、3、5、7、8、10、12月份都是31天
    • 2月份是闰年为29天、非闰年为28天
    • 4、6、9、11月是30天
    package com.app.branch;
    
    // 1.导入Scanner包
    import java.util.Scanner;
    
    public class SwitchTest04 {
        public static void main(String[] args) {
            // 目标:通过案例学会使用switch的穿透性,并理解其流程
            /*
              需求:用户输入月份可以展示该月份的天数
                   (1) 1、3、5、7、8、10、12月份都是31天
                   (2) 2月份是闰年为29天、非闰年为28天
                   (3) 4、6、9、11月是30天
              分析需求 :
                   1.导入Scanner包
                   2.创建Scanner扫描器对象
                   3.定义变量,用于接收用户输入的月份
                   4.使用switch分支将 用户输入的月份 与 case值 进行匹配
                   5.利用switch的穿透性设置case值为1、3、5、7、8、10都不设置break跳出,直到12才设置break跳出分支,执行输出:用户输入的月份 + ”月是31天“
                   6.case值为2时,设置break跳出分支,执行输出:用户输入的月份 + ”月是闰年为29天、非闰年为28天“
                   7.case值为4、6、9都不设置break跳出,直到11才设置break跳出分支,执行输出:用户输入的月份 + ”月是30天“
             */
             // 2.创建Scanner扫描器对象
                Scanner sc = new Scanner(System.in);
                System.out.println("请您输入月份(1~12):");
             // 3.定义变量,用于接收用户输入的月份
                int month = sc.nextInt();
             // 4.使用switch分支将 用户输入的月份 与 case值 进行匹配
                switch (month) {
                    // 5
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        System.out.println(month + "月是31天");
                        break;
                    // 6
                    case 2:
                        System.out.println(month + "月是闰年为29天、非闰年为28天");
                        break;
                    // 7
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        System.out.println(month + "月是30天");
                        break;
                    default:
                        System.out.println("数据错误!");
                }
        }
    }
    
    输出结果1:
    请您输入月份(1~12):
    1
    1月是31天
    
    
    输出结果2:
    请您输入月份(1~12):
    3
    3月是31天
    
    
    输出结果3:
    请您输入月份(1~12):
    5
    5月是31天
    
    
    输出结果4:
    请您输入月份(1~12):
    7
    7月是31天
    
    
    输出结果5:
    请您输入月份(1~12):
    8
    8月是31天
    
    
    输出结果6:
    请您输入月份(1~12):
    10
    10月是31天
    
    
    输出结果7:
    请您输入月份(1~12):
    12
    12月是31天
    
    
    输出结果8:
    请您输入月份(1~12):
    2
    2月是闰年为29天、非闰年为28天
    
    
    输出结果9:
    请您输入月份(1~12):
    4
    4月是30天
    
    
    输出结果10:
    请您输入月份(1~12):
    6
    6月是30天
    
    
    输出结果11:
    请您输入月份(1~12):
    9
    9月是30天
    
    
    输出结果12:
    请您输入月份(1~12):
    11
    11月是30天
    
    

switch穿透性总结

1、什么情况下会出现switch穿透现象?

  • case中没有写break

2、switch穿透性能解决什么问题?

  • 存在多个case分支的功能代码是一样时,可以利用穿透性把流程集中到同一处地方处理,这样可以简化代码
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-16 21:31:54  更:2022-06-16 21:33:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 18:53:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码