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. Android异步加载访问网络图片-解析json

    来自:http://www.imooc.com/video/7871 推荐大家去学习这个视频,讲解的很不错. 慕课网提供了一个json网址可以用来学习:http://www.imooc.com/api ...

  2. 【leetcode】Merge Intervals(hard)

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  3. 【processing】小代码2

    函数: 绘制直线自由图形: beginShape(), vertex(), endShape() 分别是绘制图形开始,连接图形的节点,绘制结束 endShape(CLOSE)表示闭合图形. 绘制曲线边 ...

  4. IOS-多线程技术

    三种: •NSThread: –优点:NSThread 比其他两个轻量级,使用简单 –缺点:需要自己管理线程的生命周期.线程同步.加锁.睡眠以及唤醒等.线程同步对数据的加锁会有一定的系统开销 •NSO ...

  5. 用fontAwesome代替网页icon小图标

    1. 引言 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常简陋.下面的小图标,你是不是会经常用到? 你可能说——“我们用的都是彩色的,不是黑白的”——别着急,下面会讲 ...

  6. Spring面向切面编程(AOP)

    1 spring容器中bean特性 Spring容器的javabean对象默认是单例的. 通过在xml文件中,配置可以使用某些对象为多列. Spring容器中的javabean对象默认是立即加载(立即 ...

  7. MongoDB 3.0(1):CentOS7 安装MongoDB 3.0服务

    目录(?)[-] 1下载安装 2MongoDB CRUD 1创建数据 2更新数据 3删除 4查询 5更多方法 3MongoDB可视化工具 4总结   本文原文连接: http://blog.csdn. ...

  8. google关于ssh key的解释(转)转的google的wiki的

    SSH keys (简体中文)     SSH 密钥对可以让您方便的登录到 SSH 服务器,而无需输入密码.由于您无需发送您的密码到网络中,SSH 密钥对被认为是更加安全的方式.再加上使用密码短语 ( ...

  9. AFNetworking(AFN)总结

    AFNetworking(AFN) ----主要做下载上传之用 //他是干啥的?发送请求,主要做下载上传之用 (苹果自带有获取服务器数据的方法NSURLConnection send,AFNetwor ...

  10. Android ArrayAdapter使用

    1. 可以直接使用getContext()获取Context对象 2. 可以在构造方法中传入context, 数据对象的列表, super(context, 0, object);完成Adapter的 ...