• 201621123060《JAVA程序设计》第二周学习总结


    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|

  • 相关阅读:
    CSS网站变灰
    长列表优化之滚动替换数据方案小记
    JS把数组中相同元素组合成一个新的数组问题
    yahoo CSS reset
    IE调试网页之三:使用 F12 工具控制台查看错误和状态 (Windows)
    KMP算法的JavaScript实现
    Android系统版本SDK_INT与版本对应关系
    利用jQuery的deferred异步按顺序加载JS文件
    Javascript图像处理之平滑处理
    IE调试网页之七:使用探查器工具分析代码性能 (Windows)
  • 原文地址:https://www.cnblogs.com/pty754084101/p/7581615.html
Copyright © 2020-2023  润新知