20175308 2018-2019-2 《Java程序设计》第三周学习总结

教材学习内容总结

本周的学习内容为整个第四章的内容,学习中感觉知识点既多又杂,故在总结时尽量选用重要的或高度概括的知识点。

  1. 面向对象语言特点:封装性、继承、多态
  2. 类:类是java程序的基本要素,一个java程序就是由若干个类所构成,类是java语言中最重要的数据类型,类声明的变量被称为对象变量
  3. 类、对象、方法三者的关系(理解):对象作为类的实例,方法是对象的行为。对象操作自己的变量体现了对象的属性,对象调用类中的方法体现了对象的行为
  4. 局部变量的名字与成员变量的名字相同,那么成员变量在该方法内将暂时失效,如果仍想使用成员变量,必须使用关键字“this”
  5. 避免使用空对象,否则在运行时会出现异常NoPointerException。这是因为对象可以动态地被分配实体,所以编译器对空对象不会做检查,即可编译但不可运行
  6. 参数传值:传值:传递的是值的副本。方法中对副本做修改,不会影响到调用方。传引用:传递的是引用的副本,共用一个内存,会影响到调用方。此时,形参和实参指向同一个内存地址。对引用副本本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方
  7. 参数传值总结:基本类型(byte,short,int,long,double,float,char,boolean)为传值;对象类型(Object,数组,容器)为传引用;String、Integer、Double等immutable类型因为类的变量设为final属性,无法被修改,只能重新赋值或生成对象。当Integer作为方法参数传递时,对其赋值会导致原有的引用被指向了方法内的栈地址,失去原有的的地址指向,所以对赋值后的Integer做任何操作都不会影响原有值。
  8. 成员变量可以分为实例变量和类变量。用static修饰的变量为类变量,否则称作实例变量。分配给不同对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量,而类变量则被所有对象共享,无论哪个对象修改了类变量,类变量本身的值都发生了改变。
  9. Java类库中提供了许多很有用的类,如Math类,该类中所有方法都是static方法。在实际操作中,调用一些类库中已经存好的方法可以让编程编的简单,如应用Arrays.sort()可以将数组排列好。

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

  • 问题1:在之前的学习中,已经了解到传引用的概念,但是在4.5中又提到传具体值,发生了一些混淆与记忆不清。
  • 问题1解决方案:参考相关博客,分情待传值数据类型,发现了混淆的点与正确清晰的概念。相关博客链接附在最后的参考中。
  • 问题2:数组传值是在传引用,我想到当指向改变后,原有的存储空间是否会被释放。
  • 问题2解决方案:仔细看书在书中p66早已经提到了java内置的垃圾收集机制,当堆中分配的实体不会被任何对象引用时,便会释放实体在堆中占用的内存。
  • 问题3:如图:binary是二进制的意思,为什么二进制出现在搜索数组的方法中
  • 问题3解决方案:通过搜寻资料,查阅字典,发现binary在此处代表该方法是通过二分法来进行查找的。

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

  • 问题1:教材课后习题p109(3),通过读代码得出的数值为21,而实际运行得出的数值为27
  • 问题1解决方案:仔细观察代码
class B {
int n;
static int sum=0;
····

问题出在static上,在给b2进行操作时,sum的初始值此时还在保持b1操作完成后的6。将static删除后再运行,发现此时结果为21!

  • 问题2:教材课后习题最后一道大题,调用方法时出现NullPointerException错误
  • 问题2解决方案:修改方法有两种,第一种是我自行摸索出的,将给Amount和speed加static前缀,而后在show中直接调属性值,但这样不符合调用方法的要求。第二种不算方法,准确说是纠正错误,原来是在编程的时候粗心没有写好setCPU语句和setHardDisk语句,才导致错误,着实该打。

代码托管

上周考试错题总结

-

构造方法概念掌握不清,构造方法的定义如下:

(1) 方法名必须与类名相同。

(2)不要声明返回类型。

(3)不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。

所以,两种方法分别为Dog(int m),Dog(double m),下文方法并非构造方法。

感悟

随着学习的深入,java语言越来越清晰的呈现在了我的面前,接踵而来的就是数不清的知识点,自学java有自己动手找到答案的锻炼机会,但是缺点便是没有办法分清重点与否,所以驳杂的知识点便没有办法很清晰的分清主次,只能囫囵个的记忆。在本章的练习中就多次发生了对于概念记忆不清引起的错误。同时,在实践中我也理解了为什么娄老师会对英文单词量那么看重,比如之前我列举过的binary为什么会出现在数组查找的方法中,如果我品读出了二分法的意味,便不至于当成一个问题去研究,现在把它记下来,当作以后努力背单词的一个警醒。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 41/41 2/2 20/20
第二周 391/432 1/3 18/38
第三周 841/1273 2/5 22/60

参考资料

https://blog.csdn.net/weixin_36759405/article/details/82764339

JAVA 第三周学习总结的更多相关文章

  1. 20165210 Java第三周学习总结

    20165210 Java第三周学习总结 教材学习内容总结 - 第四章学习总结 编程语言的几个发展阶段: 面向机器语言 面向过程语言 面向对象语言 类: 类声明: class People { ... ...

  2. 20145304 Java第三周学习报告

    20145304 <Java程序设计>第三周学习总结 教材学习内容总结 1.定义类: 类定义时使用class关键词,建立实例要使用new关键词. 代码如下: /*定义类 书上例子 衣服的型 ...

  3. JAVA第三周学习总结

    20175303 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容总结 •编程语言的发展分为三个阶段,分别是:面向机器,面向过程,面向对象的语言.Java属于面向对 ...

  4. java第三周学习

    这一周学习的是java数组面向对象 数组中存放的数据的类型:既可以是基本数据类型也可以是引用数据类型. 数组的定义方式: 1 数据类型[] 数组名; 2 数据类型 数组名[]; 数组的初始化: 1.静 ...

  5. 20165221 JAVA第三周学习心得

    知识点回顾 类与对象学习总结 类:java作为面向对象型语言具有三个特性:①封装性.②继承性.③多态性.java中类是基本要素,类声明的变量叫对象.在类中定义体的函数题叫方法. 类与程序的基本结构: ...

  6. Java第三周学习日记

    Day01 1.线程 进程:进程就是正在运行的应用程序.进程负责了内存空间的划分. 线程:一个进程中的代码是由线程去执行的,线程也就是其中一个执行路径. 多线程:一个进程中有多个线程可以同时执行任务. ...

  7. 201521123093 java 第三周学习总结

    1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 本周学习总结: ...

  8. 20165220 Java第三周学习总结

    1.教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例 为个别对象的数据成员指定值的方式是:对象.对象成员 注意“一类一文件” 类在定义时要使用关键词 ...

  9. 20165326 java第三周学习笔记

    纸质学习笔记 代码托管

随机推荐

  1. HDU6152

    Friend-Graph Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. PHP定界符<<<eof 使用

    PHP是一个Web编程语言,在编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法 ——按字符串输出的话,肯定要有大量的转义符来对字符串中的引号等特 ...

  3. JS 回调函数、立即执行、for块作用域、try/catch、let、垃圾收集 p3

    限于时间关系,加上有些倦意,简单的记录下一些要点: 1.回调函数:就你把函数当成参数传给另一个函数,这个函数在某个时间段会执行这个函数.

  4. jQuery同步Ajax带来的UI线程阻塞问题

    一.需求 在调ajax接口的时候因为有时间延迟,想要做一个loading加载的效果,等数据返回时再把loading的效果去掉. 所以我在调ajax的代码块前面加了显示loading效果的代码,ajax ...

  5. SD从零开始57-58,第三方订单处理,跨公司销售

    [原创] SD从零开始57 第三方订单处理流程 第三方订单处理的流程Processes for Third-Party Order Processing 客户的采购订单首先在你公司的一个销售组织作为一 ...

  6. ionic安卓tab栏跑到顶部

    安卓下的ionic的tab会在顶部显示,而不是在底部 解决办法如下: 在app.js文件中的.config代码块里中添加以下代码: 注意依赖注入$ionicConfigProvider $ionicC ...

  7. XQuery使用sum求和,提示char不能转换为money解决方法

    select axml.value('sum(/root/pro/price)','money') 以上代码提示‘char不能转换为money’的错误,发现值为'0.0E0'.改为: select a ...

  8. Hive 锁 lock

    Hive + zookeeper 可以支持锁功能 锁有两种:共享锁.独占锁,Hive开启并发功能的时候自动开启锁功能 1)查询操作使用共享锁,共享锁是可以多重.并发使用的 2)修改表操作使用独占锁,它 ...

  9. React Native 如何做轮播图 react-native-swiper

    //:仿饿了么github:https://github.com/stoneWeb/elm-react-native 欢迎各位同学加入: React-Native群:397885169 大前端群:54 ...

  10. 基于MSMQ绑定的WCF服务实现总结

    一. 创建消息队列    1 1) 创建一个非事物性的私有队列    1 2)设置消息队列访问权限    2 二.创建WCF服务并绑定消息队列    4 1)创建HelloService服务    4 ...