Week02-Java基本语法与类库

1. 本周学习总结

-1.1本周主要学习的JAVA的数据类型,可分为类似于C的基本数据类型(Boolean为JAVA特有)和不同于C的引用数据类型。其中引用数据类型并不是存放数据的本身,而是存放数据的引用(可理解为地址)。
-1.2学会了区别==equal,因为在JAVA中==用于比较两个引用类型变量存放的引用。而equal比较的是指向对象的内容
-1.3学会了什么是字符常量池,如果程序中无new出现,则会复用已创建的字符对象。
-1.4string的不可变性:原指向内容的引用不变,只是生成了新的字符串。

2. 书面作业

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

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

1.
2.string是指向数据的引用,也可理解为指向数据的地址,而不是指向数据本身的内容,所以其具有不可变性,并且它是通过动态内存来储存字符串的。

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

把char数组转化为string数据类型的对象。

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

例如:1.string x=“abc”;
x=x+“1+2+3”;
在执行完上述语句之后,X的字符串对象内容并未改变,而是因此产生了新的数据对象“abc123”;
2.阅读完public String replace(char oldChar, char newChar)方法的代码,可以知道用newChar替换了oldChar中的字符串,要输出新的字符串原用string定义的字符串str 必须用System.out.println(Str.replace('oldChar', 'newChar'));否则如果直接System.out.println(Str)则会输出原来的字符串内容。

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

string并不是一个关键字,而是一个类。 而字符串数组char定义的数组,字符数组需要用循环依次输出每个字符。所以用string在某些情况下会比较便利。

2.StringBuilder

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

因为在执行速度方面Stringbulider快于string,所以在需要大量处理字符串数据的程序中使用Stringbuilder效率比较高。

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

1.
2.字符数组。
3.例如:
StringBuilder sb = new StirngBuilder();
sb.append("a").append("b").append("c").append("d"); //在同一个对象上叠加数据

3.字符串与字符串池

3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:

String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

1.str1与str2会相等,因为直接使用双引号创建对象会在字符串常量池中创建字符对象,如果已存在则直接复用,所以两者所指向的地址是一样的,并没有另行创建新的对象。
2.创建了两个字符对象。

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

1.因为在引用数据类型中,比较的是两者的地址是否相同,而不是字符对像的内容。
2.用equal进行比较。

4.Wrapper(包装类)

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

1.Integer(String s)可以 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值
2.基本数据类型自动装箱成integer类型;将integer转化为int类型,自动拆箱;先拆箱在装箱

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

1.基本数据类型之间的相互转换不是都可以制动转换的,需要包装类型进行转换;;
2.基本类型转换成引用类型;

5.实验总结

5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。推荐实施步骤:1.两个人坐在同一台电脑屏幕前判题,讨论、决定大概由谁先写。2. 1个人先编5分钟(自己商量多少分钟),同时另一个人观察对方编程或者查相关资料。3. 5分钟后,简单讨论后,换另外一个人继续编(请一定要换,另一个人如果无法接受应由第一个人讲解大概思路以方便其接受)。并完成如下作业:a.描述结对队友姓名、结对过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。b.结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会(如是否有利于自己编程水平的提高、是否有利于开拓编程思路)。

合作伙伴:王祖健

主要探讨了部分程序代码的使用与具体意思。

5.2 PTA-1综合小测验

主要有四个部分;

1.第一部分用递归解决斐波那契数列的问题
2.用String[] str1=input.nextLine().split(" ");来创建数组,.调用Arrays.sort()函数进行输出。
3.将sort定义为全局变量即可。
4.用substring来截取字符串。

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

1.substring来截取字符串,然后用sort来进行排序。
2.重最后一个开始反过来输出

5.4 PTA-4动态数组

此题为二维数组,需要注意i,j的变化,利用循环语句将字符串输出即可;

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

1.有些程序还没搞清楚
2.ArrayList类是一个特殊的数组。它来自于System.Collections命名空间;通过添加和删除元素,就可以动态改变数组的长度。所以在不知道数据的前提下,有会使用ArrayList来确定数据。

3. 码云及PTA

3.1. 码云代码提交记录

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

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

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

行数 新增行数 文件数 新增文件数
271 271 193 1
注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt
posted @ 2017-09-23 20:44  201621123077黄泽鑫  阅读(183)  评论(0编辑  收藏  举报