Week02-Java基本语法与类库
1. 本周学习总结
- StringBuilder
- String类转换为int类运用Integer.parseInt函数
- int类数组转换为String类数组
- substring用于截取字符串
- compareTo用于比较两个字符串的大小
- equals用于比较字符串是否相等,不能用==
- Arrays.deepToString用于打印二维数组
- ArrayList的各种运用
2.书面作业
1.String-使用Eclipse关联jdk源代码
1.1 用常量池来储存代码,并且value是用final修饰的,表示不能修改
参考网站
*在Java中String类其实就是对字符数组的封装。JDK6中, value是String封装的数组,offset是String在这个value数组中的起始位置,count是String所占的字符的个数。在JDK7中,只有一个value变量,也就是value中的所有字符都是属于String这个对象的。这个改变不影响本文的讨论。 除此之外还有一个hash成员变量,是该String对象的哈希值的缓存,这个成员变量也和本文的讨论无关。在Java中,数组也是对象(可以参考我之前的文章java中数组的特性)。 所以value也只是一个引用,它指向一个真正的数组对象。
1.2 函数String是公用的,函数内传入char类型的数组
1.3 因为String是不能改变的,所以每次重新赋值其实就是重新创建一个新的String对象,然后指向新的对象而已
1.4 这个问题就像问,为什么有了int[]还要用int,int只是用于但一个的一个对象,int[]用对多个对象,String也是这个意思
2.StringBuilder
2.1 因为如果频繁的改变String类,就会创建很多不需要的东西,很占空间,用StringBuilder就会大大减少浪费的空间
2.2 JDK上的解释是:将char数组参数的字符串表示添加到这个序列中,StringBuilder内部应该也是有char value[]
来储存的,但是没有final的修饰,所以可以改变,在需要添加的StringBuilder后面加.append(填入字符串),StringBuilder是通过一个 expandCapacity的方法扩充的,所以可变
3.字符串与字符串池
3.1 str1创建了一个字符串对象,str2创建了一个字符串对象,str3又指向了str1,等于是引用,并没有创建新的字符串对象,输出true
3.2 引用类型名字都已经很清晰的告诉你了,是引用,自然用的是你需要的数值的地址,而不是真实的值,所以要比较真实的值需要用equal函数
4.Wrapper(包装类)
4.1 因为Integer i = 100
其实是在进行装箱,所以能够赋值,原始代码应该为Integer i = new Integer(100)。 int y = x+1;x++
;这里又进行了拆箱,从包装类拆箱转为基本数据类型。
4.2 我的自我感觉就是包装类比基本数据类型更好用,没有基本数据类型的一些限制,基本数据类型是存储在栈中的,而引用数据类型是在堆中的。包装类可以使我们能够转换到我们想要的类型。
5.实验总结
5.1 我结对的队友是王彩云,我觉得结对真的有助于编程,思想的交换不等于你一个苹果我一个苹果,交换,我们两个还是只有两个苹果,然而是我们一共有了四个苹果,关于某些代码我们还进行了强烈辩论,我们都有各自的思想,我们都互相吸收了对方的思路。
5.2 这道pta的题目是我最开始写的一题,之前卡在一个函数的实现上,做完后面的回到这题就发现我之前在乱七八糟的设了一些什么,觉得自己把整个函数设的很负责,分明很简单的用个ArraryList
就能解决的问题,可是一步错就步步错,后面的一长串我都只能用之前的来,所以啊,这个成长是能看见的。但是我现在的问题是我已经写好了,答案都是对的,可是放在pta上答案都错了,连打印斐波那契数列都显示答案错误为什么呢?search函数上花的时间最多,我search
函数写了起码五个,最后还是在晓菲的帮助下完成,有时候是需要有个人从另外的方向来帮你分析一下,拨开云雾见青天。sort函数真的是万能的,之前我以为只有int[]
函数才能用sort
函数排序,后面发现String[]
也能用sort
排序,导致我在int[]
函数和String[]函数绕了好几圈,因为我以为String函数能运用indexof
,就一直纠结在indexof
函数中,发现行不通,中间又知道一个新的函数,Arrays.binarySearch
一直在鼓捣这两个,发现都行不通最后自己编写了寻找的函数。
5.3 这道题是个坑,因为要等你写好函数后发现必须先写完输入样例的所有函数才能输出,这样一改就是大动刀,几个大板块,并且还要思考如何才能达到自己想要的,并且sort2函数我就思考了很久,一直想不到完美的解决,最后晓菲跟我说,要自己写冒泡法交换年月日的同时交换整个身份证的数组,让我恍然大悟。如果自己编写冒泡法如果要反过来其实很容易,要用函数改写的话我还不知道。
5.4 老师其实子啊课堂上已经给了我们大体的代码,需要注意的是输出的格式要对齐,运用c语言的输出格式System.out.printf("%-7s",strs[i-1][j-1]);
-7表示左对齐,占7个字符。
5.5 运用JDk能解决大部分问题,但是中间要实现12.遍历strList,将字符串中包含str的元素放入另外一个ArrayList strList1.输出strList1.
这个把我难住了,要把ArrayList里提出来单独对应其中的字母是否想等,百度也没有头绪,晓菲告诉我,其实就是把里面的各个提出来放入String数组中一个一个对比,一语惊醒梦中人。ArrayList其实实现了很多数组不能用的功能,就类似于indexof这个功能是没有的,方便了很多。
3.码云及PTA
3.1 码云代码提交记录
3.2 截图题集“Java基本语法”PTA提交列表
3.3 使用老师发的jar程序统计每周的代码量
行数 | 新增行数 | 文件数 | 新增文件数 |
---|---|---|---|
344 | 344 | 767 | 767 |