Week02-Java学习笔记2

1. 本周学习总结

本周学习了java的基本语法与类库,其中介绍了基本数据类型和引用类型,介绍了String类,String对象的拼接以及String的一些常用方法:如StringBuilder拼接字符串、
equals方法检测字符串是否相等、字符串池的概念...,还介绍了数组包括多维数组和不规则数组的初始化和引用,还介绍了用ArraysList来构造动态数组,还简要介绍了java的自动装箱和自动拆箱。

2.书面作业

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

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

  • 使用eclipse关联jdk代码查看String
  • String用字符数组private final char value[]来存放字符串,一旦创建String对象,就无法更改次对象存储的字符串。

1.2 分析其构造函数public String(char value[])的作用?
答:用char数组存放String对象,如String str="123";相等于char data[]={'1','2','3'};String str=new String(data);
(参考API文件)
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
答:oldChar字符串在此String对象的字符序列没有出现,就返回在此 String 对象中的引用。否则,创建一个新的派生的 String 字符串对象,它所表示的字符序列除了所有的oldChar都被替换为 newChar之外,与此 String 对象表示的字符序列相同。而在字符串池中oldChar是仍然存在的。
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
答:String是char型数组的封装,char型数组是String对象的具体实现方式。使用String类可以大大方便代码的书写和程序的运行,让程序员可以不用再限制于具体的实现,可以更流畅的编写程序。

2.StringBUilder

2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String
答:StringBuilder是可变字符序列,修改字符串是常用append和insert,它能有效的将给定的任意类型的数据转换成字符串,然后将该字符串的字符追加或插入到原字符串中。append 方法是将这些字符添加到原字符串的末端;而 insert 方法则在指定的点添加字符。而且使用StringBuilder可以有效避免溢出,而String不行。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
答:

  • 将 char 数组参数的字符串表示形式追加到此序列。
  • 其内部使用了字符串生成器,使用在字符串缓冲区中。
  • 将所给参数转换成字符串,然后按顺序将这些数组参数转换得的字符追加到此序列中,该字符将增加该字符串的长度。

    3.字符串与字符串池

    3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
    答:

  • 创建字符串对象:对于使用"包裹起来的字符串字面常量,会先在字符串池中进行查找,如果有则不新建。
  • 共创建了2个对象。在字符换池中存入了字符串"hi",且由于字符串池的特可知,str1与str2指向同一个字符串。而str3是通过new新建的引用,其所指向的地址与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++;这一串命令中包含了些什么操作?
    答:

  • 100是基本数据类型,但i仍然是Integer类型,而Integer是int的包装类,通过自动装箱将基本数据类型转换为Integer类型。
  • 首先将100自动装箱成Integer类型赋给x,在通过自动拆箱将Integer类型拆成int型将结果赋给y,x++则是先拆箱后装箱。
    4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
    答:
  • 在编写程序过程中使用基本数据类型较为麻烦,基本数据类型是按值传递,包装类是按引用传递,java中基本数据理性是在堆和栈上创建的,而包装来对象是在堆上创建的
  • 使用包装类,可以更好的处理数据类型之间的转换,多方法,且用法方便
  • 方便管理不同公司编写的代码。

    5.实验总结

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

  • 题目PTA-1综合小测验。
  • 在这题中我们首先讨论了大致的解题方向,决定分开自己写,在编程过程中,有出现问题再互相讨论。按题目要求的函数的顺序一个一个的编写完成的过程较为顺利,并没与出现太多问题,在此过程中,我们讨论了一些能实现题目要求的函数的使用,如:split的拆分参数(使用时程序出错,因为有队友的指点,我才反应过来我将“”“ ”混为一同了),讨论利用Arrays.toString函数对数组进行升序排列。最后主要讨论了代码上关于PTA要求的格式实现(PTA要求的输入和输出格式是一个难点),对于这个输入输出,在每次输入要选择的功能时,应在对应的函数下提供一个输入接口,从而才能调用改函数。
  • 感受:一个人可以解题,但有多一个人,能够提供不一样的思路和指出自己不能发现的错误,还能在自己陷入无头绪的情况下,提供一些出路。所以,我觉得对于我这种比较菜的人来说,结对编程是有利于我编程的提高的。
    5.2 PTA-1综合小测验
    答:在此题中,主要考察简单函数编写、Arrays的用法、String的截取与拼接。在思考和动手过程中,我首先逐步实现各个函数,才再来考虑整体结构。其中在编写完各个函数后的整体构架参考了老师的指导,但仍然发现了许多小问题,如只能输入一次,无法实现多次输入,随意调用函数。通过请教他人,我更改了自己本来的输入方式,在自己的电脑中终于变成通过,但与PTA要求的格式仍有出入,导致部分编译通过。
    总结:在动手前应先考虑整体,并多考虑PTA要求的格式。
    (使用split时打算用空格拆分字符串,结果将“ ”与“”混合了,导致程序一直报错)
    5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢
    由于上一题困扰了很久,花费时间较多,在此题上还在思考中。下面给出我自己的一些想法:
  • 使用sort2方法进行升序后,可以采用从数组后面开始输出,从而达到降序的效果。(只是简单设想,还未实现)
  • 将出生月份抽取出来,通过Arrays.toString来进行升序。

    3. 码云及PTA

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

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

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


小总结:在这次作业中完成的PTA题目只有两题,但认认真真的去思考如何实现题目的要求,最后程序真的跑起来的感觉很好(虽然过程很曲折)。

Week2《Java程序设计》第二周学习总结的更多相关文章

  1. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  2. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  3. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结

    丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...

  5. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结

    这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...

  9. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

  10. 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

随机推荐

  1. 010-shiro与spring web项目整合【四】缓存Ehcache

    一.Ehcache shiro每次授权都会通过realm获取权限信息,为了提高访问速度需要添加缓存,第一次从realm中读取权限数据,之后不再读取,这里Shiro和Ehcache整合. 1.添加Ehc ...

  2. save a web page as a single file (mht format) using Delphi code

    Here's how to save a web page as a single file (mht format) using Delphi code: uses CDO_TLB, ADODB_T ...

  3. python中的闭包是什么

    当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包,其意义就是会记录这个值 def A(x): def B(): print(x) return B A(7)() #7

  4. Python 优雅的操作字典

    Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 来源:https://www.linuxzen.com/python-you-ya-de-cao-zuo ...

  5. TCP/IP 网络结构

  6. Word 中设置图、表、公式、代码要与正文之间行间距

    一.概述 在撰写论文等文档时,常常对图.表.公式.代码要与正文之间行间距有要求.例如: (5)图.表.公式.代码要与正文之间有6磅的行间距. 二.设置方式 选中 图/表/公式/代码 与 图题/表头/- ...

  7. SVN插件下载地址及更新地址

    SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.xLinks for 1.8.x Release:Eclipse update site URL: http://subcl ...

  8. hadoop12---java并发编程的一些总结

    java并发编程的一些总结 %.1.不应用线程池的缺点 有些开发者图省事,遇到需要多线程处理的地方,直接new Thread(...).start(),对于一般场景是没问题的,但如果是在并发请求很高 ...

  9. MySQL-5.7 存储过程及函数

    1.语法 CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characte ...

  10. Luogu-3250 [HNOI2016]网络

    Luogu-3250 [HNOI2016]网络 题面 Luogu-3250 题解 CDQ分治...这个应该算是整体二分吧 二分重要度,按照时间从小到大加入大于重要度的边 对于一个询问,如果经过这个点的 ...