zoukankan      html  css  js  c++  java
  • 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|

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/pty754084101/p/7581615.html
Copyright © 2011-2022 走看看