《移动平台开发与实践》第二周学习总结

20169214 2016-2017-2 《移动平台开发与实践》第二周学习总结

教材学习内容总结

第四章要点:

  • 要点1:类的三要素:类名、字段、方法。类名的首字母要大写;字段和方法名遵循骆驼命名法,即每个单词的首字母大写,除了第一个单词之外。例如:receiveSalary(),work()
  • 要点2:一个公有类的定义必须保存在一个文件中,且文件名与类名相同,且必须以.java为扩展名。并且,一个源文件只能包括一个public类,但可以包含多个非公有类。
  • 要点3:应用程序的入口点——main方法;
    允许有可变长度的参数列表——vararg(当参数列表包含固定和可变参数时,可变放后边);
    使其值不可以修改的关键字——final;
    创建对象最常用的方法——new;
    使用其他包或该包的类,需要关键字——import,import语句必须放在package语句之后、类声明之前;在一个类种,import语句可以出现多次;
    定义静态成员关键字——static,静态成员不用先实例化就可以被调用。另外,只能在一个类级别中声明一个静态变量,即便方法是静态的,也不能声明局部静态变量。
  • 要点4:让多个函数具有相同的名字,在java中是合法的。——方法重载
  • 要点5:JVM包括加载、连接、初始化,这些过程均为递归地进行,即先处理父类,才能处理子类。

第七章要点:

  • 继承是的代码具有可扩展性,在Java中,所有类都默认的继承了java.lang.Object类。扩展一个类的关键字——extends,在Java中,一个类只能够扩展一个类,与C++中允许多继承不同。但是,在Java中使用接口也能实现多继承的效果。

第十章要点:

  • 类、接口、抽象类之间的关系:接口并不只是一个没有实现的类,而是服务提供者及客户之间的一个协议;抽象类是一个不能实例化的类,在某些情况下,它扮演了接口的角色,但又可以提供某些方法的实现。

第十一章要点:

  • 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
  • 面向对象有三大几属性,可以说,封装和继承都是为多态做准备。

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

  • 问题1:从一个静态方法中调用非静态成员

    编译运行时会出现以下错误:

    原因:main的静态方法中无法访问非静态的字段。
  • 解决方法:有两种:一是让b成为静态的,修改如下:

    二是创建该类的一个实例,然后使用对象引用对b进行访问。
    再次运行后,显示正确结果,如下:
  • 问题2:变量作用域

    编译运行后会出现以下错误提示:

    原因:变量y定义于内层for循序语句中,所以y只能够在内层for语句块中使用。而在其他地方,y都是无法访问或不可见的。当JVM执行内层for语句时,同时创建x,内层for语句执行完后,x便被销毁,之后x便超出了其作用域。
  • 解决方法
    正确使用变量作用域:

    运行结果正确显示:

    说明:该代码段说明两点:一、内层的for语句块可以访问外层定义的x。x的正确输出可以证明这一点;二、for语句块可以访问循环语句块外部(之前)定义的变量。y+a的正确输出可以证明这一点。
  • 问题3:隐式地调用父类中不存在的构造方法

    这将会导致一个编译错误。因为编译器添加了对Parent中的无参构造方法的一个隐式调用,而Parent类只有一个构造方法,它接受一个Srting参数。

  • 解决方法:通过从Child类的构造方法中显示地调用父类的构造方法,如下:

  • 问题4:当程序编译出现问题时,错误提示会显示混乱,如下:

代码托管

  • 项目链接:
    http://git.oschina.net/md2017/yj20169214
  • 代码提交过程截图:
    运行git log --pretty=format:"%h - %an, %cd : %s":
  • 代码量截图:
    运行find src -name “*.java” | xargs cat | grep -v ^$ | wc -l:
    (因项目提交出现了问题,代码量没能正常显示。尝试了linux、Windows两种环境下写Java代码,并且Windows环境中尝试了git下编辑器直接写和记事本转.java两种方式,但目前均未正确显示代码量。在Linux下重新添加little.sh脚本并运行,代码量及代码提交信息得以全部显示出来,如下:)

上周考试错题整理

  • javac,java命令找不到,是由于PATH环境变量设置错误
  • git init——git库初始化,在某文件夹下执行就是执行该文件夹
    git push——将本地分支更新,并推送至远程主机
    git log——查看提交历史
  • Java中没有“0为假,1为真”的说法,只有TRUE和FALSE
  • Java中一个字符占两个字节
  • Java中没有goto,可在外层循环设置一个标签break,实现跳转

学习进度条

  • 教材学习:教材4/7/10/11,共4章
  • 博客量(新增/累积):1/2
  • 重要成长:了解了java的对象、类,以及继承、多态等面向对象特点

参考资料

《Java和Android开发学习指南(第二版)(Java forAndroid.2nd)》第4、7、10,11章
《Java程序设计和Android开发》课程
使用码云和博客园学习简易教程

posted on 2017-03-12 22:35  20169214姚静  阅读(236)  评论(5编辑  收藏  举报