20172328《程序设计与数据结构》第三周学习总结

20172328李馨雨《程序设计与数据结构》第三周学习总结

教材学习内容总结

  • 1.学习使用new运算符建立对象(即实例化),了解null空引用。具体体悟 :类和对象的关系。
  • 2.对象引用变量的声明和初始化。用"."来引用方法,并且需要保留()。
  • 3.了解String类的一些基本方法和标准类库java API。
  • 4.除了在java.lang中的变量无需import声明,其他都需要import声明(简化类的多次引用)。
  • 5.了解和使用Random类和Math类。
  • 6.理解格式化输出中NumberFormat类和DecimalFormat类和printf方法。
  • 7.特殊的枚举型数据类型,枚举型是一种特殊的类,枚举型变量是对象变量。(这点特殊在编译代码时让我发现编译好的class文件名中多了$变量名)。

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

  • 问题1:什么是空引用?
  • 1.(〃‘▽‘〃)本题解答:当时的回答是“一个对象中所有的引用都丢失了”,后来发现自己混淆了别名和空引用两个概念。

    先来讲我当时最迷糊的一个概念:对象变量保存的不是数值,而是地址。赋值语句实际上是复制地址。这时就可以来讲讲别名了。

    别名:就是两个名称不相同的变量,其所包含引用的地址都是相同的,这是它们两个就成了别名,当一个对象的所有引用都丢失后,就再不能为程序所用,也就是永久丢失。

    空引用:

    可以将一个对象变量设置为null,null是java的保留字,专门用于表示该变量不指向任何对象。

    在Java中,对象往往包含属性、方法及一个存储空间,若一个对象的属性和方法是空的则可认为这是一个空对象。一个空对象也是对象,同样通过对象名引用方法或属性,但和一般对象有点不同。(本篇博客最后有链接,比较详细)

  • 问题2:类和包究竟有什么关系?public类具体是修饰什么的,为什么当其存在时文件名与其所修饰的类要相同?
  • 2.(〃‘▽‘〃)本题解答:刚开始真的真的很不理解。去查阅了一下,得如下结果。

    java包是一个相关类的集合。包相当于模块,类相当于模块下各个功能的实现。包(package)相当于姓名中的“姓”,类(class)相当于“名”。所以在调用某类方法 的时候,不仅需要指明方法所在的“名”,即类,还要指明方法类所在的“姓”,即包。这样编译器才知道你调用的方法是哪一个。

  • 问题3:看到Math类方法和 java.math包,但是却不理解为什么在例3.3时不声明math包就直接使用。
  • 3.(〃‘▽‘〃)本题解答:最后重新理解发现是:Math类其实在java.lang包中,我试了一下用import声明的,如下图:

    删掉import java.math后的;

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

  • 问题1:很容易忘记引用方法时后面加()。(忘记截图了)
  • 1.(〃‘▽‘〃)本题解答:很多次这样的错误,需要进一步细致理解。
  • 问题2:主目录下编写、编译、运行java文件。
  • 2.(〃‘▽‘〃)本题解答:在主目录下编写,例:vim src/第三周/java_homework_week3/pp3_4.java,在主目录下编译并将class文件放入bin目录。例:javac -d bin/第三周 src/第三周/java_homework_week3,在主目录下运行java文件。例:java src/第三周/java_homework_week3

代码托管

上周考试错题总结

  • 问题1: What value will z have if we execute the following assignment statement? float z = 5 / 10; (如果我们执行下面的赋值语句,得到的z将会是什么值?)

    A . z will equal 0.0 (z将等于0.0)

    B . z will equal 0.5 (z将等于0.5)

    C . z will equal 5.0 (z将等于5.0)

    D . z will equal 0.05 (z将等于0.05)

    E . none of the above, a run-time error arises because z is a float and 5 / 10 is an int (以上都不对,因为z是float类型,5 / 10是int类型,所以会发生运行时错误)

  • 问题1分析和领悟:这道题没有认真分析,其实很简单。因为5和10是整型变量,所以进行除法运算时就会按照整形变量即int型变量进行计算,然后再进行赋值型提升转换,变成0.0.故选择B.
  • 问题2:A cast is required in which of the following situations? (下列哪种情况需要强制转换?)

    A . using charAt to take an element of a String and store it in a char (使用charAt来获取字符串元素并将其存储为char类型)

    B . storing an int in a float (将一个int类型的数存储为float类型)

    C . storing a float in a double (将一个float类型的数存储为double类型)

    D . storing a float in an int (将一个float类型的数存储为int类型)

    E . all of the above require casts (以上所有情况都需要强制转换)

  • 问题2分析和领悟:A答案中charAt执行后其字符就是一个,因此储存为char类型没问题。而B与C答案中都是增大了储存容量,因此也没问题。只有D答案中是由float变为int即大变小,因此需要强制转换。故选择D。
  • 问题3:If x is an int and y is a float, all of the following are legal except which assignment statement? (如果x是一个int类型的数,y是一个float类型的数,下面所有赋值语句中哪个不合法?)

    A . y = x;

    B . x = y;

    C . y = (float) x;

    D . x = (int) y;

    E . all of the above are legal (以上全部合法)

  • 问题3分析和领悟: 和第二个错误问题一个原因,归根结底还是自己理解的不够透彻。现在选择很明显,A为提升型转换,C和D为强制型转换。
  • 问题4: What is output with the statement System.out.println(""+x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(""+x+y);的输出是什么?)

    A . 15

    B . 105

    C . 10 5

    D . x+y

    E . An error since neither x nor y is a String (因x和y都不是字符串而引起的一个错误)

  • 问题4分析和领悟: 这个题纯属平时不注意而犯的错。完全懂得两个数字不会相加。“+”起到的是连接符的作用。但是选择了C答案!错误就是在+x+y之间是没有空白符的,也就是说输出后两个数值之间没有空格,之前在练习书本上的示例和作业时,一直使用+ x + y;这样出来的两个数字是有空格的。
  • 问题5: If you want to store into the String name the value "George Bush", you would do which statement? (如果你想把"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 . Any of the above would work (上述都可以完成)

  • 问题5分析和领悟: 这个错误后来在第三章进行了了解,上述几条其实都可以达到。
  • 问题6: Java is a strongly typed language. What is meant by "strongly typed"? (Java是一种强类型语言。“强类型”指的是什么?)

    A . Every variable must have an associated type before you can use it (在使用变量之前,每个变量一定都有一个与之关联的类型)

    B . Variables can be used without declaring their type (变量可以在不声明其类型的情况下使用)

    C . Every variable has a single type associated with it throughout its existence in the program, and the variable can only store values of that type (在程序中,每个变量都有一个与之关联的类型,而变量只能存储该类型的值)

    D . Variables are allowed to change type during their existence in the program as long as the value it currently stores is of the type it is currently declared to be (变量存在于程序中时允许改变类型,只要它当前存储的值是当前声明的类型)

    E . Variables are allowed to change types during their existence in the program but only if the change is to a narrower type (变量存在于程序中时允许改变类型,但只能缩窄转换)

  • 问题6分析和领悟:其实错了这道题后我还是没有理解,看到解析。 The reason that strong typing is important is it guarantees that a program that was successfully compiled will not have run-time errors associated with the misuse of types for the variables declared.我姑且翻译一下:强类型很重要的原因是它不会误用已经声明了的类型的变量,保证了程序正常编译而不会运行出错。(在程序中,每个变量都有一个与之关联的类型,而变量只能存储该类型的值),B答案比较合理。
  • 问题7:In Java, ‘a‘ and ‘A‘ are considered to be different values. (在Java中,‘a‘和‘A‘被当成不同的数值)

    A . true

    B . false

  • 问题7分析和领悟: 当时选错是因为认为a和A都是变量的话可以进行赋值,当我赋予相同的数值之后,就是相同的。后来经过仔细查看,原来题目中‘a‘和‘A‘表示的是字符,当其输出时, ‘a‘ and ‘A‘ 有不同的ASCII 码值 和 不同的 Unicode编号。

本周想说(感悟、思考等,可选)

这周学习效率很差劲,甚至可以说基本没有很大的进步,可能是状态不太好。这周的学习内容更加具体丰富,类、对象、包、方法通通上场,刚开始阅读教材时总有一种看完合上书什么都不知道的感觉,这种感觉让人很难受。还有就是要形成一个具体的知识构架很不容易,常常在小知识点上卡壳,往往让我怀疑自己的理解力。还有最深刻的一个道理,不要拉下太多,任务量永远是越攒越多,堆到后面会特别辛苦的赶。从这周开始。java语言的学习已经很明显的深入和具体了,可能需要更多的投入和坚持。好的,说完了,继续加油!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 100/100 1/1 15/15
第二周 377/477 1/1 20/35
第三周 280/757 1/1 22/57 心有点累,不太好学

参考资料

1.Java中空对象(null)引用方法及属性简单分析!

2.Java开发环境的熟悉

3.java程序设计教程(第八版)

原文地址:https://www.cnblogs.com/LXY462283007/p/8630412.html

时间: 2024-10-18 17:54:53

20172328《程序设计与数据结构》第三周学习总结的相关文章

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20182327 2019-2020-1 《数据结构与面向对象程序设计》第二第三周学习总结

20182327 2019-2020-1 <数据结构与面向对象程序设计>第二第三周学习总结 教材学习内容总结 在第二章的学习中,首先学习了Java编程的基本格式,然后学会了定义.赋值.使用各种数据类型的变量,可以独立打印数据到屏幕上,最后掌握了如何使用Scanner类的一般使用方法. 从第三章中,我学到了由String.Math.Random等类创建对象(即实例化对象),如果要使用Java.long包以外的类,要使用import声明,最后枚举类型,包装类没有看懂. 教材学习中的问题和解决过程

《数据结构与面向对象程序设计》第二、三周学习总结

目录 20182319 2019-2020-1 <数据结构与面向对象程序设计>第二.三周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 评分: 点评过的同学博客和代码 其他(感悟.思考等,可选) 学习进度条 20182319 2019-2020-1 <数据结构与面向对象程序设计>第二.三周学习总结 @ 教材学习内容总结 ??这两周主要学习的是对于数据的类型以及输入输出的学习和对于几个常用的类的学习. ??首

20172304 《程序设计与数据结构》 第二周学习总结

20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合可以分为两大类线性集合和非线性集合 线性集合:其元素按直线方式组织的集合. 非线性集合:其元素按某种非直线方式组织的集合.例如按层次结构或按网状结构. 3.1.1抽象数据类型 集合十一找给你隐藏了实现细节的抽象 数据类型:一组值及作用于这些数值上的各种操作. 抽象数据:类型(Absttract Data Ty

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

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

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

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

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

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

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

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav