201621123078 《Java程序设计》第2周学习总结

1. 本周学习总结

  • 学会了Java里面里面的引用类型,包装类和数组
  • 什么是自动拆箱,自动装箱,了解了数组的属性,如一维数组和多维数组以及ArrayList
  • 学会使用码云管理代码,将本地代码上传至码云,将码云上的项目保存至本地。java

    2.书面做业

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

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


    String对象的设计思路:String使用了字符数组来存储字符串,当你改变String类型值的变量时地址可能发生改变,若使用StringBuilder能够避免。git

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

    该函数的做用是经过char数组,生成String字符串对象,接口中的参数是一个char数组。编程

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

Java String replace()函数是要返回一个新的字符串,用newChar替换此字符串的中所出现的oldChar,不可变性体如今于在替换过程当中,是先新建一个字符串,不是在本来的字符串上操做的,对原来的数值的值不受影响。数组

1.4 简述String与字符数组的关系,使用字符数组就能够处理字符串,为何还须要String呢?

字符串是类,是String类型的,字符数组是数组,是char型的,二者可相互转化,使用String具备不可变性,在运行过程当中不会致使本来的数值发生改变,提升可靠性。app

2. StringBuilder

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

使用String时每一次对字符串进行操做时须要新建空间,而后再删除原来的字符串,影响效率,并占用空间,而StringBuilder是在字符串的末尾进行操做,相对 效率提升不少。eclipse

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

  • 功能: StringBuffer.append(char[] str) 方法追加char数组,即str参数为这个序列的字符串表示形式。数组参数的字符追加的顺序到这个序列的内容。这个序列以该参数的长度增长它的长度。
  • 使用字符串数组来存放
  • 使用 String.valueOf(char[]) 方法将参数转换为字符串,而后将所得字符串的字符追加到此字符序列函数

    3. 字符串与字符串池

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

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

根据代码可知,建立了两个字符串对象,最后输出的结果为“true”。学习

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

若是使用了== 进行比较,在比较字符串的值时容易出错,由于==是用于比较两个变量的地址是否相同,可使用str.equals()来判断两个字符串是否相等。ui

4.Wrapper(包装类)

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

  • 由于在Integer i=100中便是Integer i=new Integer(100),JDK调用函数将100赋值给i;
  • 包含了Integer x = 100;自动拆箱,x++是先拆箱后装箱。设计

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

    • 更加体现了面向对象的特色,有人说java不是纯面向对象语言,纯度只有百分之九十,就是由于java中仍然使用了基本数据类型和static。而包装类的出现,则更好的体现了面向对象的设计理念。
    • 假如我有一个方法,接收一个Object 类型的参数,那么咱们的基本数据类型就不能够作为参数传入这个方法,好比咱们最经常使用的集合类,这些集合类中的元素是否是都是对象啊?要是没有包装类,那么基本数据类型就不能够保存在集合中,仍然须要咱们本身写一个类,将这些数据作为这个类的成员变量封装起来,天!太繁琐了。而包装类的出现就成了必然。
    • 在jdk1.5以后,出现了自动拆箱和自动装箱,大大的缩减了繁琐的代码,更加方便了成员的编程.(参考百度知道的回答)

5.实验总结

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

个人队友是苏志颖同窗,经过此次编写,让我感觉到两我的确实可以达到1+1>的效果,两个一同编写,旁边观看的同窗能可以更好的看出编写同窗的错误,后面一块儿更正,遇到不会的经过讨论的形式更加容易记忆深入,两个的思路有交织,能够提升编程的水平。

5.2 PTA-1综合小测验

该题是经过输入端口的不一样对程序进行操做

  • 输入fib执行打印斐波那契数列操做,直接调用fib函数把输入的数转化成斐波那契数列
  • 输入sort进行排序操做,先把输入的字符串型转化成整型,用
    Arrays.sort排序函数能够对数组进行排序
  • 输入search,把输入的数字转换成int型,查找其位置

5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序能够对出生年月日进行升序排序,若是如今有须要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?

主要思路:经过冒泡法进行排序,截取出年月往后换成数值放到数值中,比较大小再交换。

5.4 PTA-4动态数组

主要思路:strList.add()把字符输入到动态数组中;strList.contains()判断是否含有指定字符;strList.get()输出指定下标字符
ArrayList相对数组来讲操做比较灵活节省空间,适应更多状况。

6.选作:公交卡里应该还有多少钱?请分析缘由

参考他人博客:多是浮点数二进制存储出现问题,可能出现负数,而后补码溢出,或者机器出现故障。4294967276 转成 16进制 是[FFFFFFEC],因此是-0.20。

3.码云及PTA

3.1. 码云代码提交记录

个人git在使用过程当中出现了错误,还未解决,之能添加代码片断,等我解决后再回来进行编辑.

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

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

周次 总代码量 新增代码量 总文件数 新增文件数
2 280 280 5 5
相关文章
相关标签/搜索