1. 本周学习总结

  1. 学会String 类的一些用法,比如用subString()截取字符串,频繁对字符串进行修改应使用StringBuilder()等。
  2. 学会Array 类的一些用法,比如sort()排序,deepToString()打印二维数组等。
  3. 学会调用函数。
  4. 了解了equals== 的区别.
  5. 学习了一种新的循环 foreach循环,格式为for(type element:arr)
  6. 了解了ArrayList动态数组的基本使用方法等。

2. 书面作业

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

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

Answer:【截图】

  • String用char[]数组存储字符串,只是没有提供可以动态增加数组长度的能力。

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

Answer
【作用】

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

Answer:【截图】

  • String不可变性:在代码中可以看到return new String (buf , true),所以可以知道在对字符串进行替换的时候,返回了一个新的字符串常量。那么如果有大量的字符串需要进行修改的话,就会生成很多新建String对象,当内存中变量多了的话,效率就会降低。

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

Answer:字符数组就是char[]形式,String就是封装了字符数组。String比较方便啊,还自带很多方法,不用白不用呀,最方便的就是不用考虑字符串的长度,也不用自己申请和释放内存。

2. StringBuilder

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

Answer

  • String 具有不可变性, 因此在每次对 String 类进行修改的时候,其实都生成了一个新的对象,每次生成新对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,那效率是会受影响变慢的。

  • StringBuilder 的对象是动态对象,也可说是一个可变的字符串序列 ,StringBuilder类是可以在不建立新的字符串对象的情况下进行字符串的修改,也因此大大提高了效率。

    这个类所产生的对象默认会有16个字符的长度,当然也可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,如果附加的字符超出可容纳的范围,则StringBuilder 对象会自动增加长度来容纳被附加的字符。 ——引用 My Heart Will Go On 《java中stringBuilder的用法 》

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

Answer

  • 内部使用char[] value数组来存放字符,使用char字符数组参数按顺序追加该序列的内容。这个序列的长度增加该参数的长。

3. 字符串与字符串池

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

Answer:输出结果为true

  • 这段代码创建了两个字符串对象,str1 和 str2 都指向同一个存放的地址,即同一个字符串对象,而 str3 进行了newstring的操作,也就告诉了我们创建了一个新对象。

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

Answer“==”是用于比较两个引用类型变量存放的地址是否相等。应该用equals的方法来比较两个对象的内容是否相等。

4. Wrapper(包装类)

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

Answer:100可以赋值给i是因为用了自动装箱的功能。Integerint的包装类。
Integer x = 100; int y = x+1;x++; 这一串命令先自动装箱将100转化为Integer类,然后自动拆箱将Integer类型转换为int类型,x++先拆箱再装箱。

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

Answer:java是一种面向对象的语言。要是没有包装类,那么基本数据类型怎么保存在集合中,就需要我们自己写一个类将数据做为这个类的成员变量封装起来,那也太太太太太繁琐了!!!包装类中的方法可给我们带来很多便捷啊!!!

5. 实验总结

5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。推荐实施步骤:

  1. 两个人坐在同一台电脑屏幕前判题,讨论、决定大概由谁先写。
  2. 1个人先编5分钟(自己商量多少分钟),同时另一个人观察对方编程或 者查相关资料。
  3. 5分钟后,简单讨论后,换另外一个人继续编(请一定要换,另一个人如果无法接受应由第一个人讲解大概思路以方便其接受)。

并完成如下作业

a. 描述结对队友姓名、结对过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。

b. 结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会(如是否有利于自己编程水平的提高、是否有利于开拓编程思路)。`

  • 结对编程,我想我是放弃了的-. -,因为我可能更喜欢自己编吧。和别人一起编还要讲出各自的想法,两个人难免有分歧。
    既然事先没去刻意完成了,那平时在宿舍和舍友一起讨论题目也是可以写一点心得的,但是实施步骤就与上不同,流程为:一人写了一个功能如果wrong,另一个人去改正。之间相隔时间也不会距离太久,一般就是几分钟吧。然后就一个一个找错误。
    按以上来说,舍友名字张凯艳,其实能够和舍友一起做出一道题还是很有成就感的,1+1>2的话,还是要因人而异和因题而异吧。在宿舍其实也经常和舍友一起做题,一起知道错误的点,然后避免了下次再犯,也算开拓了见识吧~。

5.2 5-1综合小测验

  • 直接根据输入的功能,用switch case来进行选择,if(str.equals("fib")) if(str.equals("sore")) if(str.equals("search")) if(str.equals("getBirthDat")),还使用了截取字符串str.substring(begin, end);

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

  • 我是采用冒泡法来排序的,就是将出生年月截取出来后转为数组比较,,麻烦了点,但我没想出啥其他方法,降序的话,就比较的时候反一下就好了。具体见图:

5.4 5-4动态数组

  • 输入的n是行数,但是每一列都不一样,就需要str1[k] = new String [k + 1];来新建内存,最后采用Arrays.deepToString(str1)打印二维数组。

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

  • 这道题可以说是很烦了但是基本的使用方法都能在网上找到实例。

List strList = new ArrayList();实例化List集合

strList.add();添加元素到当前末尾;

strList.remove();删除一个元素

strList.set(index,sc.next());修改指定位置对象

strList.clear();清空str
等等。。。。。

5.6 选做:5-5(浮点数计算), 5-6(枚举), 5-7(大整数相加)

  • 5-5(浮点数计算):这题主要就是一个java.math.BigDecimal;的方法了,例如相加:a.add(b);相减:a.subtract(b);相乘:a.multiply(b);相除:divide(a,b,指定精度);

  • 5-6(枚举):这题其实就没啥想说的了,我开始把枚举类型定义在Main里面,导致我Grade.class异常无比的长,后来我把它拿出来了,就可以通过了。

  • 5-7(大整数相加):主要还是有java.math.BigInteger;来进行字符串定义,!((str = sc.next()).indexOf("e")!=-1) && !(str.indexOf("E")!=-1)根据这句话来定义最后以E或e结尾。

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

Answer: 欠费了欠费了,余额-0.2元。因为欠费了所以gg了哈哈哈哈哈哈才不是嘞

刚好以前在微博上看到过这个哈哈哈哈哈,看了一翻网友评论,大概是这样:4294967276 转成 16进制[FFFFFFEC],所以是-0.20,处理数据用了unsigned int无符号整型,数据单位是分,可能是因为没有考虑到负数的情况,也或许是因为卡片初始化错误。

3. 码云及PTA

3.1. 码云代码提交记录

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

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




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

注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt
第一次:

第二次:

第三次:

周次 总代码量 新增代码量 总文件数 新增文件数
2 515 0 10 0

201621123001 《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. (转)解决windows10下无法安装.net framework 3.5,错误代码0x800F081F

    1.下载 NET Framework 3.5的安装包netfx3.cab 将下载的文件复制到复制到 C 盘的 Windows 文件夹 后请在“命令提示符(管理员)”中执行下面的命令: dism /on ...

  2. liunx系统部署

    Linux系统安装与基本配置 =======================================内容提要:获取Linux 常用发行版的方式DELL/HP/IBM 服务器介绍DELL/HP/ ...

  3. java测试感想

    package ATM; public class Account { private String accountID; private String accountname; private St ...

  4. ASP.NET发送电子邮件(转)

    原始地址:http://www.cnblogs.com/ForEvErNoME/archive/2012/06/05/2529259.html(有代码下载,博主真是有操守) 1.补充知识 (1)POP ...

  5. 如何在mmseg3添加词库

      一.了解几个文件 ll /usr/local/mmseg/etc/mmseg.ini uni.lib 编译后的词库,给sphinx 用的unigram.txt 原词库给人看的, 在这里面人工添加自 ...

  6. HDU - 4780费用流

    题意:M台机器要生产n个糖果,糖果i的生产区间在(si, ti),花费是k(pi-si),pi是实际开始生产的时间机器,j从初始化到生产糖果i所需的时间Cij,花费是Dij,任意机器从生产糖果i到生产 ...

  7. 【微信公众号开发】【8】网页授权获取用户基本信息(OAuth 2.0)

    前言: 1,在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名. 请注意,这 ...

  8. 时间选择控件YearPicker(基于React,antd)

    不知道为什么蚂蚁金服团队没有在ant design的DatePicker中单独给出选择年份的组件,这给我们这种懒人造成了很大的痛苦,自己手造轮子是很麻烦的.毕竟只是一个伸手党,emmmmm..... ...

  9. MySQL5.6复制技术(4)-MySQL主从复制过滤参数

     复制的过滤主要有2种方式: 在主服务器在把事件从进二制日志中过滤掉,相关的参数是:binlog_do_db和binlog_ignore_db. 在从服务器上把事件从中继日志中过滤掉,相关的参数是re ...

  10. Spring注解之@Transactional对于事务异常的处理

    spring对于事务异常的处理 unchecked   运行期Exception   spring默认会进行事务回滚       比如:RuntimeException checked       用 ...