20145216史婧瑶《Java程序设计》第3周学习总结
20145216 《Java程序设计》第3周学习总结
教材学习内容总结
第四章 认识对象
4.1 类与对象
•对象(Object):存在的具体实体,具有明确的状态和行为
•类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制
•从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象
•从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)
•类是对象的设计图,对象是类的实例,生成对象要先定义类。类定义时使用class关键词,建立实例要使用new关键词。以类名称声明的变量,称为参考名称、参考变量或直接叫参考。
•一个原始码中可以有很多个类定义,但只能有一个是公开类,且文档中的主文档名必须与公开类名称相同。只要有一个类定义,编译程序就会产生一个.class文档。
•对象指定与相等性:
当=用于基本类型时,是将值复制给变量,当==用于基本类型时,是比较两个变量储存的值是否相同。
当你在操作对象时,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一对象。
注意:别使用==或!=来比较两个对象实质内容值是否相同,要使用equals()
4.2基本类型打包器
•为了让Java 基本类型像类一样使用
int-Integer
long-Long
byte-Byte
float-Float
double-Double
boolean-Boolean
4.3数组对象
•在Java中,数组是对象。
•与C语言不同,Java需要检查数组边界,越界会触发ArrayIndexOutOfBoundsException异常。
•无论System.arraycopy()还是Arrays.copyof(),用在类类型声明的数组时,都是执行浅层复制。
4.4字符串对象
•在Java中,字符串是java.lang.String实例,用来打包字符数组。
•在Java中,以""包括的字符串,只要内容相同(序列、大小写相同),无论在代码中出现几次,JVM都只会建立一个String实例。
第五章 对象封装
5.1 何谓封装
•封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。
通过构造方法(构造函数)封装初始化流程
通过成员方法(函数)封装操作
通过成员变量封装数据
5.2类语法细节
•如果没有声明权限修饰的成员,只有在相同包的类程序代码中才可以直接存取,也就是“包范围权限”。如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在Java中要使用public加以声明。
•如果定义类时,没有撰写任何构造函数,编译程序会自动加入一个无参数、内容为空的构造函数,称为默认构造函数。可以定义多个构造函数,只要参数类型或个数不同,这称为重载构造函数。
•在Java中,this()代表了调用另一个构造函数,且this()调用只能出现在构造函数的第一行。
•被声明为static的成员,不会让个别对象拥有,而是属于类。
•以类命名实例来说,首字母是大写,以static使用习惯来说,是通过类名称与“.”运算符来存取。
•在static方法或区块中不能出现this关键字。static方法中不能用非static数据或方法成员。
•使用import static语法要注意名称冲突问题,有些名称冲突编译程序可通过以下顺序来解析。
局部变量覆盖:选用方法中的同名变量、参数、方法名称。
成员覆盖:选用类中定义的同名数据成员、方法名称。
重载方法比较:使用import static的各个静态成员,若有同名冲突,尝试通过重载判断。
教材学习中的问题和解决过程
问题1:
没有看懂书上p86页代码中的:
int number = (int)(Math.random()*10);
解决过程:
通过上网百度,得到如下解释:
Math.random()是令系统随机选取大于等于0.0且小于1.0的伪随机double值,是Java、js等语言常用代码。
例如:Number=Math.random()*2+1,即设置一个随机1到3(取不到3)的变量。
问题2:
由于以前学的for循环语法都是:
for(初始式;执行结果必须是boolean的重复式;重复式){
描述句;
}
所以当看到书上p96页的for循环语法时(具体语句如下),便感到很难理解。
for(int score:scores){
System.out.printf("学生分数:%d %n",score);
}
解决过程:
通过反复看书上的解释和上网查找资料,我知道了该语法是增强式for循环,执行结果其实与以前学的for循环语句相同
,但是编写代码时会更简洁方便。其具体执行过程是:上面的程序片段取得scores数组第一个元素,指定给score变量
后执行循环体,接着取得scores中第二个元素,指定给score变量后执行循环体,依次类推,直到scores数组中所有
元素都访问完为止。
代码调试中的问题和解决过程
问题1:
当敲到书上p124页的代码时,运行结果有问题,具体代码与错误如下:
解决过程:
经过反复看书中的代码实例与文字解析,我明白了该段代码中调用了函数,而书中给的代码并不完整,缺少构造函数的部分,因此出现如图所示错误,于是,我试着将构造函数的代码片段补上,重新运行,最后运行成功,代码与结果如下:
总结:Java的构造函数语法,能够实现对象初始化流程的封装,封装对象初始化流程的好处是用户不用重复撰写对象初始化流程,甚至不需要知道对象如何初始化,并且只要修改构造函数的内容,重新编译并给予位码文档之后,用户便无须再修改程序。
问题2:
在敲书上P128页的代码时,发现它与124页的代码有相同的问题,于是我再次补上构造函数的代码,原以为这次会万无一失,结果运行时又出现了一个错误,截图如下:
解决过程:
由于这个错误与之前的错误类似,所以我认为应该也是缺少了某些代码片段,于是我又回归教材,很快我便知道了错误所在,该段代码直接使用了store()方法,而没有定义储值用的store()方法,同样,我加上定义store()方法的代码后,程序便运行成功,截图如下:
总结:定义储值用的store()方法其实就是将储值重复流程封装到store()方法中,这么做的好处是用户不用再一遍一遍地敲储值的重复代码,并且在修改store()的流程时,也很方便,可以直接在定义的方法中修改。
其他(感悟、思考等,可选)
这周学到第四、五章,我感觉到Java这门课越来越难,开始本想通过看书来自学,后来发现仅仅只看书并不能完全弄懂知识点,书中给出的代码实例也总是看不懂,于是,我继续看视频,边看边做笔记,不懂的地方也记下来,然后上网查找资料来弄懂,最后再敲书上的代码,发现比之前轻松许多。虽然这周学习Java感到吃力,但我完成学习任务后却觉得很有成就感。
代码托管截图:
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4500行 | 30篇 | 350小时 | 能将java运用自如 |
第一周 | 150/150 | 2/2 | 15/15 | 学习了与java相关的基础知识 |
第二周 | 200/350 | 1/3 | 20/35 |
学习了java的基本语法 |
第三周 | 450/800 | 1/4 | 25/60 |
学习了对象和封装的相关知识 |
20145216史婧瑶《Java程序设计》第3周学习总结的更多相关文章
- 20145216史婧瑶《网络对抗》Web安全基础实践
20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...
- 20145216史婧瑶《网络对抗》Web基础
20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...
- 20145216史婧瑶 《网络对抗》 MSF基础应用
20145216史婧瑶 <网络对抗> MSF基础应用 实验回答问题 用自己的话解释什么是exploit,payload,encode. exploit:渗透攻击模块,测试者利用它来攻击一个 ...
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
随机推荐
- Hibernate中双向的一对多关系
何为双向,双向的意思就是你我之间可以互相通信(customer(1)和order(n)) 也就是说customer可以访问order,order也可以访问customer 二者构成了双向的关系 在Hi ...
- hibernate缓存,四种状态
FlushMode.AUTO:Hibernate判断对象属性有没有改变,是默认的清理模式 FlushMode.COMMIT:在事务结束之前清理Session的缓存,其他任何时候都不清理缓存 Flush ...
- 解决;R语言使用sqldf库是报错"Failed to connect to database: Error: Access denied for user '..'@'localhost' (using password: NO) Error in !dbPreExists : invalid argument type"
原因:在使用sqldf时,不需要加载RMySQL库 解决方案:在控制台执行释放RMySQL库加载 detach("package:RMySQL", unload=T);
- C语言实现链表中结构体嵌套
1.首先,定义两个结构体,一个用于定义链表,一个用于定义数据 // 定义数据相关的结构体 typedef struct Student{ int stu_id; ]; }Stu; // 定义链表相关的 ...
- Microservices 微服务概念和优点 自治 弹性 级联故障 微服务的问题 CAP 分布式事务 修改一个服务并对其部署而不影响其他任务服务
https://en.wikipedia.org/wiki/Microservices https://zh.wikipedia.org/wiki/微服務 微服務 (Microservices) 是一 ...
- glibc-2.23_int_malloc_流程浅析
- Zipline入门教程
Zipline Beginner Tutorial Basics 基础 Zipline is an open-source algorithmic trading simulator written ...
- paintschainer项目
github:https://github.com/pfnet/PaintsChainer tensorflow实现:https://github.com/mizti/tensor_paint 在线测 ...
- nginx日志配置(cookie,header,post等字段记录)
如果你对nginx日志格式,有这样那样的要求. 那么就看一下说明吧. $remote_addr The remote host $remote_user The authenticated user ...
- spring 自定义事物同步器(一): TransactionSynchronizationManager 解析
一..JPA 获取 Hibernate的session try { session = entityManager.unwrap(Session.class); } catch (Exception ...