1.本周学习总结
本周学习了java的数据类型,有基本数据类型和引用数据类型(不同c),特有的boolean类型,取值只有true和false。还有包装类和数组,每一个基本类型都有相对应的包装类,对应的语法有自动拆箱和自动装箱。数组的构建也和c语言有一些区别,java还可以直接简单构建不规则数组
2.书面作业
1.String-使用Eclipse关联jdk源代码
1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?
String用char【】数组来存储字符串。
1.2 分析其构造函数public String(char value[])的作用?
用来复制value这个数组
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
先对新旧数组进行判断,并对原数组进行判断,要是=oldchar【】,就直接返回。否则就将newchar【】de值换成旧数组的值。所以说string不可变性
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
使用string可以更简洁高效快速的处理字符串,出错率低。
2.StringBuilder
2.1结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
由1知string的对象不可变性,所以用string频繁修改字符会占用很大内存,而StringBuilder可以更高效一些
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
- 将 char 数组参数的字符串表示形式追加到此序列。按顺序追加 String 变量中的字符,此序列将增加该变量的长度。如果 str 为 null,则追加 4 个字符 "null"。
- 使用动态数组
- 按顺序追加 String 变量中的字符,此序列将增加该变量的长度。如果 str 为 null,则追加 4 个字符 "null"。 ##3.字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
运行结果是true,因为str1和str2在同一个引用内存,内容也一样,所以相等时正确的
3.2 重点:对基本类型我们可以使用比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用比较?应该怎样比较他们的值是否相等呢? - 因为引用类型所在的内存空间不一样,尽管他们内容会一样。
- 使用equals函数进行比较
4.Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;
这一串命令中包含了些什么操作?
- 因为这一命令行进行了自动装箱。
- 自动装箱和自动拆箱
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢? - 因为有时候数据类型的转换是容易出错的
- 方便用户进行类型转换和降低了错误率
5实验总结
5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。推荐实施步骤:1.两个人坐在同一台电脑屏幕前判题,讨论、决定大概由谁先写。2. 1个人先编5分钟(自己商量多少分钟),同时另一个人观察对方编程或者查相关资料。3. 5分钟后,简单讨论后,换另外一个人继续编(请一定要换,另一个人如果无法接受应由第一个人讲解大概思路以方便其接受)。并完成如下作业:a.描述结对队友姓名、结对过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。b.结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会(如是否有利于自己编程水平的提高、是否有利于开拓编程思路)。
- 队友名字为宾钧荣,两个结对编程第一个pta上的java程序
- 结对编程还是要看人,如果两个人水平差不多对两个人都是很大的促进。由于我们两个会的不多,所以我们的编程过程十分痛苦,经常两眼相望无言。
5.2Pta-1综合小测验
用switch对输入的内容进行判断,fib直接用fib构建的函数打印出结果。(但是斐波那契数列不会构建)。sort选项需要用Arrays对数组进行升序排列。search的话也是需要Arrays对数组进行查找。获取身份证的话用String.substring对数组进行提取
PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢? - 主要还是要用string和arrays对数组进行处理,先获取身份证年月日信息,对此进行排序。然后依次按照格式输出。
- 用string.substring提出年月日信息,先用sort排序,然后倒着输出就是降序了。
5.4PTA-4动态数组
打印九九乘法表这个通过两个for循环可以办到,主要还是数组的存入和输出好难啊。
**5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList? - 考察了用add添加元素到尾部,或者指定位置。clear,remove等基本操作,虽然简单,可是我还是写不出完整代码并且做对。特别是遍历这方面。
- ArrayList可以比较轻易改变确定数组中的元素
3.码云及PTA
3.1码云代码提交记录
![](http://images2017.cnblogs.com/blog/1120964/201709/1120964-20170923004654196-1028385941.png)
3.2截图题级“java基本语法”pta提交列表
3.3使用老师发的jar程序统计每周的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
2 | 265 | 265 | 9 | 9 |
![]() |