zoukankan      html  css  js  c++  java
  • 学号 20175223 《Java程序设计》第 5 周学习总结

    学号 20175223 《Java程序设计》第 5 周学习总结
    目录

    教材学习内容总结

    • 第六章要点:
      • 要点1:接口:interface;
      • 要点2:实现接口implements:类实现接口、重写接口中的方法;
      • 要点3:接口的UML图;
      • 要点4:接口回调、理解接口;
      • 要点5:接口与多态;
      • 要点6:接口参数;
      • 要点7:abstract类与接口的比较;
      • 要点8:面向接口编程;
      • 要点9:应用举例。

    教材学习中的问题和解决过程

    1. 在 jdb 调试时使用命令行参数。

    • 问题1解决方案:

    同在解释文件时,java xxxx <参数1> <参数2> <参数3> ... 的通过命令行传入参数命令相同:

    javac -g -d bin xxx.java
    jdb xxx <参数1> <参数2> <参数3> ...
    

    代码调试中的问题和解决过程

    1. 在jdb调试时通过命令行传入参数

    • 问题1解决方案:

    在执行完 javac -g -d bin src/*.java 后,一般都是 jdb -classpath .:./out xxxx
    如果在调试时要用到命令行传入参数,直接在 jdb -classpath .:./out xxxx 后加入参数即可:

    jdb -classpath .:./out xxxx <参数1> <参数2> ... <参数n> <Enter>
    

    2. “可能尚未初始化变量” 或 “无法从静态上下文中引用非静态 变量”

    源文件见 迭代和JDB ,简略程序如下:

    public class Recursion {                //执行C(n,m)的递归公式
        ......
    }
    
    public class Estimate {             //执行主要的判断
        ......
    }
    
    public class Combination {             //主类
        public static void main(String[] args) {
            int n, m;                       //**[代码1]**
            if (args.length == 2) {             //判断命令行输入参数的格式是否正确
                n = Integer.parseInt(args[0]);             //将命令行参数中的 String 型转化为 int 型,并赋值给 n 、 m
                m = Integer.parseInt(args[1]);
            }
            else {
                System.out.println("Input args Error!");
                System.exit(0);
            }
            Estimate esti = new Estimate();
            esti.estimate(n, m);
        }
    }
    
    

    编译时会报错:

    Error:(13, 23) java: 可能尚未初始化变量n
    Error:(13, 26) java: 可能尚未初始化变量m
    

    问题分析:
    这是成员变量与局部变量区别的问题:成员变量会有初始值,局部变量没有初始值。
    上述程序的第 11 行 [代码1] int n, m; 是在 public static void main(String[] args) {} 之中的,属于局部变量,无初始值,会报错。解决方案如下:

    • 问题2解决方案一:
      局部变量 n、m 没有初始值,给它们赋值即可。
      将上述程序的第 11 行 [代码1] 更改如下,就不会报错。
    int n=0, m=0;
    
    • 问题2解决方案二:
      将 n、m 由局部变量变更为成员变量。
      而如果只是将 [代码1] int n, m;移至 [代码2]
    public class Combination {             //主类
        int n, m;                       //**[代码2]**
        public static void main(String[] args) {
            if (args.length == 2) {             //判断命令行输入参数的格式是否正确
        ......
    

    是不对的,会报错:

    Error:(6, 13) java: 无法从静态上下文中引用非静态 变量 n
    Error:(7, 13) java: 无法从静态上下文中引用非静态 变量 m
    Error:(14, 23) java: 无法从静态上下文中引用非静态 变量 n
    Error:(14, 26) java: 无法从静态上下文中引用非静态 变量 m
    

    这是因为 [代码2] int n, m; 是非静态(动态)的,而 main 是静态的。
    需要在 [代码2] int n, m; 前加静态前缀:static,使 n、m 成为静态成员变量。

    public class Combination {             //主类
        static int n, m;                       //**[代码2]**
        public static void main(String[] args) {
            if (args.length == 2) {             //判断命令行输入参数的格式是否正确
        ......
    

    即完成编译。

    [代码托管]

    • 代码提交过程截图:

    image.png

    image.png

    • 代码量截图:

    image.png

    其他(感悟、思考等,可选)

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 322/322 1/1 23/23
    第二周 520/842 3/4 25/48
    第三周 458/1300 2/6 16/64
    第三周 914/2214 2/8 21/85
    第四周 685/2899 1/9 18/103

    2899

    • 计划学习时间:20小时

    • 实际学习时间:18小时

    参考资料

  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/Yogile/p/10632965.html
Copyright © 2011-2022 走看看