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

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

教材学习内容总结

  • 学到了变量的声明与初始化,例如String xxx;声明了一个变量名为xxx的类String的变量;null表示初始化引用为空;同时,String类是java.lang包的一部分,会自动导入到java程序中,每当出现字符串常量时会自动建立String对象,无需使用new运算符。
  • 对于别名,多个引用变量可以引用同一对象,当利用一个引用改变其所指的对象时,同时也使作为别名的所有引用指向的对象发生了改变。
  • import声明为编写java程序时,使用非java.lang包中的类时的引用。使用了import声明之后,在程序中使用类时,不必每一次引用都写出完整的包名类名,而可以省略包名,只写类名。
  • Random类用来产生随机数,Math类提供了计算的基本数学函数,NumberFormat类和DecimalFormat类用于格式化信息。
  • Printf方法,使系统的移植更容易,支持遗留系统的移植。

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

  • 问题1:教材SR3.6的c项,s1,s2,s3的初始值分别是Amanda、Bobby、Chris,则System.out.println(s2.replace('B', 'M');改变了哪些变量?

    解决:我认为改变了s2,由Boddy变成了Mobby,但答案是没有改变变量。我觉得就应该改变的,与书上的例题使用方法一样,所以我就搞不明白为什么了。

  • 问题2: 课本例3.1中
    Mutation #3: CHANGX IS INXVITABLX, XXCXPT FROM VXNDING MACHINXS
    mutation4 = mutation3.substring(3, 30);
    输出的Mutation4为:
    Mutation #4: NGX IS INXVITABLX, XXCXPT F
    不明白为什么,我数了好多次,都对不上。
    解决:字符的索引从0开始,(3, 30)表示从第四个字符到第29个字符,之前搞不明白的原因是忘记从0开始,数第29个字符时从1开始数的...

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

  • 问题1:在做pp3.3时,我的程序如图,

    多次运行后得到的前三位随机数总是只有两位,

    但是在最后的num1前加上一段字符串“Tel”后,就可以输出三位数了。

    解决:我觉得前面加不加字符串是没有影响的,我也没有找到有关这样的规定,但我试验多次都是两位,难道是碰巧实验的几次第一个数都是零省略了?我觉得不会有那么巧。但它就是这样子 ̄へ ̄

  • 问题2:在做pp3.8时,显示错误如图,

    但我不明白为什么。
    解决:括号中不应该有String.in,那是针对Scanner类的,表示标准输入流,而在Random类中不用。

  • 问题3:
    public class Test {
    public static void main(String [] args) {
    int x = 5;
    int y = 2;
    int a=5,b=4,c=3;
    System.out.println(x+y+"K");
    System.out.println("abc"+a+b+c+3); }
    }
    结果是: 7K ; abc5433
    解决:第一个输出x+y+"K" :从左到右先计算x+y,结果为7是int类型,这里的"+"号是计算符号,而后“+”号是当字符串连接符号处理所以最后int的7和string类型的“K”连接后生成新的string,“7K”
    第二个输出“abc”+a+b+c+3 :也是从左到右计算,因为“abc”是字符串,而后跟“+”号是当字符串连接符号处理,所以是“abc5433” ,其后的“+”号都当成了字符串连接符号 。
    总之,当“+”号前后有字符串出现时,就当做字符串连接符号处理了

代码托管

上周考试错题总结

  • 错题一:Of the following types, which one cannot store a numeric value? (在下列数据类型中,哪一个不能存储一个数值型数据?)char
    分析:整数和字节用于存储整数(整数)和浮点数,用于存储一个实数或浮点值(带有小数点的值)。char存储一个字符,包括字母、标点符号和数字。但是,存储数字“5”与存储数字5不一样。

  • 错题二:Which of the following is true regarding the mod operator, %? (关于求余运算符%,下面哪项是正确的?) It can be performed on any numeric values, and the result always is numeric (它可以执行任何类型的数值,其结果始终是数值)
    分析:在看到这道题目时,由于我只见过整数进行求余运算,便觉得应该是只执行Int类的,并且结果也是Int类的。但实际上,他在大多数情况下是用于Int类的计算,但它是可以执行任何类型的数值。

  • 错题三:Assume that x, y, and z are all integers (int) equal to 50, 20, and 6 respectively. What is the result of x / y / z? (假设x、y和z都是整型数(int),分别等于50、20和6。那么x / y / z的结果是什么?) 0
    分析:这道题我知道计算结果是0,但我选择的是A run-time error because this is a division by 0 (由于除0产生的运行时错误),这道题的运算顺序是从左到右,50/20=2, 2/6=0;其中没有除0,错的原因是做题不认真。

  • 错题四: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);的输出是什么?)15
    分析:我认为答案是输出105,但是后来得知,这里没有“”,所以x+y被当做字符串来输出,就是输出x+y的值15;如果是输出105的话,()中须有“”这样+会被当做字符串连接。

  • 错题五:If you want to store into the String name the value "George Bush", you would do which statement? (如果你想把"George Bush"这个值存储为字符串类型的名字,你会执行那条语句?)String name = "George Bush"; String name = new String("George Bush"); String name = "George" + " " + "Bush"; String name = new String("George" + " " + "Bush");均可
    分析:首先String类可以省略new运算符,故前两者均可,其次使用连接符是等同的,并没有产生差别。

  • 错题六:You cannot cast a String to be a char and you cannot cast a String which stores a number to be an int, float or double. (你不能将字符串强制转换为char类型,也不能将一个字符串强制转换为int、float或double类型。) true
    分析:没有任何机制可以将字符串转换为原始类型之一,但是有一些方法可以执行类似的操作,并在给定的位置(charAt)返回一个字符,或者返回int、float或double值,该值等价于存储在字符串中的数字。

  • 其他:The values of (double) 5 / 2 and (double) (5 / 2) are identical. ((double) 5 / 2和(double) (5 / 2)的值是相同的。) false
    分析:前者先将5变为double型即5.0,然后除2,结果为2.5;后者先5/2,因为5和2都是Int型,结果为2,将其换为double型即为2.0,所以两者答案不同。

其他

这周在代码的编译运行方面没有什么较大的问题,还有就是自己的代码量太少,平时需要多下功夫。我感觉我还是没有很透彻的理解一些基础概念,有点混乱,模模糊糊的理解,有些地方不知道为什么要加一些东西,有些地方又不用。平时看代码的话,看着容易理解,但是合上书自己就什么也不知道了...(▼ヘ▼#)。然后还有我发现我总是在一些找不到答案的问题上有问题,比如上述的种种...代码调试的第二个问题好不容易在网上找到解答,他却是这样说的

哪些不需要哪些需要。。。。真是不好回答你啊,人家构造方法需要的你就给呗,类是模板,是对你所要操作的东东的一种封装,现在你可能有点难以理解,你就照着书上的写类,会用就可以了,以后会理解的

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 93/93 1/1 20/20
第二周 305/398 1/1 20/38
第三周 328/651 1/1 25/38
posted @ 2018-03-23 23:59  FYiW  阅读(217)  评论(8编辑  收藏  举报