zoukankan      html  css  js  c++  java
  • 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 声明的简便。

    • 问题1解决方案:书P80

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

      所以我们应该输入:

      import java.util.*;

    • 问题2:有关例3.5:
      DecimalFormat fmt = new Decimalformat("0.###");

    • 问题2解决方案: 编写了一个test程序。

    • 问题3 : 博客园博客markdown格式问题。

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

    代码托管

    上周考试错题总结

    • 下列哪种情况需要强制转换? 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

    参考资料

  • 相关阅读:
    栈区,堆区,全局区,文字常量区,程序代码区 详解
    2010年IT行业十大收购
    三大数据备份方式:完全备份、增量备份以及差异备
    Driver Development Part 1: Introduction to Drivers (code project)
    手工构造典型PE文件(转)
    访问IIS元数据库失败[转]
    代码注入的三种方法(转)
    对象的初始化(转)
    网络和黑客编程基本知识 (转)
    破解linux中root密码(图) 转自csdn
  • 原文地址:https://www.cnblogs.com/gk0625/p/8635798.html
Copyright © 2011-2022 走看看