java第二次作业
1. 本周学习总结
1.学到了java的两种数据类型:基本数据类型和引用数据类型。
2.自动装箱和自动拆箱
3.懂是懂了,可是一看到代码又是一脸懵逼。
2. 书面作业
1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?

String是使用char数组来存储字符串的。
1.2 分析其构造函数public String(char value[])的作用?
该函数的作用是通过char数组,生成String字符串对象,接口中的参数是一个char数组。.>百度
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
String并未改变原来指向的字符串内容,而是生成新的对象。
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
使用String更为方便,且节约空间。
2.StringBuilder
2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
因为String是不可变的,频繁修改字符串时,将会在内存中产生大量String对象,消耗大量的时间占用大量的内存。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
java.lang.StringBuilder.append(char c) 方法char参数的字符串表示形式附加到这个序列。参数将被追加到这个序列的内容。这个序列的长度增加1.>百度
StringBuilder内部是使用char数组来存放字符。
3.字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
str1和sstr2指向的对象一样 所以输出true。创建了两个字符串对象,str1和str2属于一个,str3属于一个。
3.2 重点:对基本类型我们可以使用比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用比较?应该怎样比较他们的值是否相等呢?
比较两个值是否相等要用equals,比较两个变量存放的地址是否相等用的才是==。
4.Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
用了自动装箱。包含了自动装箱自动拆箱。
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
Java是一个面相对象的编程语言,基本类型并不具有对象的性质,而包装后就具有对象的性质,且增加了属性和方法,丰富了基本类型的操作。
5.实验总结
5.1感受

因为自身基础较差,所谓合作,其实就是单方面被教,我的代码都是在他人的帮助下完成的。特别是身份证的那题,我有自己思路,但是就是不会打代码,最后还是用韵涛教我的思路做的,我觉得,一个人不会在那查百度,花费时间多不说,还不一定能看懂,有同学一起合作就方便多了,他可以用更为容易理解的方法来帮我,方便我理解。由于我们之间差距较大,我从他那获益得更多。
5.2 PTA-1综合小测验
该题主要是用到了substring() 方法,substring() 方法可以用于提取字符串中介于两个指定下标之间的字符。
5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
这一题需要用到上一题的字符串截图,将身份证号码的第七位到第十四位截取下来进行比较,这题我不会,但是我自己有一个大概的思路,就是把截图的下来的八位字符转化成int型,再直接比较大小,进行排行。以下是韵涛教我的思路:将身份证上出生日期的那段截取下来,放在一个数组里,用sort函数排序,再将排序后的第一个与身份证号码上的生日位置比较,如果相符,就将那个身份证号码输出,以此类推。
5.4 PTA-4动态数组
这题要用二维数组,采用双重循环的方法来存储数据,再通过System.out.println(Arrays.deepToString(str));打印二维数组。这题看起来很简单,感觉跟C++的99乘法表差不多,可用java语言坐下去又觉得很难懂,可能是我自己本身基础差的原因吧。
5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
因为ArrayList是动态的,长度可以改变,里面元素也可以改变,更为灵活。
3. 码云及PTA
3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图
3.2 截图PTA题集“Java基本语法”完成情况图


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

| 行数 | 新增函数 | 文件数 | 新增文件数 |
|---|---|---|---|
| 272 | 272 | 183 | 183 |
注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt
需要将每周的代码统计情况融合到一张表中。
浙公网安备 33010602011771号