首页
登录 | 注册

20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

教材学习内容总结

  1. import 声明,指定程序中要用的包和类。
  2. String类,创建对象,对字符串进行编辑。
  3. Random类,取随机数。
  4. Math类,有关数学的计算。
  5. 格式化输出:NumaberFormat类,DecimalFormat类,printf方法
  6. 枚举型,作用之后会有。 枚举型作用
  7. 包装器类

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

  • 问题1:实例化。 在书P35 Math类的介绍中提到了静态方法,不需要实例化。
  • 问题1解决方案:参考资料:Java中什么叫实例化??
    其中形象的解释了什么叫做实例化。就是把类举个例子,给出一个对象。那么,就涉及到了新的知识。什么是静态方法动态方法
    参考资料:静态方法和实例方法的区别

    在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
    静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

    结合以前的知识,我们就会发现String是一种实例方法。而main()是典型的静态方法。

  • 问题2:书P87 有这样一句话:

    数据尾部的0(例如圆面积78.540)将不会显示。

    那么我们结合一下例3.5: 有这样一行代码:

    DecimalFormat fmt = new Decimalformat("0.###");

     我们都知道这是输出格式化的效果,那么为什么有三个#,却不会显示数据尾部的0呢? 
  • 问题2解决方案:
    我们可以参考这份资料。
    参考资料:decimalFormat("#","##0.00") java
    看过这个博客以后呢,我总结了两句话:
    #:如果该位四舍五入后数字为0,那么就省略这个0 ,
    0:如果该位四舍五入后没有数字,那么就自动补0。

     之后呢,我觉得要是想得出`78.540`那就可以把`#`换成`0`,所以我输入了这个代码:  

    DecimalFormat fmt = new Decimalformat("0.##0");

    结果呢,还是不对。然后我问了学长之后,得到了这个结论:  
    **要用#都用#,要用0都用0。**
    
    **备注**:在做后面的项目练习的时候,这**保留小数位**的题型。那么这时候我们应该用'#'还是'0' 呢?    **是0哦**
  • 问题3:Math.PI是个啥?
  • 问题3解决方案:这是π
    Math.E 是自然对数
  • 问题4:在格式化输出那一节,介绍了NumaberFormat类,DecimalFormat类,printf方法,那么,类和方法到底有什么区别呢?
  • 问题4解决方案:
    参考资料:java中类与方法的关系是什么?
    由资料可知,类就是一类事物的抽象,是一个模板;而方法是具体的,有具体的行为。可以好好的参考下例子,很形象。

  • 问题5:枚举型的作用
  • 问题5的解决方案: 相信很多人都不理解枚举型到底有什么用,不就是举例子数数吗?这里我在网上查到了资料。枚举类型的作用
    但是看不懂。 所以从JDK API中查询Enum
    但是不会用。 所以又从网上查了如何使用JDK API
    参考资料:JDK API从下载到使用
    然后呢,还是不太懂。 只能大致理解到他的好处,希望后续的学习能够解决现在的问题。

  • 问题6:书P84自测题SR3.21

    Math.pow(2, 4)

      我觉得是16,答案16.0  
  • 问题6的解决方案:于是,我查书P83 图3.5

    static double pow(double num, double power)

    注意到了,是double,输出的结果是double。这点就需要我们去仔细理解书中的例子和方法,而不是草草地打完代码就结束了。

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

  • 问题1:import 声明的简便。
    20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

  • 问题1解决方案:书P80

    如果只需要使用某个包中的一个类,最好在import声明中指出这个类;
    如果要使用两个以上的类,则使用“*”形式更好些。

    所以我们应该输入:

    import java.util.*;

  • 问题2:有关例3.5:
    DecimalFormat fmt = new Decimalformat("0.###");
  • 问题2解决方案: 编写了一个test程序。
    20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

    20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

  • 问题3 : 博客园博客markdown格式问题。
    20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

    项目符号和文字总是不在一行。很苦恼,博客看上去格式很凌乱。然后在学长的帮助下进行了各种调试。针对不同的空行,得出了不同的结果。有一天晚上很晚了偶然请教学长,学长不厌其烦的帮助我,那天确实有点影响了学长的休息。深深感谢学长帮助。最后还是博客园模板捣的鬼,当初创建博客随机选了个简约的,没想到有这么大的麻烦,例如那个大引号。换个模板就好了。

代码托管

20172301 2017-2018-2 《程序设计与数据结构》第三周学习总结

上周考试错题总结

  • 下列哪种情况需要强制转换? D

A (使用charAt来获取字符串元素并将其存储为char类型)
B (将一个int类型的数存储为float类型)
C (将一个float类型的数存储为double类型)
D (将一个float类型的数存储为int类型)
E (以上所有情况都需要强制转换)

理解:一种更宽的类型被存储在一个更窄的类型中,是不能被强制转换的。而扩大操作,采取更窄的类型,并将值存储在更宽的类型中,是可以强制转换的。

  • 关于求余运算符%,下面哪项是正确的?
    A .(它只能执行int类型的数值,其结果是double类型的数)
    B .(它只能执行int类型的数值,其结果也是int类型的数)
    C .(它只能执行float或者double类型的数值,其结果是int类型的数)
    D .(它只能执行float或者double类型的数值,其结果是double类型的数)
    E .(它可以执行任何类型的数值,其结果始终是数值)
    理解: 我们求余运算常用的都是整数。但是不一定是。举个栗子:

    0.08 / 0.03求余,余数是0.02。

这里全是double型的数。 所以'%'可以执行任何类型的运算。

  • (如果你想把"George Bush"这个值存储为字符串类型的名字,你会执行那条语句?)
    A . String name = "George Bush";
    B . String name = new String("George Bush");
    C . String name = "George" + " " + "Bush";
    D . String name = new String("George" + " " + "Bush");
    E . (上述都可以完成)

理解:根据这章对于String类的学习,我们可以知道可以通过A,B两种办法来通过定义字符串。 而C,D两个选项只不过是A,B的变形罢了。

  • int z = 50 / 10.00; (如果我们执行下面的赋值语句,z将得到什么值?)
    A . 5
    B . 5.0
    C . 50
    D . 10
    E . (以上皆错,因z是一个整型数而50 / 10.00不是,会产生运行时错误)

理解:已经定义了z是个int型,可是结果却是double型,相互矛盾。输出错误。

  • (Boolean类型的变量将被存储为0或1)
    A . true
    B . false

理解:书上的原句。在C语言中,c++和c#布尔值被实现为只存储0或1的int变量但是在Java中,语言的作者选择了真实和错误的布尔文字,因为这被认为是语义上更容易理解的(而且更安全)。

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

这星期确实有很多的东西需要学习,不仅是各种各样的类和方法,还有实验和各种调试。但是一步步走到现在,并且代码也突破到了1000大关,心里的成就感还是很强的。尽管测验的成绩还是不理想,但是我认为实践更加重要。现在我们正在系统的学习Java程序的编写,我也期待自己以后能独自编写出自己的项目。共勉!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/1 20/20
第二周 300/500 1/2 18/38
第三周 500/1091 1/3 20/58

参考资料


相关文章

  • PyCharm 2018 永久激活
    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制.此外,该IDE提供了一些高级功能,以用于 ...
  • Python是什么? Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CPython遵循 G ...
  • 为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在 ...
  • ERP不规范,同事两行泪
    最近的很多次对外交流,都聊到了ERP建设的话题,并且无一例外的不那么让人省心,回想我这么多年走过的ERP坑坑路,在这里也写下经验和总结,希望能给正在或者即将走上ERP建设路的企业一些思考和帮助. 导读 1.几个瞎眼而普遍的案例 2.ERP的 ...
  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • Linux的内存分页管理
    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载   内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存 ...

2020 cecdns.com webmaster#cecdns.com
12 q. 0.081 s.
京ICP备10005923号