1.本周学习总结

本周学习了JAVA中的引用类、包装类(学习了一种语法:自动装箱)和数组(遍历数组的新方法foreach循环)。

2. 书面作业

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

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

数组数组来存储字符串

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

建立新的字符串数组,表示当前所包含的字符串,这样字符数组后面修改也不会影响新建的字符串。

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

newChar创建了一个新的字符串数组,之后替换到新的数组中,实际上就创建了一个新的String的对象,所以并没有直接修改。就体现了它的不可变性。

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

String是有字符数组进行存储。String更为灵活方便,因为当你输入一堆字符串时,如果要使用数组,后面需要修改时,数组大小已经固定,太长会发生错误,太短会导致空间浪费,但是如果使用String类型它会通过自己输入的字符大小改变数组的大小,更为灵活。

2.StringBuilder

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

  • String改变字符串时,每次修改都会生成新的串,导致空间的浪费
  • StringBuilder是直接对之前的字符串进行修改。

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

  • append(char[] str)用来在原来的字符串上进行添加功能。
  • 内部使用字符串数组存放字符
  • 调用StringBuilder的append(char[] str)方法时:字符串→字符数组→添加到StringBuilder对象

3.字符串与字符串池

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

String str1 ="hi", str2="hi";`` String str3 = new String(str1) System.out.println(str1==str2);

输出结果为:ture
str1 ="hi"进行时候,hi作为字符常量在字符串池中查找,如果没有就创建,如果有就直接调用。所以当 str2="hi"进行的时候能够在字符串池中找到,对象是相同的,所以结果显示true.

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

  • 引用的对象和类型不同、地址不同所以即使值相同系统也是错误
  • 可以用equeals()比较

4.Wrapper(包装类)

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

  • 用到自动装箱、自动拆箱。
    将基本数据类型自动转换对应的对象。即Integer i = Integer.parseInt(100);
  • 自动装箱、自动拆箱再装箱。

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

  • 基本数据类型不是面向对象转换麻烦。有了包装类可以让我们使用JAVA时更方便的实现基本数据的转化。

5.实验总结

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

合作对象:林俊伟 合作题目:综合小测验
我觉得对于两个人的合作是一件比较好的事情。对于我来说哈,因为我的基础不行,有时候思路不是很开阔,有一个能够帮你解析题目,分析代码的人能够帮助学到更具体的知识。但有时候我们想法不一样所以需要调解分析哪个方法更好一些,我觉得这样可能可以总结出更简单易懂方便的代码。

5.2 PTA-1综合小测验

  • fib用递归写斐波那契
  • sort的值存入数组然后用Arrays.sort()输出
  • 用str.substring()取时间

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

  • 主要利用冒泡法进行对对出生年月日的排序;
  • 寻找年月日对应的数字位置存入数组
  • 数组元素→字符串→int→比较

5.4 PTA-4动态数组

将乘法表存入一个动态数组(for双循环)

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

按照文档中ArrayList用法即可
ArrayList是动态数组。可以增加和减少元素大小也可以改变

3.码云及PTA

3.1. 码云代码提交记录

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

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

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

|周次|总代码量|新增代码量|总文件数|新增文件数|
:---😐:---😐:---😐:---😐:---😐:---😐:---😐:---😐:---😐:---😐:---:
|2|207|207|4|4|

posted on 2017-09-23 16:34  PuLangTian  阅读(171)  评论(3编辑  收藏  举报