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

20172308 2017-2018-2 《Java程序设计》第三周学习总结

教材学习内容总结

这一章给自己最大的感受就是,突然多了很多方法,在不同的类下面,引用的方式和方法调用有不同,容易混淆和忘记。

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

  • 问题1:对于String对象,无须显式的使用new运算符及调用构造方法来创建对象,即String *** = new String("###");。大多数情况下,使用这种简化语法:String *** = "###"
    问题就是这两种没有区别吗?

  • 问题1解决方案:在老师发布的蓝墨云班课资源中看到:显式的使用new,语句中则有两个变量,new和字符串。无显式则只有一个对象字符串。

  • 问题2:一旦创建了String,该对象的长度就不可更改,并且也不能修改对象中的任何一个字符。

  • 问题2解决方案:从百科和蓝墨云理解这句话:首先,字符串是对象。字符串最大的特点就是,一旦被初始化就不可被更改。但是,String类适用于描述字符串事物,提供方法对字符串进行操作,可以返回新的String对象,这些新对象是对原对象字符串值修改的结果。

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

  • 问题1:在用IDEA从码云更新到本地之后,编了这一章的课后习题,其中一题的调试截图如下:

    程序是可以正常运行的,但是声明变量的那一行总是显示找不到代码。

  • 问题1解决方案:我现在觉得这倒是小问题了,毕竟还能运行,但是,当我把本地push到码云之后,再从linux里pull了之后,就出现了问题2的令人绝望的操作。

  • 问题2:首先,我发现了我在bin目录下的目录chapter3里又多了一个目录chapter3。后来我把它删了,用了如图命令将class文件产生在chapter3目录里:

    于是它就自动给我在目录chapter3中产生了一个新的目录chapter3并把文件放进去。

  • 问题2解决方案:
    于是我把命令javac -d /home/joy/Homework/bin/chapter3 Eg34.java中路径的chapter3去掉了,问题是解决了,可是问题又变成它是怎么知道我要把文件放在bin目录下的哪个文件夹里的呢?
    后来我又尝试编译了一个程序(依然是去掉路径里的chapter3),结果是如图:

    它又自动产生了一个相同的文件夹并把文件放进去。不过好在是可以编译了。令人窒息的是问题3。

  • 问题3:虽然编译是有点问题,但运行是根本一头雾水。因为根本不明白,如图:

    从第一行开始,为了方便准确,我直接在存放class文件的文件夹下运行程序,而结果是“找不到或加载不了主类”。

  • 问题3解决方案:很明显相应的文件是存在的,而我也做了如上图的尝试,进到chapter2并成功运行了里面的文件。最后得出的结论是只有第三章做的程序无法运行。

  • 问题4:苦于上述问题没有得到很好的解决,于是将所做修改上传到了码云,在IDEA端pull失败,如图:

    然后再次打开第三章的程序,出现了和Linux上一样的情况,如图:

    程序在此之前还是可以运行的,现在都不行了。

  • 总结:这周的程序都是用的IDEA写的,出现的这些问题我认为都不是编程中的错误,毕竟之前是有成功运行的,那问题可能就是出现在IDEA上,相关的设置和功能还不是很清楚,相信下一周就能够得到解决,循序渐进,先在这里记录下问题。

-【更新】以上问题都已解决,原因如图:

路径当时多写了一级,更改之后就可以正常用了。

代码托管


在终于明白了文件目录src和bin怎么放之后,这个代码统计的脚本统计的结果就变少了。

上周考试错题总结

  • 错题1:
    Consider the following statement:
    System.out.println("1 big bad wolf\t8 the 3 little pigs\n4 dinner\r2night");
    This statement will output ________ lines of text (思考下面的语句,该语句将输出___行文本)
    A .1
    B .2
    C .3
    D .4
    E .5
    原因:\n导致产生一个新行。转义序列\r使回车返回(也就是说,光标移回到左边缘),但是没有开始新的行。

  • 错题2
    Of the following types, which one cannot store a numeric value? (在下列数据类型中,哪一个不能存储一个数值型数据?)
    A .int
    B .byte
    C .float
    D .char
    E .all of these can store numeric values (以上所有类型都可以存储数值型数据)
    原因:字符存储一个字符,包括字母、标点和数字。然而,存储数字“5”与存储数字5不一样。

  • 错题3:
    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都不是字符串而引起的一个错误)
    原因:这里的x和y是变量,存储着数值,“+”起的是加号的作用,不是连接符。

  • 错题4:
    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 (上述都可以完成)
    原因:有两种方法可以将字符串存储为字符串变量,通过使用“new string (string value)”构造一个新字符串,或者使用赋值语句,因此A或B都可以工作。在C和D中,字符串连接操作符+的变体。所以这四种方法都行得通。

  • 错题5:
    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类型。)
    A .true
    B .false
    原因:没有任何机制可以,但有方法可以执行类似的操作,并返回一个字符在一个给定的位置(charAt)或返回int。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 309/309 1/1 20/20
第二周 269/578 1/2 18/38
第三周 236/776 1/3 22/60

参考资料

posted @ 2018-03-25 13:31  20172308周亚杰  阅读(210)  评论(5编辑  收藏  举报