20145215《Java程序设计》第3周学习总结
20145215《Java程序设计》第三周学习总结
教材学习内容总结
认识对象
类类型
在学习第三章的时候,我们知道Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型。之前我们已经学习并了解了基本类型,在此就不重复介绍了,在这周的学习中,主要学习到的是类类型,例如在下面代码中:
class Clothes{
String color;
char size;
}
public class Field{
public static void main(String[] args){
Clothes sun = new Clothes();
}
}
sun就是一个类类型变量,类类型变量指向的是对象。
类与对象
- 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例。我觉得在视频中对类与对象关系的描述更加形象,它说类是对现实生活中事物的描述,而对象就是这类事物,它是实实在在存在的个体,此外,通过举汽车的例子,也让我们对类与对象有了更深层次的理解。
- 类在定义时要使用关键词class,而具体对象就是对应java在堆内存中用new建立的实体。
- 在Java中,为个别对象的数据成员指定值的方式是:对象.对象成员,例如
sun.color = "red"; - 在一个java文档中可以有多个类,当类只需要描述一个事物,而不需要独立运行的时候,是不用写主函数的,例如教材第84页的Clothes类就没有主函数,它只是为了描述事物,这也类似于我们C语言中定义一个函数。不过我们尽量不要在一个类中写多个class,如果有多个class,也只能有一个类前面加
public,要养成一类一文件的习惯。
标准类API
- java.util.Scanner类:java.util.Scanner的nextInt()方法会看看标准输入中,有没有输入下一个字符串(以空格或换行分隔),有的话会尝试将之剖析为int类型,其它的nextByte()、nextShort()等作用都类似。如果直接取得上一个字符串(以空格或换行分隔),则使用next(),如果想取得用户输入的整行文字,则使用nextLine()(以空格或换行分隔),总而言之Scanner类大大简化了Java的输入。
- java.math.BigDecimal类:Java遵守IEEE754浮点数运算规范,使用分数与指数来表示浮点数,这样就导致无法精确的进行运算,从而造成运算上的误差,比如1.0-0.8的结果就不是0.2。因此如果要求精确度,那就要小心使用浮点数,而且不能用==直接比较浮点数运算结果,所以我们可以使用BigDecimal类来得到想要的精确度。
对象指定与相等性
- 在基本类型中,=是将值复制给变量,而是比较两个变量储存的值是否相同。但是,如果是在操作对象时,=是用在指定参考名称参考某个对象,而是用在比较两个参考名称是否参考同一对象,换句话说也就是=是用在将某个名牌绑到某个对象,而==是用在比较两个名牌是否绑到同一对象。
- equals是逻辑上相等,比如
a.equals(b)意思就是判断a名牌绑定的对象与b名牌绑定的对象实际上内含值是否相同,因此equals()和==是不一样的。
基本类型包装
- 为了让Java 基本类型像对象一样操作,可以使用Long、Integer、Double、Float、Boolean、Byte等类来打包基本类型,这些类就是所谓的打包器。
- 除了使用new创建基本类型打包器,从J2SE5.0之后提供了自动装箱功能。自动装箱与拆箱的功能事实上是编译程序蜜糖,也就是编译程序让你撰写程序时吃点甜头,编译时期根据所撰写的语法,决定是否进行装箱或拆箱动作。
数组对象
- 数组在Java中就是对象,Java会检查数组的边界,一旦越界就会抛出
ArrayIndexOutOfBoundsException的错误,所以在Java中,数组一旦建立,其长度就已经固定了,这一点也是和C语言所不同的地方。 - 在Java中可以使用System.arraycopy()的方法来进行数组值的复制,它会使用原生方式复制每个索引元素,比使用循环更快。在JDK6以上的版本中,还有个更方便的Arrays.copyOf()的方法,能够帮你建立新的数组。无论System.arraycopy()还是Arrays.copyOf(),用在类类型声明的数组时,都是执行浅层复制。
字符串对象
- 字符串本质是打包字符数组的对象,是java.lang.String类的实例。
- 要想比较字符串实际字符内容是否相同,不能使用==,要用equals(),这一点前面也提到了。
- 字符串对象一旦建立,就无法更改对象中的内容,使用+会产生新的String实例,不要将+用在重复性的连接场合。
- 使用javac指令没有指定-encoding选项时,会使用操作系统默认编码。
查询Java API文件
- 在Windows系统下,首先要下载CHM格式的Java API,然后具体过程可以参照教材,以及娄老师提供的积极主动敲代码,使用JUnit学习Java。
对象封装
封装
- 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,其目的主要就是隐藏对象细节,将对象当作黑箱进行操作。
构造函数
- 构造函数特点:首先,函数名与类名相同,其次,不用定义返回值类型,另外不可以写return语句。
- 构造函数作用是给对象进行初始化,多个构造函数是以重载的形式存在的。
this关键字
- this代表其所在函数所属对象的引用,简而言之就是this代本类对象的引用,当在函数内需要用到调用该函数的对象时,我们就可以使用this。
- this()代表了调用另一个构造函数,至于调用哪个构造函数,则视调用this()时给的自变量类型与个数而定。
static关键字
- static用于修饰成员(成员变量和成员函数),被声明为static的成员,不会让个别对象拥有,而是属于类。
- 在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。
- import static语法是为了偷懒,但要注意名称冲突的问题。
教材学习中的问题和解决过程
- 教材上109页的Average代码运行完成后,结果如下:

一开始并不知道NaN是什么,后来百度后发现NaN是not a number的缩写,在IEEE浮点数754中定义,表示一些特殊数值(无穷与非数值),本题中没有输入,自然也就没有数值了。
代码调试中的问题和解决过程
- 在对课本上109页Average代码进行编译时弹出如下错误:

解决过程:通过百度找到了解决方法,首先用记事本打开java源文件,然后另存为,选择ANSI编码,再保存确认覆盖就好了。

- 下面代码无法进行编译:
public class ObjectInitialBlock{
class Other{
{
System.out.println("对象初始区块:");
}
Other(){
System.out.println("Other() 构造函数");
}
Other(int o){
this();
System.out.printf("Other(int o) 构造函数");
}
}
public class ObjectInitialBlock{
public static void main(String[] args) {
new Other(1);
}
}
}
弹出如下错误:

后来发现在用IDEA一开始编代码的时候,系统自动给了public class ObjectInitialBlock,当时没有注意,直接在ObjectInitialBlock类中继续敲代码,所以弹出了类名重复的错误。
心得体会
本周的学习任务相对于前两周来说还是比较重,但是学习到的内容也多了很多,这其中包括接触了许多新的概念之类的,说实话,学习的过程还是非常辛苦的,有时候常常一坐在电脑面前就是一个下午,但是没有付出就没有收获,虽然过程比较艰辛,但结果却是令人享受的。经过这短短三周的学习,我觉得自己学到的知识比当时学习C语言两个月的知识还要多,这也就更加说明学习是一个积极主动的过程,你越积极学到的东西也就越多,如果只是一味的被灌输知识,那么到最后学习到的知识也是非常有限的。不积跬步,无以至千里,希望自己今后能够学的更加踏实,一步一脚印的走下去。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | 编写了Hello Java代码 |
| 第一周 | 100/100 | 2/2 | 12/12 | 编写了Hello Java代码 |
| 第二周 | 200/300 | 2/4 | 15/27 | 理解了printf和println的区别 |
| 第三周 | 450/750 | 1/5 | 22/49 | 对对象有了更深层次的理解 |
本周学习的代码已经成功托管

参考资料
20145215《Java程序设计》第3周学习总结的更多相关文章
- 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可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 使用easy ui过程中资料(网址)总结
(1)JQuery Easy Ui 可装载组合框 - ComboBox (2)JQuery Easy Ui DataGrid (3)Easy ui combobox 多级联动 (四级联动) (4)jQ ...
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
原文链接地址:http://blog.csdn.net/leichelle/article/details/8217022 IP地址:4段十进制,共32位二进制,如:192.168.1.1 二进制就是 ...
- 仅Firefox中A元素包含Select时点击Select不能选择option
这是在使用京东的一个日期组件时碰到的bug,重现bug的代码精简如下 <!DOCTYPE HTML> <html> <head> <title> 仅Fi ...
- 集成TFS Build生成与SonarQube获取代码分析结果
软件项目在开发过程中,往往由于任务重.时间紧等原因忽略软件代码的质量和规范检查,只注重软件功能的开发和交付.等软件交付上线以后,由于代码质量导致的问题会耗费开发和运维人员的大量时间.研发表明,项目上线 ...
- Quicksum -SilverN
quicksum Given a string of digits, find the minimum number of additions required for the string to e ...
- calc 多项式计算 (STL版和非STL版) -SilverN
计算(calc.cpp) [问题描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*” ...
- 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)
剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...
- html5实现微信摇一摇功能
在HTML5中,DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间,通过改时间可以获取设备的运动状态.加速度等数据(另还有deviceOrientat ...
- CSS3属性选择器与(:not)选择器
一:css3属性选择器: img[alt]{ border:2px dashed #000; } 这个选择器会匹配页面标签中任何一个含有alt属性的图片标签. 还可以通过设定属性值来缩小匹配范围: ...
- jquery/js特效代码总结(一):tab切换
jquery实现tab切换: html代码: <ul class="tabs" id="tabs01"> <li><a href= ...