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 |