第二次作业

1. 本周学习总结

  • Java的数据类型
    包括布尔型(boolean)truefalse;整型byteshortint;浮点型floatdouble
  • Java中的引用类型
    包括数组,类,接口,null类型
  • Java语言基础
    包括整型常量的应用,char型的应用,浮点型的应用,还有应用变量的要求和用法,各种计算机运算符和运算方法;Wrapper(包装类)的使用

2. 书面作业

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

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

  • String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能
    再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的(immutable),使用来存储字符串。

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

  • String类的构造函数,生成String字符串对象,通过char数组,用来从char数组转换为String类,接口中的参数是一个char数组。

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

  • 所谓String的不可变性,是说一旦字符串被创建,对其所做的任何修改都会生成新的字符串对象。

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

  • String和字符数组可以相互转化,我们经常需要将数组转换为String类型,以便进行诸如口令匹配或口令赋值等操作,这时就需要将char类型的数组进行转换,转换成String类型。

2.StringBuilder

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

  • 当我们在创建一个String对象的时候,系统会在内存里开辟出一个空间用来存储我们所创建的String对象。然而当我们去修改所创建String对象的实例时,那么,之前创建的String对象并不会消失。而是从新创建了个对象并在内存中开辟了一段新的空间,包含了你所修改的内容。
    当我们创建了一个String Builder对象的时候,系统同样会在内存中开辟一段空间。但是,当我们对这个对象进行追加、移除、替换和插入时,并不会重新的创建一个StringBuilder包含所修该得内容,而是引用的同一个实例。同时我们注意的就是StringBuilder的容量问题。当我们设置了容量时,那么,值一旦超出了这个容量,StringBuilder的容量会自动翻倍。StringBuilder在被实例后会产生一个容量,此容量要大于或等于值的长度。如果容量小于此值的长度,那么容量会成倍的递增。在递增的同时,也会创建一个StringBuilder的对象,只不过在创建这个新对象的同时所引用的是同一个实例,这就是所谓的“StringBuilder是可改变的”。

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

  • 追加char数组参数到此序列的子数组的字符串表示形式。
  • 内部使用字符数组存放数组

3.字符串与字符串池

3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

  • 输出的是true,字符串常量池直接可以用“”判断两个字符串是否相等。
    **3.2 重点:对基本类型我们可以使用
    比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?**
  • ”用于比较两个引用类型变量存放的引用是否相等,即地址是否相等,引用的地址不同,所以不能使用“”比较;应该使用“equals”比较两个值是否相等,用法a.equals(b)

4.Wrapper(包装类)

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

  • 自动装箱的应用;包含了自动装箱,自动拆箱,自动装箱和自动拆箱。
    4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
  • 包装类即使把基本类型变成对象类型,基本数据类型变为对象的好处:取值范围变大;对象包装类的好处:可以将基本数据和字符串之间进行互相转换。

5.实验总结

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

  • 队友:郭启鹏
  • 这样合作使代码的正确率提高了很多,出现错误可以两个人一起解决,使解决问题的速度和质量得到了提高,这样也降低了编程的难度,毕竟两个人的力量要强大一点,这让我懂得合作很重要。
    5.2 PTA-1StringBuilder
  • 用到了Scanner,还会使用到截取和拼接字符串;得到身份信息用函数String.substring对数组中的信息进行获取。
    5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
  • 这道题也有用到字符的截取,还有字符的比较;利用String和Array两个类对数组进行数据处理,要降序的话,直接在输入时逆序就好了。
    5.4 PTA-4综合小测验
  • 是对多维数组中不规则数组应用;利用switch函数对fibsortsearchgetBirthDate进行选择应用,还有Arrays,String这两个类。
    5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
  • 是关于ArrayList入门操作的一道题,使用add进行对数组添加元素,remove用来删除数组中的元素,get获取元素,size返回数组元素中的个数等等。
  • ArrayList是动态数组,可以动态的增加和减少元素,更灵活的控制数组。
    5-5(浮点数计算)
  • 输入的字符串如果想要精确一点,可以使用BigDecimal类来更精细的计算。

3. 码云及PTA

3.1. 码云代码提交记录

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

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

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


周次 总代码量 新增代码量 总文件数 新增文件数
2 57 57 4 4

posted on 2017-09-23 00:28  网络1613冯一  阅读(175)  评论(1编辑  收藏  举报

导航