201621123072《java程序设计》第二周学习总结

1.本周学习总结

  • java的两种数据类型(基本数据类型和引用数据类型)
  • 字符串类型String
  • foreach循环
  • 数组的基本操作

2.书面作业

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

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

截图:1098118-20170923100436368-72722874.png
string是使用char定义的数组来存储字符串。

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

这是一个把char型的字符串数组转化为String型的字符串的函数。

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

String型的字符串不可变,长度无法增加,所以要更新String型的字符串时往往采用新字符串替代旧字符串的方法而不是直接添加或删减。

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

String和字符数组都是用于存储字符,String是类,因为String在处理字符串时更加高效,也更方便操作。

2.StringBuilder

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

因为String的存储具有不可变性,每次进行修改只能用新字符串去替代旧字符串,如果需要频繁修改的话会很麻烦,而StringsBuilder是一个动态的存储方式,如果空间满了就会生成新的空间,方便多次修改。

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

功能是在一个字符串后面接上另一个字符串,StringBuilder内部有规定一个空间当需要更多空间时将原来的空间翻倍添加新的东西,新字符串接入时直接接在上个字符串尾端,然后长度增加即可。

3.字符串与字符串池

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

String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
因为str1和str2的地址相同,str3也有一个对象,最后输出true。

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

对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。假如定义了一个a和一个b,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。a和b所指的对象,它们的内容都是就算是一样的,应该是“相等”,但是==操作符并不涉及到对象内容的比较。
要对内容进行比较的话需要用到equals。

4.Wrapper(包装类)

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

integer有对目标进行赋值的用法,这一串命令包含了赋值和对目标的算法运算。

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

第一,基本数据类型之间的相互转换不是都可以制动转换的,而你强制转换又会出问题,比如String类型的转换为int类型的,那么jdk为了方便用户就提供了相应的包装类。
第二,有时候一个函数需要传递一个Object的变量 而你想传递int类型的进去显然不行,怎么办呢,用到了包装类。

5.实验总结

5.1合作任务

1098118-20170923124338993-486210268.jpg
1098118-20170923123132712-1454221824.jpg
我的队友是张恒,我们一起打的pta题目是身份证那题,因为我们两个本身的编程水平并不高,他先打了开头一些简单的代码,然后换成我继续,继续的过程中因为不是自己从头开始打所以很多东西有点看不懂要和他协商一下不然看代码就会花费很多时间,后面的内容又比较难。。。所以我们后来基本也就是一起在讨论,但是打了很久还是不能完成题目的要求,我觉得如果要合作双方的水平得高一点,不然可能效果不如自己研究得好,结果可能会是1+1>2, 0.5+0.5<1这种情况。

5.2PTA-1综合小测验

感觉难度有点大对我们。。各个函数都有些许出错的情况,百度也百度不到错误的在哪里,可能是因为打的代码还不够多,一些基础的东西都不适合懂的原因

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

1098118-20170923161447650-1277241813.png
降序的话只需要修改其中的判断符号即可,对出生月份进行排列可以将截取的位置进行调整即可。

5.4 PTA-4动态数组

只知道方法是建立二维数组但是无从下手。。。感觉java不如c语言来的直接好建。

5.5 PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?

  • 容量动态增长,牺牲效率
  • 不校验类型,编译时会
  • ArrayList可以在任意位置插入和删除项

3.码云及PTA

3.1. 码云代码提交记录

1098118-20170923163610509-1017365170.png

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

1098118-20170923162429290-1141391014.png

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

1098118-20170923203213337-1196369514.png

转载于:https://www.cnblogs.com/chenxingyuan/p/7580650.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值