Java学习day02:输入输出、三目运算符、循环结构

本文是博主重新整理的Java学习笔记,涵盖数据类型、运算符、分支结构、循环结构,包括Scanner的使用,以及示例习题和解答,适合Java初学者巩固复习。

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)


往期回顾

Java学习day01:数据类型、运算符、分支结构-优快云博客

Java学习:输入输出、三目运算符、循环结构

一、输入输出

1.控制台获取数据:Scanner

1、导包:import.java.util.Scanner

2、创建scanner对象:Scanner sc =new Scanner(System.in)

3、获取控制台的数据并赋值给变量

各种类型的变量:
1.int——nextInt()
2.double——nextDouble()
3.float——nextFloat()
4.string——String.next()/String.nextLine()
5.char——String.nextLine().charAt(0)//字符是在字符串的基础根据索引获取的

2.控制台输出数据:System.out.println();


二、三目运算符

语法格式:数据类型  变量名=(表达式)?values1:values2;

如果表达式的值为true,把values1的值赋值给变量,否则把values2的值赋值给变量

如果出现三目运算符多个冒号连用,直接按顺序看就是。

比如:

          int a=5;
          int b=a>10?12:a<2?10:11;
          System.out.println(b);

最后的结果是11,相当于把(a<2?10:11)看成一个整体


三、循环结构

1.原因:

大量相同代码会导致代码臃肿、阅读性差、可维护性差

2.条件:

1初始化条件、2初始化条件、3终止条件

3.分类:

3.1while循环

while(){
语句体
}

先判断while括号里的表达式,如果为真则执行语句体,执行完后再次判断,为真则继续执行,为假则退出不再执行 

3.2do-while(几乎不用)

do{
   语句体
}while(布尔表达式)

 先执行一次do的语句体再判断表达式的真假,为真继续执行,为假推出,意味着不管真假,do的语句体至少执行一次

3.3for循环

for(初始化条件;终止条件;循环条件){
表达式;
}

 先执行初始化条件,再执行终止条件判断是否为true,最后再执行循环条件

一些小案例:比如打印100内的偶数、打印100内7的倍数和带7的数、打印1-100的和等,都比较简单,就不再赘述

3.4循环嵌套

循环里面套循环,两个循环重要在于搞清楚运行过程,第一个循环进去了,是需要把第二个循环跑完一遍再走第一个循环的第二次。实在无法理解的拿笔写一写,模拟运行过程。


以上就是今天的知识点,下面做题:

四、习题

1.题目

分支题()
1、定义一个int类型的变量为x并赋值为5,如果x<10,则让x实现自增,并输出x最后的值。
2、随意输入一个数字a,若a>20,输出a的值。
3、编程输入整数a和b,若a或b大于100,则输出a,b的和与100的差,否则输出两数之和。
4、从键盘输入三角形的三边长,判断出这三边能否构成三角形
5、随便输入一个数,判断该数为奇数还是偶数;
6、写程序输出一个圆的面积;
7、根据输入的月份,判断该月份有多少天
8、输入员工登记A、B、C级,判断其是否加薪,加薪对应500、300、100(switch语句)
9、随意输入一个数字1-7,判断是周几,输入其他数字提示输入错误。(switch语句写)
10、输入三个int型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中的值从小到大排列。
11、输入一个年份,判是闰年还是平年

循环体
1.
   *   第一行  3个空格  1个*
  ***  第二行  2个空格  3个*
 ***** 第三行  1个空格 5个*
******* 第四行 0个空格 7个*

2.
*******
*****
***
*
3.
     *
    **
   ***
  ****
 *****

 建议初学者都敲一敲,而且是不看我的答案,先自己敲,很多东西看着会,实际自己上手敲的时候往往会出错。另外题解肯定不止一个,我也只是记录其中一种,大家大可寻找更优解,同时我基本没写注释,希望大家还是多自己思考原因。

2.部分习题参考答案

        //1、定义一个int类型的变量为x并赋值为5,如果x<10,则让x实现自增,并输出x最后的值。
        int x=5;
        while (x<10){
            x++;
        }
        System.out.println(x);


        //2、随意输入一个数字a,若a>20,输出a的值。
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        if(a>20){
            System.out.println(a);
        }


        //3、编程输入整数a和b,若a或b大于100,则输出a,b的和与100的差,否则输出两数之和。
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        if(a>100||b>100){
            int c= a+b-100;
            System.out.println(c);
        }else {
            System.out.println(a+b);
        }


        //4、从键盘输入三角形的三边长,判断出这三边能否构成三角形
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int c=sc.nextInt();
        if(a+b>c&&a+c>b&&b+c>a){ //三角形任意两边之和大于第三边
            System.out.println("能构成三角形");
        }else {
            System.out.println("不能构成三角形");
        }


        //5、随便输入一个数,判断该数为奇数还是偶数;
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        if(a%2==0){
            System.out.println("偶数");
        }else {
            System.out.println("奇数");
        }


        //6、写程序输出一个圆的面积;
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入圆的半径:");
        int r=sc.nextInt();//
        System.out.println("圆的面积是:"+3.14*r*r);



       //7、根据输入的月份,判断该月份有多少天,二月统一为28天
        Scanner sc=new Scanner(System.in);
        int month=sc.nextInt();        
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
            System.out.println("31");
        }else if (month==4||month==6||month==9||month==11){
            System.out.println("30");
        }else if (month==2){
            System.out.println("28");
        }else {
            System.out.println("不存在该月份");
        }


        //8、输入员工登记A、B、C级,判断其是否加薪,加薪对应500、300、100(switch语句)
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入员工等级:");
        char m=sc.next().charAt(0);
        switch (m){
            case 'A':
                System.out.println("加薪500");
                break;
            case 'B':
                System.out.println("加薪300");
                break;
            case 'C':
                System.out.println("加薪100");
                break;
            default:
                System.out.println("不加薪");
        }


       //9、随意输入一个数字1-7,判断是周几,输入其他数字提示输入错误。(switch语句写)
        Scanner sc=new Scanner(System.in);
        int day=sc.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;
            case 6:
                System.out.println("周六");
                break;
            case 7:
                System.out.println("周天");
                break;
            default:
                System.out.println("输入错误!");
        }


        //10、输入三个int型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中 
        //的值从小到大排列。
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int c=sc.nextInt();
        if(a<b&&a<c){
            if(b<c){
                System.out.println(a+"<"+b+"<"+c);
            }else {
                System.out.println(a+"<"+c+"<"+b);
            }
        }else if (a<b&&a>c){
            System.out.println(c+"<"+a+"<"+b);
        }else if(a<c&&a>b){
            System.out.println(b+"<"+a+"<"+c);
        }else if(a>b&&a>c){
            if(b<c){
                System.out.println(b+"<"+c+"<"+a);
            }else {
                System.out.println(c+"<"+b+"<"+a);
            }
        }


        //11、输入一个年份,判是闰年还是平年
        //闰年是能被4整除并且不能被100整除的数,或者能被400整除的数
        Scanner sc=new Scanner(System.in);
        int year =sc.nextInt();
        if((year%4==0 && year%100!=0) || year%400==0 ){
            System.out.println(year+"是闰年");
        }else {
            System.out.println(year+"不是闰年");
        }


         //1.
         //   *   第一行  3个空格  1个*
         //  ***  第二行  2个空格  3个*
         // ***** 第三行  1个空格 5个*
         //******* 第四行 0个空格 7个*
        //找规律,i控制的行数,j控制的列数
        //空格和*分别用for循环控制,不要想着一个for循环搞定
        for (int i = 1; i < 5; i++) {
            for (int k = 0; k < 4-i; k++) {
                System.out.print(" ");
            }
            for (int j = 0; j <(i*2-1); j++) {
                System.out.print("*");
            }
            System.out.println();
        }


        //2.
        //*******
        //*****
        //***
        //*
        for (int i = 4; i >0 ; i--) {
            for (int j = 0; j < 2*i-1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }


        //3.
        //     *
        //    **
        //   ***
        //  ****
        // *****

            for (int i = 1; i <6; i++) {
                for (int k = 0; k < 6-i; k++) {
                    System.out.print(" ");
                }
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

 以上,就是今天的所有知识点了。才刚刚开始,路还很长。

加油吧,预祝大家变得更强!

<think>好的,用户让我讲解Java的五个基础知识点:关键字、数据类型、基本运算符、流程控制和数组。首先,我需要确定用户的学习阶段。可能是刚开始学习Java的新手,或者是需要复习基础的人。他们可能对这些概念有初步了解,但想系统性地梳理一遍,或者准备面试、考试。 接下来,我需要考虑如何组织内容,既全面又不冗长。用户提到的每个点都需要分点讲解,结构清晰。比如关键字部分,列出常见的关键字,并解释其功能,但要避免过于深入,保持基础水平。数据类型部分,区分基本类型和引用类型,给出类型分类、内存占用和示例,这样用户能一目了然。 运算符部分,要涵盖各种类型,包括算术、比较、逻辑等,特别是要注意优先级,这对新手来说容易出错。流程控制需要分条件、循环和跳转,每个部分给出语法示例,帮助理解。数组部分要包括声明、初始化、遍历以及多维数组,可能还需要提到常见问题,比如越界异常。 同时,用户可能希望这些知识点之间有联系,比如数据类型如何影响运算符的使用,流程控制如何与数组结合进行循环操作。需要注意在讲解时适当连接这些点,帮助构建完整的知识体系。 另外,用户可能对实际应用场景感兴趣,比如在什么情况下使用特定的数据类型或流程控制结构。比如,在数组部分提到Arrays工具类,这可以引导用户了解更多的实用类库,提升他们的实际操作能力。 还要检查是否有常见的误区需要提醒,比如==和equals的区别,逻辑运算符的短路特性,数组的动态初始化与静态初始化的区别等。这些细节能帮助用户避免常见错误,加深理解。 最后,确保语言简洁明了,避免使用过于专业的术语,用通俗易懂的例子和类比,让用户更容易消化这些基础知识。可能需要用代码示例来辅助说明,但代码不宜过多,重点放在解释上。比如在讲解for-each循环时,对比传统for循环,说明其优点和使用场景。 总结下来,我需要将每个知识点分门别类,结构清晰,内容全面但不过于深入,结合实际例子和常见问题,帮助用户巩固Java基础,同时为后续学习打下坚实的基础。</think>以下是Java基础知识的系统讲解,采用分层结构方便理解: --- ### 一、Java关键字及功能(共51个) #### 核心关键字分类: ```java // 数据类型相关 boolean, byte, char, short, int, long, float, double, void // 流程控制 if, else, switch, case, default, while, do, for, break, continue, return // 访问控制 public, protected, private // 类与对象 class, interface, enum, extends, implements, new, this, super, instanceof // 异常处理 try, catch, finally, throw, throws // 修饰符 static, final, abstract, transient, volatile, synchronized, native // 其他重要关键字 package, import, assert, const*, goto*(带*为保留未用) ``` #### 特殊关键字说明: - `strictfp`:保证浮点运算平台一致性 - `assert`:用于断言检查(需启用`-ea`参数) - `enum`:枚举类型声明(JDK5+) --- ### 二、Java数据类型(内存模型+值范围) #### 1. 基本数据类型(8种) | 类型 | 位数 | 默认值 | 取值范围 | 示例 | |----------|------|--------|-----------------------------------|--------------------| | byte | 8 | 0 | -128 ~ 127 | byte b = 100; | | short | 16 | 0 | -32768 ~ 32767 | short s = 30000; | | int | 32 | 0 | -2^31 ~ 2^31-1 | int i = 2147483647;| | long | 64 | 0L | -2^63 ~ 2^63-1 | long l = 100L; | | float | 32 | 0.0f | ±3.4E38(6-7位有效数字) | float f = 3.14F; | | double | 64 | 0.0d | ±1.7E308(15位有效数字) | double d = 3.14; | | char | 16 | '\u0000' | 0 ~ 65535 | char c = 'A'; | | boolean | - | false | true/false | boolean flag = true;| #### 2. 引用数据类型 - 类(如String) - 接口 - 数组 - 枚举 --- ### 三、Java基本运算符(9类运算符) #### 优先级表(从高到低) | 运算符 | 结合性 | |---------------------------|----------| | () [] . | 左→右 | | ! ~ ++ -- +(正) -(负) | 右→左 | | * / % | 左→右 | | + - | 左→右 | | << >> >>> | 左→右 | | < <= > >= instanceof | 左→右 | | == != | 左→右 | | & | 左→右 | | ^ | 左→右 | | | | 左→右 | | && | 左→右 | | || | 左→右 | | ?: | 右→左 | | = += -= *= /= %= &= |= ^= | 右→左 | #### 特殊运算符示例: ```java // 三目运算符 int max = (a > b) ? a : b; // 位运算 int flags = 0b1010; // 二进制表示 int shifted = flags << 2; // 结果为0b101000 // 类型比较 System.out.println("hello" instanceof String); // true ``` --- ### 四、程序流程控制 #### 1. 条件结构 ```java // if-else if阶梯 if(score >= 90) { System.out.println("A"); } else if(score >= 80) { System.out.println("B"); } else { System.out.println("C"); } // switch增强(JDK12+) String result = switch(day) { case 1,2,3,4,5 -> "Weekday"; case 6,7 -> "Weekend"; default -> throw new IllegalArgumentException(); }; ``` #### 2. 循环结构 ```java // 传统for循环 for(int i=0; i<10; i++) { System.out.println(i); } // 增强for循环 int[] nums = {1,2,3}; for(int num : nums) { System.out.println(num); } // while与do-while对比 while(condition) { /* 先判断 */ } do { /* 至少执行一次 */ } while(condition); ``` #### 3. 跳转控制 ```java break label; // 跳出指定标签的循环 continue; // 跳过本次循环 return; // 方法返回 ``` --- ### 五、Java数组(引用类型) #### 1. 数组声明与初始化 ```java // 静态初始化 int[] arr1 = {1,2,3}; // 动态初始化 int[] arr2 = new int[3]; arr2[0] = 10; // 匿名数组 new int[]{4,5,6}; ``` #### 2. 多维数组 ```java // 二维数组 int[][] matrix = { {1,2,3}, {4,5,6} }; // 不规则数组 int[][] triangle = new int[3][]; triangle[0] = new int[1]; triangle[1] = new int[2]; ``` #### 3. 数组工具类 ```java // Arrays类常用方法 Arrays.sort(arr); // 排序 Arrays.binarySearch(arr, key); // 二分查找 Arrays.copyOf(arr, newLength); // 复制数组 Arrays.fill(arr, value); // 填充值 ``` #### 4. 注意事项 - 数组长度固定(使用`length`属性获取) - 索引从0开始 - 访问越界会抛出`ArrayIndexOutOfBoundsException` - 可存储基本类型和对象类型 --- ### 知识图谱关系 ``` 数据类型 → 决定运算符选择 → 影响流程控制 → 最终组合成数组操作 ``` 建议通过以下代码综合练习: ```java public class BasicDemo { public static void main(String[] args) { // 数组与循环结合 int[] numbers = {3,1,4,1,5,9}; int sum = 0; for(int num : numbers) { sum += num; } System.out.println("平均值为:" + (sum / numbers.length)); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值