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. POJ3090(SummerTrainingDay04-M 欧拉函数)

    Visible Lattice Points Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7450   Accepted: ...

  2. 华中农业大学第五届程序设计大赛网络同步赛-L

    L.Happiness Chicken brother is very happy today, because he attained N pieces of biscuits whose tast ...

  3. JS中深浅拷贝 函数封装代码

    一.了解 基本数据类型保存在栈内存中,按值访问,引用数据类型保存在堆内存中,按址访问. 二.浅拷贝 浅拷贝只是复制了指向某个对象的指针,而不是复制对象本身,新旧对象其实是同一内存地址的数据,修改其中一 ...

  4. js-ES6学习笔记-变量的解构赋值

    1.ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 2.ES6允许写成:let [a,b,c] = [1,2,3];上面代码表示,可以从数 ...

  5. 【代码笔记】iOS-手机系统版本

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  6. Ajax发送POST请求对数据的封装

    Ajax发送POST请求把数据到后端后,后端收到数据并解析出来 示列一: Ajax发送请求,这里主要是发送一个数组的数据类型到后端,如果没有先把数组进行格式化成字符串的话,后端就收了就是一个字符串类型 ...

  7. PHP编译安装时常见错误解决办法,php编译常见错误

    PHP编译安装时常见错误解决办法,php编译常见错误 1.configure: error: xslt-config not found. Please reinstall the libxslt & ...

  8. MySql 简单统计查询消耗时间脚本

    MySql 简单统计查询消耗时间脚本 by:授客 QQ:1033553122 drop procedure if exists selectTime; delimiter; create proced ...

  9. Mockjs 前端接口数据模拟

    在前后端分离的项目中,通常需要启动一个后台服务器来配合前端项目的接口需求.Mockjs的作用是拦截ajax请求并模拟各种数据返回,让前端开发可以更加自由独立. 安装 npm install mockj ...

  10. 【Java入门提高篇】Day20 Java容器类详解(三)List接口

    今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的. Lis ...