• 《Java程序设计》第6周学习总结


    20189208 2018-2019-2 《移动平台开发实践》第6周学习总结

    教材学习内容总结

    23章介绍了Androidstudio等工具以及JDK、SDK。
    24章介绍了如何安装Androidstudio,如何新建项目、虚拟设备、运行测试。
    25章介绍了activity。activity的周期、图标、使用资源、启动其他活动、传递意图启动活动。
    26章介绍了重要的UI组件。清单文件、Toast组件、通知、

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

    • 问题1:易混概念
    • 问题1解决方案:对比记忆
    作用 特点 模板
    Toast 显示一条消息作为给用户的反馈 到达预先定义的时间段会消失 android.widget.Toast作为模板
    通知 出现在状态栏的消息 持久、保持显示 直到关闭它或设备 android.app.Notification的实例

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

    • 问题1:完成第二个实验时想在基础上继续修改的同时保留备份。
    • 问题1解决方案:项目名不能refactor,只能创建新的project,但是可以在码云创建新的分支。为了熟悉Android项目,

    代码托管

    上周考试错题总结

    • 错题1
      假如有一个InputStream,接下来的内容是XYZABC,下面代码中假如count为3,下面代码执行结果是?
    
    public static String pullBytes(InputStream is, int count) throws IOException
    {
    is.mark(count);
    final StringBuilder sb = new StringBuilder();
    for(int i=0; i<count; i++)
    sb.append((char)is.read());
    is.reset();
    is.skip(1);
    sb.append((char)is.read());
    return sb.toString();
    }
    /*
    The result cannot be determined with the information given.
    并非所有java.io流都支持mark()操作; 
    如果不在流上调用mark- Supported(),则结果在运行时才会被识别。如果流确实支持mark()操作,那么结果将是XYZY,因为reset()操作将流放回到调用mark()之前的位置,并且skip(1)将跳过X.
    如果流不支持mark()操作,则可能会抛出运行时异常“The code compiles but throws an exception at runtime.”
    不知道输入流是否支持mark()操作,无法判断
    */
    
    • 错题2
      Eagle的一个实例经过serialized 和 deserialized后,name的值是?
    public class Bird implements Serializable {
    protected transient String name = "Bridget";
    public void setName(String name) { this.name = name; }
    public String getName() { return name; }
    public Bird() {
    this.name = "Matt";
    }
    }
    public class Eagle extends Bird implements Serializable {
    { this.name = "Janette"; }
    public Eagle() {
    this.name = "Daniel";
    }
    }
    /*
    Bird类实现了Serializable,没有定义astatic serialVersionUID变量,但定义不是必需的,因此编译没有问题,代码也运行没有问题,
    Java将在反序列化期间为第一个非可序列化的无参数父类调用构造函数,跳过任何构造函数和默认的可序列化类的初始化,包括Eagle和Bird本身。
    Object()是第一个被调用的构造函数。将跳过所有默认初始化,
    由于名称标记为瞬态,因此反序列化值为nulland,调用者无法使用setName()更改name的序列化值,因为name被标记为transient。
    */
    

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 ----- ----- -----
    第二周 180/180 2/3 18/18
    第三周 429/609 1/4 24/42
    第四周 588/1197 2/6 30/72
    第五周 548/1745 2/6 20/92
    第六周 15934/17679 2/8 20/112

    参考资料

  • 相关阅读:
    理解Device Tree Usage
    Unhandled Exception in EL3
    python的multitask模块安装
    利用python制作在线视频播放器遇到的一些问题
    设置linux代理完成apt-get
    Eric6安装问题解决
    关于代码重构的比喻
    AAC的RTP封装中的AU头分析
    CORE DUMP生成调试
    开源库SRT编译指南
  • 原文地址:https://www.cnblogs.com/Ychancy/p/10663841.html
Copyright © 2020-2023  润新知