1. 本周学习总结

以几个关键词描述本周的学习内容。并将关键词之间的联系描述或绘制出来。
原则:少而精,自己写。即使不超过5行也可,但请一定不要简单的复制粘贴。

  • java数据类型:java数据类型分为基本数据类型和引用数据类型,其中布尔型为java特有的基本类型
  • 字符串类型String:String类最常用的引用类型之一,是不可变的,对String类的任何改变,都是返回一个新的String类对象
  • 字符串常量与字符串池:JVM为了减少字符串对象的重复创建,它维护了一个特殊的内存,这段内存被称为字符串常量池
  • 装箱与拆箱:装箱就是把值类型转换成引用类型,反之就是拆箱
  • 动态数组:无法存放基本数据类型,只能存放引用类型
  • StringBuilder对字符串进行修改。

书面作业

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

  • 源代码如下:

  • String实际上是用字符数组来存储字符串。

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

  • 用Char数组来存放String对象。如String str = "12";相当于 char a[] = {'1','2'}; String str = new String(a);

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

  • 如果oldChar字符串在String对象中没有出现,就返回在此 String 对象中的引用。否则创建一个新的对象,这个对象只是将所有的oldChar替换成newChar,其他与String对象相同。在这个过程中是创建了一个新的对象,oldChar替换成newChar这一动作并没有指向原来的String对象。

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

  • 字符数组是char型的,String中的每一个元素都是char,它是char型数组的封装,有函数可以用,比如substring(),这就为我们节省了不少时间。

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

  • String是固定不变的,在进行字符串连接的时候要新建一个字符串然后赋值,如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统空间。而StringBuilder是可变的,不用生成中间对象,不浪费空间。

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

  • 功能:将char数组参数的字符串表示形式追加到此序列。
  • StringBuilder内部使用字符数组来存放字符。
  • 将数组参数转换成字符串,然后按顺序将其追加到序列中,这个序列的长度增加。
    字符串与字符串池
    3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
    String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

  • 答:输出true。这段代码创建了两个字符串对象。在执行String str1 ="hi";时,在常量池中无法找到,于是创建一个"hi"对象;在执行str2="hi";时,由于执行String str1="hi";语句时已经创建过"hi",所以直接从常量池中引用,不用创建,在执行String str3 = new String(str1); System.out.println(str1==str2);时又新建一个对象,共两个字符串对象。

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

  • "=="是用来比较两个字符串的存储地址是否相同的,如果两个相同的字符串放到不同的地址时,使用"=="来比较就有可能出错,所以要用equals来比较。

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

  • 因为自动装箱可以将值类型转换成引用类型,所以可以将100赋值给i;这串命令包含了自动装箱和自动拆箱。

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

  • 因为基本数据类型之间的相互转换不是都可以实现的,包装类可以方便的实现基本数据类型之间的转换。
  • 包装类整合了很多函数,在编写代码过程中我们可以直接调用。

实验总结
5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目。

  • 队友:肖文婷
  • 题目:身份证排序
  • 这是我们第一次结对编程,过程很艰难,也遇到了不少问题。因为两个人思路不一样,但是轮到你的时候你又要把队友的代码看懂,按照她的思路去往下想,可能你好不容易勉强写了一部分,队友又发现她接不下去你的思路……我们就是这样的……然后我们就换了一个方法,先统一一个思路再轮流往下编。时间花得比一个人做要多,目前来说还没有做到1+1>2的效果,但是也不是没有收获,在这个过程中我听到了队友不同的想法,还有我卡住的地方也得到了队友的帮助,还是很不错的。

5.2 PTA-1综合小测验

  • 用switch语句来实现功能的选择,斐波那契数列和排序以及查找都是调用函数实现的依次调用fib(n)convertToIntDigits(strDigits)Arrays.sort(digits)等函数,然后用 System.out.println(ids[i].substring(6, 10)+"-"+ids[i].substring(10, 12)+"-"+ids[i].substring(12, 14));语句来实现身份证中出生年月日的截取和输出。

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

  • 出生日期的截取和输出与5.2相同,如果需要降序的话就修改冒泡法中的交换条件;若要按照其中的出生年月排序,就类似PTA第二题,将出生年月截取出来进行排序后输出即可。

5.4 PTA-4动态数组

  • 使用动态二维数组来存放乘法表,用嵌套for循环完成,最后使用Arrays.deepToString输出。

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

  • ArrayList可以改变大小,也就可以动态增添或删除数组中的元素,判断数组是否为空等。而且实现这些功能的方法都是可以直接调用的额,比较方便,如:remove (int index)移除指定位置上的元素、isEmpty()如果列表中没有元素,则返回true等。

    选做:公交卡里应该还有多少钱?请分析原因
    1.png

3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

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

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

201621123006 《Java程序设计》第2周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

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

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

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

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

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

随机推荐

  1. iOS开发之HelloKitty(移动社交平台项目)

    iOS开发之HelloKitty(移动社交平台项目,2015.3,parishe)

  2. Python3.x:BeautifulSoup()解决中文乱码问题

    Python3.x:BeautifulSoup()解决中文乱码问题 问题: BeautifulSoup获取网页内容,中文显示乱码: 解决方案: 遇到情况也是比较奇葩,利用chardet获取网页编码,然 ...

  3. ViewResolver和ResponseBody笔记

    处理HttpResponseBody有两种方式,ViewResolver(视图解析器)和ResponseBody ViewResolver.View多用于jsp,ViewResolver的主要作用是把 ...

  4. javaScript对象与JSON.stringfly(obj)

    //接收json对象 var objJson = new Object(); var arr = new Array(); var obj1 = new Object(); obj1.age = 15 ...

  5. 如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?

    现在css3 都出来的,但是其实我由于一些原因,有些css2中都能支持的样式,我都没有使用过.我感觉我真的有必要静下心来,去看看那些东西,看看哪些以前都被忽视掉的. 今天我主要来讲三个对于我们编程经常 ...

  6. [洛谷P4918]信仰收集

    题目背景 随着各种势力的迁入,守矢神社丧失了不少信仰现在,为了挽回香火日益惨淡的神社,八坂神奈子派遣神社的风祝早苗去人类村落收集信仰 题目描述 你可以将村落看成一个m个点的有向无环图(编号从1−m), ...

  7. SaltStack安装Redis-第十篇

    实验环境 node1  192.168.56.11   角色  salt-master node2  192.168.56.12   角色  salt-minon 完成内容 Salt远程安装Redis ...

  8. Spring中RestTemplate进行Http调用

    Spring中的RestTemplate类源自spring-web,http调用中设置超时时间.设置连接池管理等非常重要,保证了系统的可用性,避免了长时间连接不上或者等待数据返回,拖垮系统. 现贴出工 ...

  9. spring boot2.1读取 apollo 配置中心3

    上篇记录了springboot读取apollo的配置信息,以及如何获取服务端的推送更新配置. 接下来记录一下,如何获取公共namespace的配置. 上文中使用如下代码共聚公共命名空间的配置: @Ap ...

  10. JS的scrollIntoView

    scrollIntoView(alignWithTop)  滚动浏览器窗口或容器元素,以便在当前视窗的可见范围看见当前元素.如果alignWithTop为true,或者省略它,窗口会尽可能滚动到自身顶 ...