Week02-Java基本语法与类库

1.本周学习总结

java的数据类型

byte short int long double float char boolean有八种,其中对于最后的boolean比较不熟

String类

用``subString``去截取字符串 这个方法在c语言中我没有掌握类似的

2.书面作业

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

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


答:Strings是使用char数组来储存字符串

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

答:作用是将字符数组类型输入返回成String字符串对象

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

答:有oldchar和newchar两个参数 最终返回值是return new String(buf, true);最后返回的是新创的数组,他不在原本的数组中操作,原本的数组没有变化,这就是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内部使用什么来存放字符?调用StringBuilderappend(char[] str)方法时,是如何实现添加字符的操作?

答:StringBuilder的append(char[] str)是进行字符串的拼接,内部使用char数组来存放字符。随着字符的添加序列长度也跟着增加

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

答:这语法是自动装箱,将基本类型转化为引用类型。自动装箱 自动拆箱 先拆箱后装箱。

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

答:java是面向对象的语言,所以我需要将基本数据类型封装成具有对象的特征。

5.实验总结

5.1感受

答:我觉得两个人一起合作完成代码并没有一个人独立完成的效果好。因为另一个人不一定懂你的思路想法,出现分歧时也不好统一

5.2 PTA-1综合小测验

答:本题的主要结构是switch语句,其中第二个功能进行排序经过查询后发现可以直接调用System.out.println(Arrays.toString(y))输出的结果会自动添加[]非常方便。这几个功能都可以用直接调用函数解决很方便,所以我们需要不断积累这些函数

5.3 PTA-3身份证排序

答:这题有跟上一题相同的字符串截取,采用subString函数来实现,而除了截取之外还需要比较,所以我采用了id[j].substring(6,14).compareTo(id[j+1].substring(6,14)来实现。我使用冒泡法进行排序,截取出年月日后换成数值放到数值中,比较大小再交换。

5.4 PTA-4动态数组

答:本题采用二维数组的方法,两层循环,array[j][k]=(j+1)+"*"+(k+1)+"="+(j+1)*(k+1);来存放数据,还需要判断条件是否需要换行。最终打印输出需要System.out.printf("%-7s",array[i][j]),因为每一个表达式包含7个字符,这个地方我一直不清楚,直到询问同学后才了解。

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

答:List add();添加元素,remove();删除元素set(index,sc.next());修改位置,clear();清空str
动态数组相比于一般的数组可以动态增加减少空间,一般数组在创建的时候大小就固定了

码云与pta

3.1. 码云代码提交记录

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

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

行数 新增行数 文件数 新增文件数
272 272 183 183
posted @ 2017-09-23 14:44  吴俊杰网络1613  阅读(176)  评论(0编辑  收藏  举报