201621123051《Java程序设计》第二周学习总结

1.本周学习总结

第二周开始接触并了解Java的数据类型,了解了拆箱装箱

  • boolean型取值只有ture和false。
  • 字符串类型String,具有不变性,例如String x=“123”;x=x+“456”,那生成的新对象就是“123456”。
  • 包装类,Java面对的是对象,基本类型都有对应的包装类。例如int对应的包装类是Integer,char对应的包装类是Character等等
  • 自动装箱,就是把基本类型转换成其对应包装类,这样写法方便,这种语法就叫做自动装箱。
  • 自动拆箱,相反把包装类换成基本类型就是自动拆箱。
  • 一维数组,要用new分配内存空间,并为每个数建立默认值。
  • 多维数组。

2.书面作业

2.1String-使用Eclipse关联jdk源代码

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

答:

  • 使用动态分配内存来储存。

2.1.2分析其构造函数public String(char value[])的作用?

答:传入char数组,生成String对象。

引用百度知道

2.1.3阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)

答:字符串已经生成,对它做任何修改只会生成新的字符串,对原先定义的字符串是没有影响的。通过newChar替换此字符串中出现的所有oldChar得到的字符;实现这一替换函数的实质还是创建一个新的String对象,进而实现替换功能,原先的对象内容依旧存在,由此体现String的不可变性

2.1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?

答:String和字符数组都是存放字符的结构。

  • String使用后,可以让它释放内存,节约空间。

2.2 StringBuilder

2.2.1结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?

答:因为String具有不可变性,而StringBuilder是一个可变序列。

2.2.2阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?

  • 功能是结尾追加制定对象的字符串表示形式。
  • 用参数存放字符。
  • 先使用 String.valueOf(char[]) 方法将参数转换为字符串,然后将所得字符串的字符追加到此字符序列。

引用百度

2.3字符串与字符串池

2.3.1尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:

String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
答:结果是true,创建了2个字符串对象。

2.3.2重点:对基本类型我们可以使用比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用比较?应该怎样比较他们的值是否相等呢?。

答:引用类型是储存地址,不能用==比较。应将它们存在空间然后比较。

2.4 Wrapper(包装类)

2.4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?

答:这个是自动装箱可以赋值,包含了自动装箱和自动拆箱。

引用百度

2.4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?

答:因为如果用基本语句会显得代码很多,很麻烦,用包装类就方便简洁多了,看起来也 舒服。

2.5实验总结

2.5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。

答:
在编程过程中,难免会遇到七七八八的问题,而且都是自己没见过的,多一个人多的不仅是一个人的智慧,自己还能有所建议,就能达到1+1大于2的效果。
合作人:刘兵

2.5.2 PTA-1综合小测验

-感觉和之前学的c对比,除了语句的不一样,编写的函数上字符串数组可以转变成整型的数组,答题的时候还应注意参数。

2.5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?

答:可以通过选择排序法SelectSort(RecType R[ ], int n).来解决排序的问题,这个实验里面的两个for循环的理解能力还不够透彻,后面通过询问同学才写这个循环,才完成了这次实验,在单for循环中是比较好理解的,双for中还要多加练习,所以去看了之前c中一些双循环的语句也多了解了很多,还吃透了时间复杂度等问题。

2.5.4 PTA-4动态数组

答:遇到不理解的地方还是那两个for循环语句,现在在看一遍发现明白了许多,对于排序问题还是没能够完美的解决,百度问同学才勉强知道了一丢丢的解决方法,还不是消化的很好,平时应该多花时间在这一块。

2.5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?

使用ArrayList了以后,灵活地改变了容量长度,让系统的空间得到了很大的利用,大大减少了空间的浪费。对于代码的编译能力还是相对薄弱,长一点的代码就很困难,也是在同学的帮助下完成的,第三周应多花时间打代码。

3. 码云及PTA

3.1码云代码提交记录


3.2 截图PTA题集“Java基本语法”完成情况图

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

|行数|新增行数|文件数|新增文件数|
:---😐:---😐:---😐:---😐:---😐
|311|311|51|51|#

PS.由于电脑问题,上网,版本等等,所以码云的作业不能完成,情况在上周的时候就跟老师讲好了 ,谢谢!

posted on 2017-09-24 18:59  Asion.不渝  阅读(199)  评论(2)    收藏  举报