Week02-Java基本语法与类库

1. 本周学习总结

字符串的引用类型String不变性,不改变原有对象,生成新的对象。
==比较两个变量存放的地址是否相等,equals比较对象的内容是否相等
自动装箱,自动拆箱。

2. 书面作业

1.String-使用Eclipse关联jdk源代码

1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?

1240
答:通过查看String对象的源代码可以知道String使用数组来保存字符串。
1.2 分析其构造函数public String(char value[])
的作用?
答:public String(char value[])是创造一个新的字符串。

1.3 阅读public String replace(char oldChar, char newChar)
方法的代码,回答String的不可变性在该函数中如何体现?(重点)
答:public String replace(char oldChar, char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的oldChar 都被替换为 newChar 之外,与此 String对象表示的字符序列相同

1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
答:String和字符串数组可以互相转换,String的底层就是char数组。而String可以直接被引用,比较方便。
字符串转换为字符数组char[ ]ch=s.toCharArray();字符数组转化为字符串String str=string.valueOf(c);

2.StringBuilder

2.1 结合PTA 5-2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
答:因为使用String进行修改字符串时会是创建新的字符串,而频繁修改字符串会占用大量的内存,耗费大量时间,而StringBuilde在原字符串上进行修改,不会占用太多内存。

2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
答:
java.lang.StringBuffer.append(char[] str) 方法追加char数组,即str参数为这个序列的字符串表示形式。数组参数的字符追加的顺序到这个序列的内容。这个序列以该参数的长度增加它的长度。
StringBuilder内部使用数据来储存字符。把字符串添加到StringBuilder的后面。

3.字符串与字符串池

3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
答:str1的值为“hi”,则“hi”会存入字符串池,当str2也被赋值为“hi”时,将从字符串池中引用,所以两者地址是相同的,而str3则是new String新建地址,所以这道题的回答是true。

3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?
答:以为使用“==”进行比较时,比较的是两个字符串的地址,而不是他们的值。当两者值相等,但是地址不同时,依然会返回false。而要想比较他们的值就要使用equals。

4.Wrapper(包装类)

4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;
这一串命令中包含了些什么操作?
答:Integer i = 100是进行了自动装箱,将基本类型转化为Integer型。先自动拆箱,再自动装箱。

4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
答:因为java是面向对象,而基本数据类型则不是,所以要想使用基本数据类型,需要进行转换。使用包装类能减少占用内存,方便转换。

5实验总结5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。推荐实施步骤:1.两个人坐在同一台电脑屏幕前判题,讨论、决定大概由谁先写。2. 1个人先编5分钟(自己商量多少分钟),同时另一个人观察对方编程或者查相关资料。3. 5分钟后,简单讨论后,换另外一个人继续编(请一定要换,另一个人如果无法接受应由第一个人讲解大概思路以方便其接受)。并完成如下作业:a.描述结对队友姓名、结对过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。b.结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会(如是否有利于自己编程水平的提高、是否有利于开拓编程思路)。

答:因为自己编程速度比较慢,所以5分钟轮流写的话并不能写多少东西,效率会有点低。但是两人一起结编程的话,确实会好点,如果有些细节没注意到的话,对方能及时发现。

1240

1240

[3N1ESED~ICAWQ]AZD$2%(3D.jpg](//upload-images.jianshu.io/upload_images/7889280-54de62cd758d6312.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

5.2 5-1综合小测验
答:斐波那契数列关键是使用了递归的方法,来实现该函数。sort部分时在处理字符串输入后使用Arrays.sort函数来排序输出。search部分时,需要使用Arrays.binarySearch函数。而最后的身份证号码排序输出,先以substring,得到年月日,再按要求输出。

5.3 5-3身份证排序。并回答:使用sort2
方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
答:首先sort1.储存输入的身份证号码。然后运用substring函数把身份证上面的年月日分别提取出来,再用“-”连接变成“年-月-日”最后输出。sort2也需要先提取身份证的年月日,再需要进行排序。最后按年月日输出。

5.4 5-4动态数组
答:本题需要采用二维数组的方式,因为格式的要求所以输出时会比较麻烦。在打印完乘法口诀表后再使用Arrays.deepToString打印二维数组中的内容。

5.5 (重点:小测题目)5-8ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
答:在ArrayList入门这道题中,需要实现的步骤很多,要用到ArrayList相关的函数,如:Add方法用于添加一个元素到当前列表的末尾 AddRange方法用于添加一批元素到当前列表的末尾 Remove方法用于删除一个元素,通过元素本身的引用来删除 RemoveAt方法用于删除一个元素,通过索引值来删除 RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除 Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动 InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
数组的长度不可修改,但ArrayList的容量可以增加,在知道数据量时使用数组,不知道的情况下使用ArrayList。

5.5 选做:5-5(浮点数计算), 5-6(枚举), 5-7(大整数相加)

选做:公交卡里应该还有多少钱?请分析原因[图片上传中。。。(1)]

选做(难):package与javac、 java、 -classpath、 -d与Eclipse在 com.ibm
包中编写 StringUtil类,内有一方法public static void foo1(){ System.out.println(StringUtil.class+" method:foo1"); }
在edu.jmu
包中编写Main类,调用com.ibm.StringUtil的foo1方法。7.1 尝试用命令行进行编译并运行,截图在edu.jmu
包中编写Main类,其中掉了com.ibm.StringUtil的foo1方法7.2 将生成的StringUtil.class放到d:\lib下正确的目录结构下,将Main.class放到d:\test下正确的目录结构,尝试在命令行下运行,并截图。7.3 Eclipse中自己编写的源代码放在哪个目录、class文件放在哪个目录(给出绝对目录)?在Eclipse项目中按一下Ctrl+F11
就可以直接运行Main,当按下Ctrl+F11时,到底在哪个目录下执行了什么样的java命令?参考资料:
PPT中"8. 类管理机制:包"

3. 码云及PTA

3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

1240

3.2 截图题集“Java基本语法”PTA提交列表

1240
3.3 使用老师发的jar程序统计每周的代码量

001.png
注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt

转载于:https://www.cnblogs.com/wwhh/p/7582090.html