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

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

  • String储存着字符串的内存地址,学过C语言的我们可以把它理解成指针。
  • String使用字符数组来存储字符串。
  • 详细可参考String

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

  • 此题我查看String时发现其源代码为this.value=Arrays.copyOf(value,calue.length);其作用为返回被复制后的数组,参数是数组和被复制的长度。

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

  • 我们平时所谓的变量实际是指内存地址不变,而数值可变。String具有不可变性,我们平时修改的并不是数据,而是修改指向的内存地址,所以我们说String具有不可变性。

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

  • 首先,String是一个类,而字符数组是数组;第二,String具有不可变性,无法修改内容,字符数组可以修改内容;
    使用String因为有常量池的缘故,所以比较节省空间。而且String也有许多现成的函数,比较方便。

2.StringBuilder

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

  • String具有不可变性,而且String的长度无法改变,但是StringBuilder的长度却可以改变,还有String因为其不可变性,在处理很多数据时就会显现它的弊端,会对java的编译和运行造成阻碍。

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

  • append(char[] str)方法功能是在原有的字符串后添加新的字符串。StringBuilder内部用字符串数组来存放。
    调用StringBuilder的append(char[] str)方法时,系统会检测原来字符串的长度是否足够,若不够,则增加长度之后再增添字符,反之则直接添加。

3.字符串与字符串池

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

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

  • 输出的结果为“true”;这段代码创建了2个对象。首先,程序在字符串的池子里寻找有没有“hi”这个字符串,由于执行String str1 = “hi”所以新建一个对象,第二次执行str2 = “hi”,在字符串池中直接引用,第三次执行String str3 = new String(str1)使用new,肯定是要新建一个对象,所以一共创建了2个对象。

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

  • ==是用来比较变量的值是否相等,当对象类型是基本数据类型时,我们可以直接使用==来比较,但是,如果对象类型不是基本类型,那么比较的就是内存地址,不同的内存地址,其中所储存的值可能是相同的,而相同的储存地址,存储的值可能不同,所以引用类型不能使用==来判断两数的值是否相同。我们需要用equals来比较,equals是用来比较地址的。

4.Wrapper(包装类)

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

  • 之所以能够将100赋值给i,是因为使用了Java中的主动装箱。这一串命令中包含了自动装箱,自动拆箱,自动装箱。

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

  • 可以把基本数据和字符串之间进行字符转换,可以降低错误率,可以把取值范围变大。包装类能体现出Java面向对象;包装类可以实对现代码的简化,方便我们编译和运行。

5.实验总结

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

  • 我的结对对象是罗志凯,我主要是在我不懂的时候我们可以互相探讨,在做动态数组的时候,就是他给我输出的建议我才能完成这一道题,在身份证排序这道题,我们一起讨论了很久,如何把int型数组输出成String型数组。结对确实能得到1+1>2的效果,但是很消耗时间,不过付出是有收获的。

5.2 PTA-1综合小测验

  • 本题主要是在search函数卡了很久,主要是看不懂题目想要表达什么,最后问了同学,才得以解决。getBirthDate程序相比于第二题身份证排序,实在是简单了很多,sort主要是字符串数组转化成int型数组花了很多时间。

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

  • 这一题实在是太难!!!思考了很多思路,主要是先将输入的字符串数组转换成int型数组,比较大小,最后再将int型数组转换回字符串,在其中添加上‘-’。本题最开始的疑问就是输入三组数据,最后却只能处理一组数据,最后用数组来解决这方面的问题。

5.4 PTA-4动态数组

  • 本题的重点就是如何构造一个动态数组,使用String[][] strs = new String[n][];来完成。以及打印的时候要用%-7s,还有打印数组的函数Arrays.deepToString(str)

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

  • ArrayList比起数组更容易改变已经确定的数组中的元素。能够更灵活的控制数组。

3. 码云及PTA

3.1. 码云代码提交记录

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

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

周次 总代码量 新增代码量 总文件数 新增文件数
2 328 328 11 11

转载于:https://www.cnblogs.com/l873253814/p/7580753.html

201621123041java程序设计第二周学习总结相关推荐

  1. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  2. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  3. 20172325 2018-2019-1 《Java程序设计》第二周学习总结

    20172325 2018-2019-1 <Java程序设计>第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集.组织了其他对象的对象.集合可以分为两大类:线性集合和非线性集合. ...

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

  5. 201871010123-吴丽丽《面向对象程序设计(java)》第二周学习总结

    201871010123-吴丽丽<面向对象程序设计(java)>第二周学习总结                         项目                这个作业属于哪个课程 h ...

  6. 201871010104-陈园园 《面向对象程序设计(java)》第二周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 ttps://www.cnblogs.com/nwnu-daizh/ 这 ...

  7. 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 第三章学习了基本类型 整数(short.int.long) 字节(byte) 浮点数(f ...

  8. 20172304 《程序设计与数据结构》 第二周学习总结

    20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合 ...

  9. 201871010128-杨丽霞《面向对象程序设计(java)》第二周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 <https://www.cnblogs.com/nwnu-daiz ...

  10. 201671010117 2016-2017-2 《Java程序设计》Java第二周学习心得

    Java第二周学习心得 这一周老师在周四进行了课堂测验,完全出乎我的意料,我以为老师会在前两周上课讲一下,由于我在课前没有好好准备,反转课堂来的有的措手不及,那些题很多很多都不会,也错了很多,班上有很 ...

最新文章

  1. 了解Hololens2的硬件信息
  2. 项目通用环境使用说明
  3. Win8.1 “运行”在Ipad Mini上
  4. 程序员大神用 React “复刻”实现了一个 Windows 11
  5. 计算机系统应用的书,基于领域本体与上下文感知计算的智能图书-计算机系统应用.PDF...
  6. 软件设计师考试笔记:UML统一建模语言
  7. 基于 Docker 中的 MongoDB 授权使用
  8. 直播带货还有机会吗?
  9. Pygame安装心得
  10. 汇川,H3U,plc程序模板和触摸屏程序模板,三个步进和三个伺服,三个伺服用的是canlink总线,适用于运动轴控制
  11. 跨平台数据库ODB实战1-ODB安装
  12. vue结合videojs实现视频播放组件
  13. 记nuc8的开箱以及安装hackintosh
  14. html lang=zh-cn解决Mac版Firefox中文字体显示问题
  15. sqlzoo刷题笔记-02 | SUM and COUNT
  16. ROS下同步通信topic和异步通信service的异同
  17. C++不知算法系列之解析回溯算法中的人文哲学
  18. 通过singlefile把网页保存到本地
  19. 夺命雷公狗—玩转SEO---44---外链群发原理
  20. excel表格如何添加删除线

热门文章

  1. oracle的启动与关闭原理-数据路的分阶段启动
  2. Integer在webservice的传递
  3. iOS 使用SourceTree注意事项
  4. 面试热身:5 亿整数的大文件,排个序 ?
  5. 阿里这样的高并发系统是如何做限流的?
  6. Redis 经典 必问21问,BAT面试都会问,你会回答吗?
  7. 一个老程序员“伯伯”的独白
  8. 千万级用户直播APP——服务端结构设计和思考
  9. 深圳的小伙伴有福利了!
  10. 【运维安全】Apache 服务器存在高危提权漏洞,请升级至最新版本 2.4.39