201621123062《java程序设计》第二周学习总结
1.本周学习总结
本周学习重点:
1.java的基本数据类型
(类似于C,特有boolean),java的引用类型
(类似指针),其他常用类。
2.字符串类型String(比c简单),String的不变性
。
3.自动装箱于自动装箱
4.数组的定义、属性、(一维、二维、三维、动态数组),ArrayList
的常用方法(add、size、isEmpty)。
5.实验课PTA题目中包含的函数应用
2.书面作业
1.String-使用Eclipse关联jdk源代码
1.1
截图:
查看String对象的源代码(截图),分析String使用什么来存储字符串?
分析:
栈用于存储对象
等数据,常量池
用于存储显式 的String(如String str="abc")。
1.2分析其构造函数public String(char value[])的作用?
作用:把char数组
转换为String
类型的对象
1.3阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
体现:使用replace,将oldchar替换成newchar,oldchar的字符串本身并没有发生改变
,而是新创建了一个对象
用于存放newchar。
1.4简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
关系:String本质上是字符数组
,字符串可以直接当数组使用,通过下标的模式访问字符串中的每一个字符,或者可以将字符串转为字符数组。示例代码:for(int i =0;i<=s.Length-1;i++)
原因:string属于STL标准模板库中操作字符串的类,代码的移植性好。
2.StringBuilder
2.1结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
原因:String类型在做字符串的连接操作时,效率很低,并且由于每做一个连接操作,都会在内存中创建一个新的对象
,占用了大量的内存空间。StringBuilder
对象在做字符串连接操作时是在原来的字符串上进行修改
,改善了性能。因此,连接操作频繁的时候,一般使用StringBuilder对象。
结合:在做PTA的StringBuilder题目时,一开始我没把StringBuilder stringBuilder = new StringBuilder(); 放在while循环里,这样会导致第二组数据的测试出错,因为StringBuilder 在第一组的基础上拼接了数据。
核心代码截图:
2.2阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
方法功能:在原有的字符串上进行修改
分析:StringBuilder内部char数组
,当append追加字符串后超过默认长度时,StringBuilder会扩大内部的数组容量以满足需要。在这个过程中,StringBuilder会创建一个新的较大容量的char数组,并将原数组中的数据复制到新数组中。
如何实现:先声明变量,然后char参数的字符串表示形式附加到这个序列,参数将被追加到这个序列的内容,最后序列的长度增加1。(判断长度是否超出内存的默认长度)。
3.字符串与字符串池
3.1尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
理解:首先程序声明了一个str1变量并赋值“hi”(字符串池有了该字符串),再声明一个变量str2值也与str1一样,所以直接用字符串池已有的。并且==
是用于比较字符串内存地址
的,因此程序输出true。new
用于生成新对象
的,因此程序段创建了2个
字符串对象。
3.2重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢
原因:==
适用于比较字符串的内存地址,而引用类型中还有字符串的内容,一般用equals
比较。
4.Wrapper(包装类)
4.1Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
原因:使用了自动装箱
功能。
包含操作:Integer x = 100是自动装箱,int y = x+1是自动拆箱,x++是先拆箱再装箱。
4.2Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
原因:基本类型并不具有对象
的性质,为了让基本类型也具有对象的特征,就出现了包装类型。
好处:包装类型相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
5.实验总结
5.1结对编程
说明:合作对象-林诗乐,合作题目:PTA的StringBuilder
过程:首先思维是两个人都按照实验课老师讲的写了一遍。代码差不多,但是有一两个地方不一样。我们的代码都没有得出正确答案。开始进入讨论,后来测试了(测试过程很多种,略)将StringBuilder stringBuilder = new StringBuilder(); 放在while循环里,成功得出答案。
感受:思路相同时可以先两个人都写一下,最后在关键问题上每个人分担一部分问题的测试,可以比一个人做的更快。而且在其他部分的代码也可以发现彼此的优点,(例如代码有一个人代码更为简洁)。感觉整体还是1+1>2的。
图片:
5.2 PTA-1综合小测验
1.感觉仔细看题目很重要,根据题意本题的主体是有4个函数。一开始看输入输出格式以为是最后一个输完才退出程序,但是我做的就是输入了一个函数以后就会有个exit,但是pta还是过了。。。
2.了解熟悉了Arrays的用法
3.本题比较繁琐,但是基本的代码都比较简单,写代码要注意细节的处理,每次输出格式都会纠结好久。。。
5.3 PTA-3身份证排序并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
1.本题在一些部分和上一题的第四个函数有些代码类似,思路也比较快,但是在日期的升序排列思考了很久,并没有想出很好的算法,因此我用的是同学的算法(采用冒泡法)。
(一开始在想年月日是不是要三个循环了,感觉这样实现好复杂)。
2.虽然冒泡法实现起来比较麻烦,但是好像升序排序都是可以用这个方法,所以进行降序排序也可以采用冒泡法。
5.4 PTA-4动态数组
1.本题的思路比较清晰,关键就是要熟悉对动态数组的操作。
2.发现动态数组操作很简便,长度的增减也很好操作
5.5 PTA-8 ArrayList入门
1.首先声明动态数组变量(重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
2.然后利用strList.add(ss);
、(strList.contains(a));
、strList.indexOf(a))
,等函数操作。
3.这题要接触很多函数的操作,在实现的过程中要很有耐心,真的程序员的坑。。。我是参考别人的代码,真心看了好久。
原因:ArrayList可以在任意位置插入和删除项,且容量动态增长。
5.6选做
5-7(大整数相加)
题目相对较简单,基本思路就是先输入两个大数字,最后用BigInteger(str).add对两个相加,虽然代码比较简单,但是一开始接触BigInteger还是不熟悉。。。最怕代码会有错误,然后是因为单词拼错。。。。
6.选做:公交卡里应该还有多少钱?请分析原因
原因:卡内应该已经欠费.二进制负数
用补码
表示,如果没有设置符号位,电脑则会把这个负数当成正数理解。
3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图
后面重做了一次,已经克隆的部分命令没截图
3.2 截图题集“Java基本语法”PTA提交列表
需要有两张图(1. 排名图。2.PTA提交列表图
3.3 使用老师发的jar程序统计每周的代码量
周数 | 行数 | 新增行数 | 文件数 | 新增文件数 |
---|---|---|---|---|
2 | 400 | 400 | 10 | 10 |
201621123062《java程序设计》第二周学习总结的更多相关文章
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 201521123063 JAVA程序设计 第二周学习总结
1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...
- 2017面向对象程序设计(Java)第二周学习总结
2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结
丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- 201521044152<java程序设计>第一周学习总结
本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
- 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结
这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...
- 杨其菊201771010134《面向对象程序设计Java》第二周学习总结
第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...
- 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
随机推荐
- SVN的安装以及和eclipse的结合使用
SVN概述 l 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: l 备份多个版本,占用磁盘空间大 l 解决代码冲突困难 l 容易引发BUG l 难于追 ...
- [BZOJ3110][ZJOI2013]K大数查询(整体二分)
BZOJ Luogu sol 整体二分,其实很简单的啦. 对所有询问二分一个答案mid,把所有修改操作中数字大于mid的做一个区间覆盖(区间加1) 查询就是区间查询 然后左右分一分即可 注意是第k大 ...
- Poj3678:Katu Puzzle
大概题意 有\(n\)个数,可以为\(0/1\),给\(m\)个条件,表示某两个数经过\(or, and, xor\)后的数是多少 判断是否有解 Sol \(2-SAT\)判定 建图 # includ ...
- 如何巧妙的利用selenium和requests组合来进行操作需要登录的页面
一.在这里selenium的作用 (1)模拟的登录. (2)获取登录成功之后的cookies 代码 def start_login(self): chrome_options = Options() ...
- Redis之Set
一.Redis之Set简介 1. Set是String类型的无序集合(元素成员唯一). 2. Set是通过hash表实现的,添加.删除.查找的复杂度都是O(1). 3. 每个集合最大成员数为232-1 ...
- SQL基础教程读书笔记-3
5 复杂查询 5.1 视图 1.表和视图的区别表:保存的是实际的数据视图:保存的是SELECT语句.从视图读取数据时,视图会在内部执行该SELECT语句并创建出一张临时表. 2.视图的优点① 无需保存 ...
- struct 2 基本知识
(最近在写一个ssh的项目,虽然看网上好像都说ssh已经过气了...之前虽然老师有上过这个课,我还做了一个PPT专门讲这个来着,但果然没有实践经验还是不容易理解.在参照一个项目写ssh时候,表示四脸蒙 ...
- 关于Android SDK Manager更新速度慢的解决方法
因为我的C盘比较小,android sdk安装在c盘那么他下载的东西也会默认在c盘.所以我选择安装在其他的盘.而且我发现android sdk manager可以开多个窗口,这样的话如果每个窗口都很慢 ...
- 【Unity3D与23种设计模式】中介者模式(Mediator)
GoF中定义: 定义一个接口来封装一群对象的互动行为 中介者通过移除对象之间的引用 以减少他们之间的耦合度 并且能改变它们之间的互动独立性 游戏做的越大,系统划分的也就越多 如事件系统,关卡系统,信息 ...
- map/vector erase
问题核心:erase之后迭代器是否失效 vector调用erase之后,该迭代器之后的迭代器都失效: map调用erase之后,其他迭代器并不会失效. vector<int> vecDat ...