Java第二周实验总结《Java的基本语法与类库》

1.本周学习总结

  • 引用类型
    | - 类
    | - 数组
    | - 接口

  • 基本数据类型
    1.整形数据
    | - byte < short < int < long
    2.浮点型数据
    | - float < double
    3.字符型
    | - char
    4.布尔型
    | - boolean
  • 了解了什么是自动拆箱什么是自动装箱。
  • 学会了使用码云上传自己的代码,将本地代码上传至码云,再将码云上的项目保存到本地。

    2.书面作业

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

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

    1122718-20170919212407056-273400783.png
    1122718-20170919212431540-339959095.png
    1122718-20170919212604196-143348783.png

答:从二三两图可以分析,String是使用字符数组来储存字符串的。

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

答: 此String构造函数的作用是将字符型数组转换为字符串。

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

答:在该String方法的代码中,String的不可变性体现在,如果有满足要求的char oldCharchar newChar输入的话就要在结束的时候return new String(buf,true)来返回一个新的String;如果原Stirng字符串没有被改变就通过return this来返回调用这个方法的原字符串。

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

答:String类的实现是通过字符数组的形式来实现的。如果我们一直使用字符数组来处理字符串,就需要不断地编写相同的代码,而String类的使用,且其中有许多使用的方法,能够极大的减少代码的覆写率,提高编程开发的效率。

2.StringBuilder

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

答:因为在此题目中,运行次数n是未知的,有可能n的数值很大,那么用String来修改字符串的话,就会导致要不断地向内存申请空间,从而造成空间和时间上的巨大浪费,而用StringBuilder来修改字符串的话,就不会造成内存空间的浪费,因为StringBuilder是可变类型。

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

  • 第一问:该方法的功能是在原有的字符串之后添加新的字符串。
  • 第二问:StringBuilder内部中是使用包含字符序列的数组来存放字符的。
  • 第三问:是通过调用StringBuilder的变量stringBuilder.append("要添加的字符串")的append()方法来在原字符串后面追加字符的。

    3.字符串与字符串池

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

  • 程序输出结果:true
  • 字符串池的概念解释:使用String""声明的变量,如果引号中内容相同,可以直接从字符串池中调用数据,就不用开辟新的内存空间,即str1和str2指向的是同一块堆内存空间,内容是"hi"。
  • 创建的字符串对象数量:2个

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

  • 第一问的答:因为==比较的是相对应的堆内存地址数值,引用类型申请的内存空间不同,因此就算所包含的数值相同,其堆内存空间也不同,返回值必定是false;对于引用类型String我们可以使用String类中的equal()方法或者equalIgnoreCase()方法来比较两个字符串的内容是否相同。

    4.Wrapper(包装类)

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

  • 第一问:因为Java中存在自动装箱和自动拆箱的功能,可以实现基本类型(100)到引用类型也就是对象类型(Integer)的转换。
  • 第二问:Integer x = 100包含了向堆内存申请内存空间的操作,int y = x+1包含了自动拆箱的操作,x++也是包含了自动拆箱的操作。

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

  • 第一问:因为基本数据类型在方法的使用过程中,可能不能作为参数传入,例如集合类,如果没有包装类的话,我们就无法保存基本数据类型,更别说传入了,此时就需要我们自己写一个类,然后再把这些属性封装起来,这样就很麻烦了,因此需要包装类的出现。
  • 第二问:包装类的出现,以及jdk1.5之后出现的自动拆箱和自动装箱,大大缩减了代码的冗长,更加方便了成员,属性的编程。

    5.实验总结

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

  • a.队友:吕炜彬,两个人一起在宿舍进行了pta中StringBuilder题目的结对探讨。

1122718-20171227095820807-1172351801.png

  • b.这一次结对编程我的感受:有些许的不适应,因为在同一个问题的思考上,两个人的想法不可能完全相同,甚至有可能完全不同,因此花费了不少时间在整合两个人的思路上,对于结对编程能否带来1+1>2的效果这个问题上,我并不能给出准确的回答,不过可能在第二次第三次结对编程中,会慢慢适应,也可能达到1+1>2的效果。

    5.2 PTA-1综合小测验

    答:本题的主要结构是switch结构,其中在输入choice来选择函数功能的时候要注意对于一开始读入choice时,其后面回车符号的处理。其中输出带有中括号“[ ] “的数组时用到了System.out.println(Arrays.toString())的格式输出。这个也为之后我们格式输出时带来了极大的便利。

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

    答:这道题目中首先要对输入的字符串进行截取,这里我使用的时String类中的substring()方法来进行字符串的截取,而后在截取的字符串上通过String类的compareTo方法进行字符串的数值大小比较。如果要进行降序排列可以通过二分法之后再通过for循环进行倒置排序,以此完成降序排序。

    5.4 PTA-4动态数组

    答:在这道题的输入控制中,我们使用while(sc.hasNext())来完成控制输入。在根据输入的n的值来打印相应的九九乘法表时,要用到两层for循环来实现。其中,输出格式需要重点注意一下。

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

  • 第一问:本题目中主要运用ArrayList类中的方法,add(),contain(),indexOf(),lastIndexOf(),get(),remove()来完成。
  • ArrayList使用的时动态数组,可以随时改变数组的长度。

    3.码云以及PTA

    3.1码云代码提交记录

    1122718-20170923205953587-175424724.png

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

    1122718-20170923210434931-103025471.png

    3.3使用老师发的jar软件统计每周的代码量

    周次总代码量新增代码量总文件数新增文件数
    228028055

转载于:https://www.cnblogs.com/suwl/p/7582692.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值