201621123014《JAVA程序设计》第2周学习总结
1. 本周学习总结
引用数据类型:JAVA定义字符串实际上是创建字符串的引用,将引用指向需要的字符串。
字符串常量池:直接对引用赋值时,会先在字符串中搜索是否有这个对象,已有则不创建直接指向它。
String不变性:修改string,实际上是分配新的字符串对象,然后将引用指向新的对象,与C语言不同。
StringBuilder:为了应对String不变性,为了频繁修改字符串而不生存新对象的函数。
包装类:java是面向对象的语言,但基本数据类型本身不是对象,包装类可以让数据类型变成对象,方便编程。
2.书面作业
1.String-使用Eclipse关联jdk源代码
1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?
答:
用栈来存储字符串。
1.2 分析其构造函数public String(char value[])的作用?
答:将目标char数组复制生成字符串对象,
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
答:在java中,创建一个string字符串,相当于系统分配内容,并创建一个这个字符串的引用。当改变这个字符串引用时,相当于分配一个新的内容,然后将这个引用指向新的内容,而不会改变原来系统分配的内容,这就是string的不变性。
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
答:String是类的一种,指的是字符串类,字符数组是数组,是char类型的,两者可以互相转化;因为string类中有许多已经定义好的函数,直接使用会比用字符数组处理字符串方便很多。
2.StringBuilder
2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
答:StringBuilder可以直接进行字符串的修改,而不是创建新的对象,String则因为有不变性,每次修改字符串时都会产生新的对象,占用空间。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
答:StringBuilder的append(char[] str)是将char数组插入到StringBuilder对象后面;
StringBuilder内部使用数组存放字符;
在原字符串的后面添加char数组;
3.字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
答:当有一个引用被赋值时,系统会先搜索这个值是否已经在字符串中,若有则直接引用这个值,所以在这里str1和str2引用的对象是相同的,这段代码的输出为“true”;str3使用了new,所以即使它所引用的对象的内容与str1相同,新对象也不是在字符串池中,所以这段代码创建了两个字符串对象。
3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?
答:因为引用有可能指向不同的对象,不同的对象就算值相同,所在位置也不一定一样;应该用函数equal比较。
4.Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
答:这里使用了自动装箱,将100赋值给i的引用对象;
自动装箱、自动拆箱、赋值、拆箱再装箱。
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
答:JAVA面向对象,但基本数据类型不是面向对象的,包装类可以让基本类型变成对象,方便编程。
5.实验总结
5.1 结对编程实践:
结对编程队友:周彪;刚刚开始学习java,两人的水平都不足,讨论经常是两个人都不懂该怎么做,结果还是一直在百度,这样反而比一个人查询的效率更低;互相交流意见确实可以引发各自的思考,但感觉在我们学java的初期,结对编程并不能达到1+1>2的程度。

5.2 PTA-1综合小测验
斐波那契数列使用循环语句逐个输出字符;
排序则使用arrays函数进行排序,输出时使用Arrays.toString可以用[]包裹;
搜索也是使用arrays类函数进行输出;getBirthDate则是用substring函数抽出身份证中的年月日。
5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
sort1:用substring将身份证号中的年月日抽出,组装起来后用Collections.sort排序;
sort2:用年月日比较后输出原身份证号;
将升序函数换成降序函数;用substring抽出月份进行排序即可。
5.4 PTA-4动态数组
先构建二维数组,然后用for循环语句将乘法表输出,空格的问题当时在不同位置直接输入“空格”都是格式错误,后来询问得知要使用%-7s的输出方式。
5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
使用ArrayList的各个函数(add、get、remove等)解决题目问题;数组的长度是固定的,而ArrayList是动态数组,比较灵活。
3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

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



3.3 使用老师发的jar程序统计每周的代码量
注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt

201621123014《JAVA程序设计》第2周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- RocketMQ 4.3正式发布,支持分布式事务
冯嘉 作者 | 冯嘉 近日,Apache RocketMQ 4.3 版本宣布发布,此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社 ...
- Linux文件查找命令
1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> ...
- 请求SQL数据是存在<null>,的解决方法
删除字典中的null 我们在处理服务器传过来的数据过程中,如果数据中出现null,我们是没法进行本地持久化处理的.在使用NSUserDaults保存本地时,如果其中一个字段的value为NULL值,就 ...
- 执行cp命令时提示cp: 略过目录
执行cp命令时提示cp: 略过目录 加入-r之后成功拷贝 在网上search了一下CP命令的用法: CP命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样, ...
- Centos 安装libreoffice 生成office 报错信息见内容
个人博客:https://blog.sharedata.info/ 错误信息:/opt/libreoffice5.2/program/soffice.bin: error while loading ...
- c3p0;maven;model;
- python 列表中字符串排序故事一则
a = ["bca","cab","abc"] 有时候需要对列表排序 如果是对列表中整个元素 直接用sort()排序 如果想按元素的某一段排 ...
- Android笔记之自定义的RadioGroup、RadioButton,以及View实例状态的保存与恢复
效果图 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- Android笔记之获取debug.keystore和release.keystore的MD5/SHA1值
获取debug.keystore的key,如下图 获取release.keystore的key 输入命令keytool -list -v -keystore <jksFilename> 例 ...
- R语言数据管理(三):数据读入
R的数据读入非常灵活,即可以在R软件中直接输入,也可以读入外部数据. 一.直接输入数据 ①c()函数 ②scan()函数 其功能类似c()函数,scan()实际上是一种键盘输入数据函数.当输入scan ...