Week02-Java基本语法与类库
1.本周学习总结
- boolean类型:与c语言中不同,java中只能用true和false。
- 引用:相当于c语言中的指针
- 包装类:每一个基本类型都有相对应的包装类,对应的语法有自动拆箱和自动装箱。
- 数组:和c语言不同的是,java可以直接简单构建不规则数组。
- 学会了整型常量的应用,char型的应用,浮点型的应用。
2. 书面作业
1.String-使用Eclipse关联jdk源代码
1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?
使用char数组储存。
1.2 分析其构造函数public String(char value[])的作用?
把char型字符串数变成string型字符串
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
对string型字符串进行任何修改,都会变成新的字符串对象,所以更新string型字符串时不用增减删除啥的,而是直接用新的替代旧的。
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
都用来储存字符,但是string更加好用方便高效,出错的几率也低。
2.StringBuilder
2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
string一直生成新对象占用大量内存,用stringbuilder更加高效明了。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
追加char数组参数到此序列的子数组的字符串表示形式,按顺序追加string变量中的字符,接在上个字符串末尾,然后长度就增加了。
3.字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1str2);
str1和str2在同一个地址,内容也相同,所以正确输出true。
3.2 重点:对基本类型我们可以使用比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?
- 比较的不是对象本身的值,而是对象所处的内存地址,对象本身的值相等或者是对象所指向的内容相同,也不能用,因为操作符并不涉及到对象内容的比较。
- 要比较他们的值应该使用equals进行比较。
4.Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
- 这一命令进行了自动拆箱
- 自动拆箱and自动装箱
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢? - 有的数据类型之间不能转化,易出错
- 有了包装类你就可以进行很多想进行的转换,高效且不出错
5.实验总结
5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。推荐实施步骤:1.两个人坐在同一台电脑屏幕前判题,讨论、决定大概由谁先写。2. 1个人先编5分钟(自己商量多少分钟),同时另一个人观察对方编程或者查相关资料。3. 5分钟后,简单讨论后,换另外一个人继续编(请一定要换,另一个人如果无法接受应由第一个人讲解大概思路以方便其接受)。并完成如下作业:a.描述结对队友姓名、结对过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。b.结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会(如是否有利于自己编程水平的提高、是否有利于开拓编程思路)。
我的搭档是陈星源,我们一起编写pta-8。我觉得有时候能1+1>2,有时候反而事倍功半,因为每个人的思路不同,另一个人接着编写时并不能很好的衔接。如果思路相同的话,结对编程可以说是事半功倍了,但是即使思路不同,能从搭档的思路中有所收获,也是一件好事。
5.2 PTA-1综合小测验
使用switch对输入内容来判断,得到身份信息用函数String.substring对数组中的信息进行获取。但是不懂那个数列怎么构建,一头雾水。
5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
利用String和Array两个类对数组进行数据处理,获取年月日信息,然后进行排序,最后依次输出。
输入时直接逆序,输出时就是倒叙。
5.4 PTA-4动态数组
建立二维数组然后用for循环,但是不懂在java怎么输出出来,比c来的复杂感觉。
3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图
3.2 截图题集“Java基本语法”PTA提交列表
3.3 使用老师发的jar程序统计每周的代码量
注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt