20145223 《Java程序设计》第3周学习总结

教材学习内容总结

第四章内容
1、类与对象
如何定义一个包含有几个值域(Field成员)就是需要我们定义一个类(Class),书上给的例子是这样的:

运行结果:

我自己根据书上所讲的这种定义构造函数(Constructor)的与类名称同名的方法(Method)编译了以下的代码:

以及:

很显然这两种编译的结果是相同的,都是:

2、使用标准类
(1)如果我们想要方便地去接受用户的输入,可以用java.util.Scanner,例如书上p86的代码:

这样一来就可以找Scanner对象要你想要的数据了,上述程序的运行结果如下:

(2)同时由于java语言中存在有浮点数误差,所以我们要想要得到更好的精确度,就需要用到java.math.BigDecimal,按照书上的讲解,我自己编了这样的一个程序来练习:

结果为:

同样的,还可以利用它进行数与数之间的比较:

结果为:

得到的结果和预想中的一样都是正确的

3、对象指定与相等性
“=”是用在指定某个参考名称去参考某个对象,而“==”是用在比较两个参考名称是否参考同一个对象,也就是说在java的语法当中二者有着不同的含义,因此我们在使用的时候应该注意,比如书上的这个例子:

它的运行结果就告诉了我们这两者在使用中的区别:

4、基本类型打包器
(1)Java中有两个类型系统:基本类型和类类型,我们在很多时候需要用到long、Integer这些类(也就是所说的打包器Wrapper)将基本类型打包起来以便于操作。
例如书上的P91例子:

结果为:

从J2SE 5.0后提供了自动装箱功能,编译程序可以自动判断能否进行自动装箱,像是:Integer wrapper=10 (wrapper会参照Integer实例)。同时也可以自动拆箱,取出打包器中的基本形态信息。

5、数组
数组是一种具有索引的数据结构,使用数组会在内存中分配空间存储多个变量,比如:

上面是一个简单的一维数组的例子,如果想要存储一个由坐标轴构成的坐标位置,可以用二维数组,例如课本P97的例子:

显示的结果为:

有一点需要注意的是,如果你想要复制数组,不能简单用int【】 scores2=scores1的“=”这个符号,因为它仅代表将scores1的参考对象也给scores2作为参考,正确的方法应该是新建另外一个数组:

6、字符串
在java中字符串是java.lang.String实例,用来打包字符数组。书上P109页的例子可以让用户命令行自变量提供整数,并计算整数平均值:

字符串本质是打包字符数组的对象,启动JVM并指定执行类时可以同时指定命令行自变量,会收集为String数组,由main()中的args参考。

7、封装
(1)基本概念:在java中用class来定义需要存储的数据有哪些,那么因此导致的多次的对象建立是一个重复的过程,加以改进的方法就是构造函数(constructor):

这就是用了构造函数实现对象初始化流程的封装。
(2)除了使用构造函数之外,还有一种方法是利用数组,比如下面的程序:

(3)public权限修饰
如果想要在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,Java中要使用到就是public加以声明。(声明类为public表示它是个公开类,可以在其他包的类中使用。可以在构造函数上声明public,这表示其他包的类中可以直接调用这个构造函数。可以在方法上声明public,这表明其他包的方法可以直接调用这个方法)
(4)方法重建
在定义类时,可以使用构造函数定义对象建立的初始流程。但视条件不同可以定义多个构造函数,只要参数类型或个数不同,这就成为重建构造函数。以String类为例,其中一个方法为:public static String valueOf(float f)
然而在JDK5之后我们需要注意到自动装箱和拆箱问题:

结果为:

所以如果想要调用某一个指定的方法,我们就需要明确指出。
(5)this的使用方法
在构造函数参数与对象数据成员同名的时候,我们可以使用this加以区分,教材上的案例如下:

这个范例调用了Other(int o)版本的构造函数,而其中使用this()调用了other()版本的构造函数。如果攥写了对象初始区块,对象建立之后会先执行对象初始区块,接着才调用指定的构造函数。

(6)static类成员
被声明为static的成员,不会让个别对象拥有,而是属于类。在JDK5后新增了import static语法,这样我们在使用某一个static类成员的时候,就可以偷懒:

结果如下:

第五章总的来说,封装就是构造函数实现对象初始化流程的封装,把操作对象的流程封装起来隐藏细节,然后就等于把操作对象放进黑箱子进行操作。(在这个过程中,我们还要学习一些语法上需要注意的问题)

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

教材P113举了一个例子代码如下:
String text1 ="Ja"+"va";
String text2 ="Java";
System.out.println(text1==text2);
结果显示的是true,因为“+”链接字符串看似产生了新的字符串,但实际上编译程序会自动认为"Ja"+"va"就是相当于"Java",我觉得这个小细节还挺有趣的。

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

在编写有关使用java.math.BigDecimal的程序时,我遇到了这样的问题,导致我的程序出现了编译错误:

我仔细检查了一遍,发现并没有什么问题……它告诉我“有if,但是没有else”,可是我明明就把else打上去了啊,怎么会没有else?所以我只好求助万能的网络,把出现错误提示的关键字复制下来放到了百度里,结果搜出来发现别人也和我出现了一样的错误。最终我找到了原因,那就是我在if(条件)后面多加了一个分号,去掉分号之后程序就能正常运行了。(编程序真是不能大意啊。)

其他(感悟、思考等,可选)

通过对于这两章的学习,我发现它虽然看起来和我们之前所学的C语言的内容完全不一样,是一个新的概念,但实际上是和之前所学的知识是有所联系的。一开始接触的时候很难理解,学的云里雾里的莫不清楚头脑,后来仔细一想就觉得好像能弄懂是什么意思。比如说“封装”这个新词,我一开始不知道它是什么意思,到后来我摸清了它的一个大致思路,就明白它到底使用在哪方面,是解决什么问题的了。还有就是在学习的过程中,我发现了一定要动手实践,比如书上的代码,看起来就是那么回事,可是当你实际要用到这个代码里的方法去处理一些新的东西,你就会开始不知道怎么下手。所以我现在发现了一个很好地学习java的方法,就是在将书上的代码敲到编译程序中后,再自己仿照着编写一些新的拓展的代码。感觉这样学起来会更有效率。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 20篇 200小时
第一周 200/150 1/1 15/12
第二周 180/150 1/1 18/12
第三周 600/400 1/1 17/16

代码托管截图

参考资料

20145223《Java程序程序设计》第3周学习总结的更多相关文章

  1. 201521145048《Java程序设计管理》第一周学习总结

    1. 本周学习总结 学习并了解Java的发展与历史 在网上视频中学习Java 了解并区分JVM JRE JDK 将java与已学语言做比较,发现相同处 2. 书面作业 Q1.为什么java程序可以跨平 ...

  2. 20145223《Java程序程序设计》课程总结

    20145223<Java程序程序设计>课程总结 每周读书笔记链接汇总 第一周学习总结 第二周学习总结 第三周学习总结 第四周学习总结 第五周学习总结 第六周学习总结 第七周学习总结 第八 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. 【linux】学习2

    鸟哥那本书的第6章 文件权限: ^                ^     ^      ^        ^              ^                 ^ 1         ...

  2. 【HTTP】Wireshark过滤规则

    参考:http://jingyan.baidu.com/article/454316ab593170f7a6c03a60.html 语句特点:协议.属性 一.IP过滤: 包括来源IP或者目标IP等于某 ...

  3. 添加thrust的库后出错

    在添加thrust库中的host_vector.h等头文件时 C:\NVIDIA\cudatoolkit\include\thrust\detail\config中的debug.h一直出问题,因此注释 ...

  4. XStream xml to bean

    <!-- pom.xml --> <dependency> <groupId>com.thoughtworks.xstream</groupId> &l ...

  5. python基础——继承和多态

    python基础——继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类 ...

  6. c语言中的浮点数

    一.浮点数常量(小数) 0.11L, 0.0f ,0.0,1.88,2.5f ,0.188E1 E3表示103        比如 1.88E 3=1.88*1000=1880.0f E-3表示10- ...

  7. jpg Test

  8. core

    http://blog.csdn.net/xiaoxiaoniaoer1/article/details/7740820 1.core文件的生成开关和大小限制--------------------- ...

  9. C++面向对象基础知识

    多态是为了接口重用,封装和继承是为了代码重用 子类重新定义父类虚函数的方法叫做继承,不是重载! 一.基本概念 对于C++中经常出现的函数名称相同但是参数列表或者返回值不同的函数,主要存在三种情况: 1 ...

  10. 苹果官方制作MAC OS的启动U盘的步骤

    工具/原料 一个8G或者更大容量的U盘 MAC OS系统镜像DMG文件 方法/步骤 1.打开应用程序 - 使用工具里的磁盘工具,将U盘格式化为MAC OS扩展日志式,名称输入Mavericks,并创建 ...