• JAVA入门第一季学习补充


    JAVA入门第一季学习补充

    要有良好的编程习惯!!!

    0、关于java:跨平台是指跨越操作系统。java源代码 .java--编译-->字节码文件 .class---运行。java是开源的。JDK包含JRE,JRE包含JVM,对于开发人员,需要安装JDK。对于普通用户只需要安装JRE(java运行环境)。

    1、java关键字区分大小写。void是,但是Void不是。

    2、java标识符适用于给Java中变量、类、方法命名的符号,严格区分大小写。

    3、java中标点符号是英文的。

    4、java变量名没有长度限制。

    5、Java中基本数据类型变量保存数据本身,引用数据类型保存数据的空间地址。

    6、Java中的变量需要先声明后使用。可以在声明变量的同时进行初始化,也可以先声明后复制,每次只能为一个变量赋一次值,但是可以修改多次。main方法中定义的变量必须先赋值,才可以输出。变量名不建议使用中文。

    7、通过强制类型转换将 75.8 赋值给 int 型变量后,结果为 75,数值上并未进行四舍五入,而是直接将小数位截断。强制类型转换可能会造成数据的丢失哦

    8、常量的值设定之后在程序运行的过程中不允许被改变,使用常量可提高代码的可维护性。常量名称全拼大写。

    final double PI=3.15;

    9、char定义字符,使用单引号,String 是字符串,使用双引号。

    public static void main(String[] args) {` `final char GIRL='女';` `final char BOY='男';` `System.out.println(GIRL);` `System.out.println(BOY);}

    10、int b=++a;a先自增再赋值给b;

    11、< 、>、 <=、 >=只支持左右两边操作数是数值类型;==、!=、两边的操作数既可以是数值类型,也可以是引用类型。

    12、异或 a^b;

    13、三元运算符: 布尔表达式 ?表达式1 :表达式2( ? : 要使用英文状态)

    14、优先级:

    img

    15、判断一个int型数值是否介于另外两个数值之间:

    我的代码:else if(40>age>18)

    正确代码:else if((age<40)&&(age>18))

    错误原因:if中需要一个Boolean的表达式,而我的代码中第一个是‘40’为int类型。

    16、当需要对选项进行等值判断时,使用switch语句会更加简洁明了。

    执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

    不得不说的几点小秘密:

    16.1、 switch 后面小括号中表达式的值必须是整型或字符型

    16.2、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2

    16.3、 case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束。

    16.4、 可以把功能相同的 case 语句合并起来,如:

    case 1:

    case 2:

    ​ …

    16.5、 default 块可以出现在任意位置,也可以省略

    17、关于for循环

    for循环中循环变量初始化、循环次数、循环变量变化都可以省略,但是“;”不可以省略。其中,变量的初始化可以再循环体之前定义好,循环次数省略的话,会出现死循环,但是可以使用break跳出循环,循环变量的变化可以在循环体内进行定义。

    for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:

    for(int i=8,j=9;i<=8,j<=10;i++,j--)

    循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级

    18、do...while 循环结束的条件是 while 后的条件不成立。

    19、给定一个小于10位的数,判断它是几位数。例如:输入999,则输出 “它是个3位的数!”

    我的错误代码:

    int num = 999;
    int count = 0;
    while(num/10!=0){
        count++;
        num/=10;
    }
    System.out.println("它是个"+count+"位的数");
    

    逻辑错误,改变了两次num的值。

    正确代码:

    int num = 999;
    int count = 0;
    while(num!=0){
        count++;
        num/=10;
    }
    System.out.println("它是个"+count+"位的数");
    

    除法和取余一定要区分清楚作用。int除法用来除去位数,取余取每一位上的数字。

    20、练习:实现接受三个班级的阁寺名学生的成绩,并求出平均分数。

    我的错误代码:

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            double a1=scanner.nextDouble();
            double a2=scanner.nextDouble();
            double a3=scanner.nextDouble();
            double a4=scanner.nextDouble();
            System.out.println((a1+a2+a3+a4)/4);
        }
    }
    

    存在的错误:没有考虑到需要控制班级数量。我的代码是需要手动停止输入。

    第一次改正的代码:(使用了二重嵌套循环)

    int sum=0;
    for(int i=0;i<3;i++){
        for(int j=0;j<4;j++){
            int s=new Scanner(System.in).nextInt();
            sum+=s;
        }
        System.out.println(sum/4);
    }
    

    存在的错误:在计算后面的班级成绩总和时候,sum并没有归零。

    正确的代码:

     int sum=0;
        for(int i=0;i<3;i++){
            sum=0;
            for(int j=0;j<4;j++){
    
                int s=new Scanner(System.in).nextInt();
                sum+=s;
            }
            System.out.println(sum/4);
        }
    }
    

    21、使用Java中的数组:

    第一步:声明数组 数据类型[] 数组名;

    第二步:分配空间 数组名 =new 数据类型[数组长度];

    ​ 也可以直接创建数组:int[] score={12,2,2,11};

    ​ 等价于: int[] score=new int[]{12,2,2,11}; 第二个[]中必须为空,不可以指定长度。

    第三步:赋值 数组名[下标]=值;

    第四步:处理数组中数据。

    22、数组中找到并保存最大值,用数组中的某一个位置的元素,比如先假定第一个元素为最大值,max=nums[1]

    23、编程练习:

    任务

    一、 存储35周学习内容(已提供部分完成的功能)

    提示:
     1、 创建String数组,并为每一个元素赋值,内容为【第X周】XXX
     2、 利用int型的变量接收输入的数字
    

    二、 计算今天处于第几周

    提示:
     1、根据输入的数字,计算今天是第几个月
    (例如:4对应第一月第四周,5代表第二月第一周)
     2、换算一下,输入的周是这个月的第几周
                                                             
    

    三、 遍历并输出本月的学习内容,并标记本周内容

    提示:
     1、利用for循环,找到数组中对应这个月的内容输出
     2、根据当前月第几周,在输出此行时,前面添加“√”
                                             
    

    我的第一个错误代码:

    package javademo;
    
    import java.util.Scanner;
    
    public class Arrays05 {
            public static void main(String[] args) {
                //创建String数组,并为每一个元素赋值。赋值内容为第几周+学习内容
                String[] contentList = new String[35];
                contentList[0] = "【第1周】环境搭建与语法入门";
                contentList[1] = "【第2周】Java语法之循环、数组与方法";
                contentList[2] = "【第3周】面向对象之封装与继承";
                contentList[3] = "【第4周】面向对象之单例模式与多态";
    
                contentList[4] = "【第5周】常用工具类(上)";
                contentList[5] = "【第6周】常用工具类(下)";
                contentList[6] = "【第7周】常用工具类(下)";
                contentList[7] = "【第8周】前端基础之HTML与CSS";
    
                contentList[8] = "【第9周】前端基础之JavaScript与综合案例";
                contentList[9] = "【第10周】Java Web基础";
                contentList[10] = "【第11周】Java Web基础";
                contentList[11] = "【第12周】常用功能与过滤器";
    
                contentList[12] = "【第13周】监听器与项目实战";
                contentList[13] = "【第14周】监听器与项目实战";
                contentList[14] = "【第15周】MySQL基础";
                contentList[15] = "【第16周】MySQL基础";
    
                contentList[16] = "【第17周】Java数据库开发基础";
                contentList[17] = "【第18周】框架前置知识";
                contentList[18] = "【第19周】MyBatis基础";
                contentList[19] = "【第20周】MyBatis实现OA系统项目实战";
    
                contentList[20] = "【第21周】MyBatis实现OA系统项目实战";
                contentList[21] = "【第22周】Linux环境搭建与Redis应用";
                contentList[22] = "【第23周】Spring基础";
                contentList[23] = "【第24周】Spring基础";
    
                contentList[24] = "【第25周】Spring基础";
                contentList[25] = "【第26周】SSM开发社交网站";
                contentList[26] = "【第27周】Spring Boot电商项目实战";
                contentList[27] = "【第28周】Spring Boot电商项目实战";
    
                contentList[28] = "【第29周】面试";
                contentList[29] = "【第30周】多线程与分布式";
                contentList[30] = "【第31周】多线程与分布式";
                contentList[31] = "【第32周】Spring Cloud基础";
    
                contentList[32] = "【第33周】Spring Cloud电商实战";
                contentList[33] = "【第34周】Spring Cloud电商实战";
                contentList[34] = "【第35周】Zookeeper+Dubbo应用与面试";
    
                //提示信息
                System.out.print("您要开始第几周学习啦,直接输入数字吧:");
                //设置变量存储接收到的数据
                int num  = new Scanner(System.in).nextInt();
    
                //计算今天是几月(1-月第一周、4-月第4周)
                int month=0;
                month=(num-1)/4+1;
    
                //计算输入的周是这个月的第几周
                int week=0;
                week=num%4;
    
                //提示信息
                System.out.println("以下是您本月的学习计划, √ 代表当周学习任务");
                System.out.println("=======================================");
    
                //利用for循环,找到数组中对应这个月的内容输出
    
                if(month==1){
                    for (int i = 0; i <4 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==2){
                    for (int i = 4; i <8 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==3){
                    for (int i = 8; i <12 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==4){
                    for (int i = 12; i <16 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==5){
                    for (int i = 16; i <20 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==6){
                    for (int i = 20; i <24 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==7){
                    for (int i = 24; i <28 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==8){
                    for (int i = 28; i <32 ; i++) {
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
                if(month==9){
                    for (int i = 32; i <35 ; i++) {
                        //根据当前月第几周,在输出此行时,前面添加“√”
                        if(week==(i%4+1)){
                            System.out.print("√"+contentList[i]);
                        }
                        System.out.println(contentList[i]);
                    }
                }
        }
    }
    

    错在:我不知道怎么去循环找到月份,所以去一个一个的循环,主要是没有理解了循环的意义。应该是为循环变量设置良好的初始值和循环次数,结合if条件找到和 输入值对应月份 相同的用循环变量表示的月份, 就是找到了那个月份。这也是定义了month这个变量的原因。

    循环体中我没有想到,使用了暴力枚举,但是实际可以这种表示:

    for(int i=(month-1)*4;i<month*4;i++);

    但是存在的bug:

    如果输入第35周以后的数字:会越界。可以使用try catch处理异常。

    我的第二个正确代码:

    package javademo;
    
    import java.util.Scanner;
    
    public class Arrays06 {
        public static void main(String[] args) {
            //创建String数组,并为每一个元素赋值。赋值内容为第几周+学习内容
            String[] contentList = new String[35];
            contentList[0] = "【第1周】环境搭建与语法入门";
            contentList[1] = "【第2周】Java语法之循环、数组与方法";
            contentList[2] = "【第3周】面向对象之封装与继承";
            contentList[3] = "【第4周】面向对象之单例模式与多态";
    
            contentList[4] = "【第5周】常用工具类(上)";
            contentList[5] = "【第6周】常用工具类(下)";
            contentList[6] = "【第7周】常用工具类(下)";
            contentList[7] = "【第8周】前端基础之HTML与CSS";
    
            contentList[8] = "【第9周】前端基础之JavaScript与综合案例";
            contentList[9] = "【第10周】Java Web基础";
            contentList[10] = "【第11周】Java Web基础";
            contentList[11] = "【第12周】常用功能与过滤器";
    
            contentList[12] = "【第13周】监听器与项目实战";
            contentList[13] = "【第14周】监听器与项目实战";
            contentList[14] = "【第15周】MySQL基础";
            contentList[15] = "【第16周】MySQL基础";
    
            contentList[16] = "【第17周】Java数据库开发基础";
            contentList[17] = "【第18周】框架前置知识";
            contentList[18] = "【第19周】MyBatis基础";
            contentList[19] = "【第20周】MyBatis实现OA系统项目实战";
    
            contentList[20] = "【第21周】MyBatis实现OA系统项目实战";
            contentList[21] = "【第22周】Linux环境搭建与Redis应用";
            contentList[22] = "【第23周】Spring基础";
            contentList[23] = "【第24周】Spring基础";
    
            contentList[24] = "【第25周】Spring基础";
            contentList[25] = "【第26周】SSM开发社交网站";
            contentList[26] = "【第27周】Spring Boot电商项目实战";
            contentList[27] = "【第28周】Spring Boot电商项目实战";
    
            contentList[28] = "【第29周】面试";
            contentList[29] = "【第30周】多线程与分布式";
            contentList[30] = "【第31周】多线程与分布式";
            contentList[31] = "【第32周】Spring Cloud基础";
    
            contentList[32] = "【第33周】Spring Cloud电商实战";
            contentList[33] = "【第34周】Spring Cloud电商实战";
            contentList[34] = "【第35周】Zookeeper+Dubbo应用与面试";
    
            //提示信息
            System.out.print("您要开始第几周学习啦,直接输入数字吧:");
            //设置变量存储接收到的数据
            int num  = new Scanner(System.in).nextInt();
    
            //计算今天是几月(1-月第一周、4-月第4周)
            int month=0;
            month=(num-1)/4+1;
    
            //计算输入的周是这个月的第几周
            int week=0;
            week=num%4;
    
            //提示信息
            System.out.println("以下是您本月的学习计划, √ 代表当周学习任务");
            System.out.println("=======================================");
    
            //利用for循环,找到数组中对应这个月的内容输出
            for (int i = 0; i <(contentList.length) ; i++) {
                if(month==((i/4)+1)){
                    System.out.println(contentList[i]);
                   if(week==((i+1)%4)){
                       System.out.println("√"+contentList[i]);
                   }
                }
            }
    
    //
        }
    }
    

    心得:要学好数学,要有良好的逻辑思维才行啊。

    在我的idea是可以运行出结果的,在网页慕课上报了错:

    运行失败

    Exception in thread "main" java.util.NoSuchElementException
    	at java.util.Scanner.throwFor(Scanner.java:862)
    	at java.util.Scanner.next(Scanner.java:1485)
    	at java.util.Scanner.nextInt(Scanner.java:2117)
    	at java.util.Scanner.nextInt(Scanner.java:2076)
    	at HelloWorld.main(HelloWorld.java:46)
    您要开始第几周学习啦,直接输入数字吧:
    

    //设置变量存储接收到的数据
    46: int nums = new Scanner(System.in).nextInt();

    定义month的时候也可以用if判断一下。如果可以被4整除则month=nums/4;如果不可以被4整除

    ,month=nums/4+1;

  • 相关阅读:
    HDU5890:Eighty seven(Bitset优化背包)
    AtCoder3857:Median Sum (Bitset优化背包&&对称性求中位数)
    POJ3275:Ranking the Cows(Bitset加速floyd求闭包传递)
    Gym
    POJ2443 Set Operation (基础bitset应用,求交集)
    POJ2976:Dropping tests(01分数规划入门)
    HihoCoder1084: 扩展KMP(二分+hash,求T串中S串的数量,可以失配一定次数)
    扩展KMP(占位)
    MySQL主备模式的数据一致性解决方案
    MaxCompute问答整理之6月
  • 原文地址:https://www.cnblogs.com/yunxiaoqian/p/13853405.html
Copyright © 2020-2023  润新知