JAVA 第三周学习总结
20175308 2018-2019-2 《Java程序设计》第三周学习总结
教材学习内容总结
本周的学习内容为整个第四章的内容,学习中感觉知识点既多又杂,故在总结时尽量选用重要的或高度概括的知识点。
- 面向对象语言特点:封装性、继承、多态
- 类:类是java程序的基本要素,一个java程序就是由若干个类所构成,类是java语言中最重要的数据类型,类声明的变量被称为对象变量
- 类、对象、方法三者的关系(理解):对象作为类的实例,方法是对象的行为。对象操作自己的变量体现了对象的属性,对象调用类中的方法体现了对象的行为
- 局部变量的名字与成员变量的名字相同,那么成员变量在该方法内将暂时失效,如果仍想使用成员变量,必须使用关键字“this”
- 避免使用空对象,否则在运行时会出现异常NoPointerException。这是因为对象可以动态地被分配实体,所以编译器对空对象不会做检查,即可编译但不可运行
- 参数传值:传值:传递的是值的副本。方法中对副本做修改,不会影响到调用方。传引用:传递的是引用的副本,共用一个内存,会影响到调用方。此时,形参和实参指向同一个内存地址。对引用副本本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方
- 参数传值总结:基本类型(byte,short,int,long,double,float,char,boolean)为传值;对象类型(Object,数组,容器)为传引用;String、Integer、Double等immutable类型因为类的变量设为final属性,无法被修改,只能重新赋值或生成对象。当Integer作为方法参数传递时,对其赋值会导致原有的引用被指向了方法内的栈地址,失去原有的的地址指向,所以对赋值后的Integer做任何操作都不会影响原有值。
- 成员变量可以分为实例变量和类变量。用static修饰的变量为类变量,否则称作实例变量。分配给不同对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量,而类变量则被所有对象共享,无论哪个对象修改了类变量,类变量本身的值都发生了改变。
- 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 第三周学习总结的更多相关文章
- 20165210 Java第三周学习总结
20165210 Java第三周学习总结 教材学习内容总结 - 第四章学习总结 编程语言的几个发展阶段: 面向机器语言 面向过程语言 面向对象语言 类: 类声明: class People { ... ...
- 20145304 Java第三周学习报告
20145304 <Java程序设计>第三周学习总结 教材学习内容总结 1.定义类: 类定义时使用class关键词,建立实例要使用new关键词. 代码如下: /*定义类 书上例子 衣服的型 ...
- JAVA第三周学习总结
20175303 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容总结 •编程语言的发展分为三个阶段,分别是:面向机器,面向过程,面向对象的语言.Java属于面向对 ...
- java第三周学习
这一周学习的是java数组面向对象 数组中存放的数据的类型:既可以是基本数据类型也可以是引用数据类型. 数组的定义方式: 1 数据类型[] 数组名; 2 数据类型 数组名[]; 数组的初始化: 1.静 ...
- 20165221 JAVA第三周学习心得
知识点回顾 类与对象学习总结 类:java作为面向对象型语言具有三个特性:①封装性.②继承性.③多态性.java中类是基本要素,类声明的变量叫对象.在类中定义体的函数题叫方法. 类与程序的基本结构: ...
- Java第三周学习日记
Day01 1.线程 进程:进程就是正在运行的应用程序.进程负责了内存空间的划分. 线程:一个进程中的代码是由线程去执行的,线程也就是其中一个执行路径. 多线程:一个进程中有多个线程可以同时执行任务. ...
- 201521123093 java 第三周学习总结
1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 本周学习总结: ...
- 20165220 Java第三周学习总结
1.教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例 为个别对象的数据成员指定值的方式是:对象.对象成员 注意“一类一文件” 类在定义时要使用关键词 ...
- 20165326 java第三周学习笔记
纸质学习笔记 代码托管
随机推荐
- 一些减少代码量、提高开发效率的利器(Java)
Spring Boot mybatis-plus代码生成器和自带CRUD接口 lombok 库: Apache Commons & guava AOP Java8: stream & ...
- python学习之老男孩python全栈第九期_day008作业
1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数apple 10 3tesla 100000 1mac 3000 2lenovo 30000 3chicken ...
- 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序
利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...
- git push报错error: failed to push some refs to 'git@github.com'
git push报错error: failed to push some refs to 'git@github.com' $ git push -u origin master To git@git ...
- Python+Selenium笔记(十二):数据驱动测试
(一) 前言 通过使用数据驱动测试,实现对输入值和预期结果的参数化.(例如:输入数据和预期结果可以直接读取Excel文档的数据) (二) ddt 使用ddt执行数据驱动测试,ddt库可以将测试 ...
- Oracle EBS CST 成本请求报错
(文档 ID 430533.1) When running CMCPAW, Periodic Actual Cost Worker, an error is received in the logf ...
- [Spark Core] Spark 使用第三方 Jar 包的方式
0. 说明 Spark 下运行job,使用第三方 Jar 包的 3 种方式. 1. 方式一 将第三方 Jar 包分发到所有的 spark/jars 目录下 2. 方式二 将第三方 Jar 打散,和我们 ...
- 【工具推荐】截图工具 Snipaste
0. 说明 [官网介绍] Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上!下载并打开 Snipaste,按下 F1 来开始截图,再按 F3,截图就在桌面置顶显示了.就这么简 ...
- 【转】Java学习—什么是时间复杂度
[原文]https://www.toutiao.com/i6593144782992704007/ 转载:程序员小灰 时间复杂度的意义 究竟什么是时间复杂度呢?让我们来想象一个场景: 某一天,小灰和大 ...
- 直播内容不合规怎么办?智能AI为您解决审核难题
背景 近些年来,视频直播快速发展,大量的直播平台如雨后春笋一般出现,但是这同样给直播内容的监管带来了巨大的挑战,一方面国家对于直播内容监管的要求日益严格,另一方面相对于文字内容的审核,多媒体内容的审核 ...