201621123006 《Java程序设计》第2周学习总结
1. 本周学习总结
以几个关键词描述本周的学习内容。并将关键词之间的联系描述或绘制出来。
原则:少而精,自己写。即使不超过5行也可,但请一定不要简单的复制粘贴。
- java数据类型:java数据类型分为基本数据类型和引用数据类型,其中布尔型为java特有的基本类型
- 字符串类型String:String类最常用的引用类型之一,是不可变的,对String类的任何改变,都是返回一个新的String类对象
- 字符串常量与字符串池:JVM为了减少字符串对象的重复创建,它维护了一个特殊的内存,这段内存被称为字符串常量池
- 装箱与拆箱:装箱就是把值类型转换成引用类型,反之就是拆箱
- 动态数组:无法存放基本数据类型,只能存放引用类型
- StringBuilder对字符串进行修改。
书面作业
String-使用Eclipse关联jdk源代码1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?
源代码如下:
String实际上是用字符数组来存储字符串。
1.2 分析其构造函数public String(char value[])的作用?
- 用Char数组来存放String对象。如
String str = "12";
相当于char a[] = {'1','2'};
String str = new String(a);
。
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
- 如果oldChar字符串在String对象中没有出现,就返回在此 String 对象中的引用。否则创建一个新的对象,这个对象只是将所有的oldChar替换成newChar,其他与String对象相同。在这个过程中是创建了一个新的对象,oldChar替换成newChar这一动作并没有指向原来的String对象。
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
- 字符数组是char型的,String中的每一个元素都是char,它是char型数组的封装,有函数可以用,比如
substring()
,这就为我们节省了不少时间。
StringBuilder
2.1 结合PTA -2(StringBuilder),说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
- String是固定不变的,在进行字符串连接的时候要新建一个字符串然后赋值,如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统空间。而StringBuilder是可变的,不用生成中间对象,不浪费空间。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
- 功能:将char数组参数的字符串表示形式追加到此序列。
- StringBuilder内部使用字符数组来存放字符。
将数组参数转换成字符串,然后按顺序将其追加到序列中,这个序列的长度增加。
字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);答:输出true。这段代码创建了两个字符串对象。在执行
String str1 ="hi";
时,在常量池中无法找到,于是创建一个"hi"对象;在执行str2="hi";
时,由于执行String str1="hi";
语句时已经创建过"hi",所以直接从常量池中引用,不用创建,在执行String str3 = new String(str1);
System.out.println(str1==str2);
时又新建一个对象,共两个字符串对象。
3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?
- "=="是用来比较两个字符串的存储地址是否相同的,如果两个相同的字符串放到不同的地址时,使用"=="来比较就有可能出错,所以要用equals来比较。
Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
- 因为自动装箱可以将值类型转换成引用类型,所以可以将100赋值给i;这串命令包含了自动装箱和自动拆箱。
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
- 因为基本数据类型之间的相互转换不是都可以实现的,包装类可以方便的实现基本数据类型之间的转换。
- 包装类整合了很多函数,在编写代码过程中我们可以直接调用。
实验总结
5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目。
- 队友:肖文婷
- 题目:身份证排序
- 这是我们第一次结对编程,过程很艰难,也遇到了不少问题。因为两个人思路不一样,但是轮到你的时候你又要把队友的代码看懂,按照她的思路去往下想,可能你好不容易勉强写了一部分,队友又发现她接不下去你的思路……我们就是这样的……然后我们就换了一个方法,先统一一个思路再轮流往下编。时间花得比一个人做要多,目前来说还没有做到1+1>2的效果,但是也不是没有收获,在这个过程中我听到了队友不同的想法,还有我卡住的地方也得到了队友的帮助,还是很不错的。
5.2 PTA-1综合小测验
- 用switch语句来实现功能的选择,斐波那契数列和排序以及查找都是调用函数实现的依次调用
fib(n)
、convertToIntDigits(strDigits)
、Arrays.sort(digits)
等函数,然后用System.out.println(ids[i].substring(6, 10)+"-"+ids[i].substring(10, 12)+"-"+ids[i].substring(12, 14));
语句来实现身份证中出生年月日的截取和输出。
5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
- 出生日期的截取和输出与5.2相同,如果需要降序的话就修改冒泡法中的交换条件;若要按照其中的出生年月排序,就类似PTA第二题,将出生年月截取出来进行排序后输出即可。
5.4 PTA-4动态数组
- 使用动态二维数组来存放乘法表,用嵌套for循环完成,最后使用
Arrays.deepToString
输出。
5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
ArrayList可以改变大小,也就可以动态增添或删除数组中的元素,判断数组是否为空等。而且实现这些功能的方法都是可以直接调用的额,比较方便,如:
remove (int index)
移除指定位置上的元素、isEmpty()
如果列表中没有元素,则返回true等。选做:公交卡里应该还有多少钱?请分析原因
1.png
3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图
3.2 截图题集“Java基本语法”PTA提交列表
3.3 使用老师发的jar程序统计每周的代码量
201621123006 《Java程序设计》第2周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- PHP分页及原理
在看本文之前,请确保你已掌握了PHP的一些知识以及MYSQL的查询操作基础哦. 作为一个Web程序,经常要和不计其数的数据打交道,比如会员的数据,文章数据,假如只有几十个会员那很好办,在一页显示就可以 ...
- Mac OS下开启自带的apache服务
Apache路径 /etc/apache2/ [root@GGs-MacBook-Pro:/Volumes/SSD/blog#cd /etc/apache2/ [root@GGs-MacBook-Pr ...
- Python面试题目之Python的复制和赋值浅析
python采用的是引用变量的结构,也就说如果你对一个变量赋值,并不是给这个变量开辟了一块内存空间而是将一个对象的内存空间地址告诉了这个变量,这样做的好处是便于管理,节省内存空间,便于内存释放等等.但 ...
- 20145331 《Java程序设计》第4周学习总结
20145331 <Java程序设计>第4周学习总结 教材学习内容总结 •第六章 1.继承的定义与特点: 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法, ...
- 20145335郝昊《java程序设计》第6周学习总结
20145335郝昊 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 串流(Stream): 数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出,可以使用输入串 ...
- kernel command line 参数详解
Linux内核在启动的时候,能接收某些命令行选项或启动时参数.当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核. 如果不使用启动管 ...
- delegate委托
https://www.cnblogs.com/leicao/p/5251090.html 委托是一种存储函数引用的类型,在事件和事件的处理时有重要的用途 通俗的说,委托是一个可以引用方法的类型,当创 ...
- 【读书笔记】《深入浅出nodejs》第一章 Node简介
1. Node的官方网站: http://nodejs.org 2. Node的缘起: Ryan Dahl 打算设计一个高性能的Web服务器. Ryan Dahl 认为设计高性能Web服务器的要点在于 ...
- idea 2017 常用图标
- 自学Jav测试代码三 Math类 & Date & GregorianCalendar类
2017-08-23 20:30:08 writer: pprp package test; import java.util.Date; import java.util.*; public cla ...