201621123014《JAVA程序设计》第2周学习总结
1. 本周学习总结
引用数据类型:JAVA定义字符串实际上是创建字符串的引用,将引用指向需要的字符串。
字符串常量池:直接对引用赋值时,会先在字符串中搜索是否有这个对象,已有则不创建直接指向它。
String不变性:修改string,实际上是分配新的字符串对象,然后将引用指向新的对象,与C语言不同。
StringBuilder:为了应对String不变性,为了频繁修改字符串而不生存新对象的函数。
包装类:java是面向对象的语言,但基本数据类型本身不是对象,包装类可以让数据类型变成对象,方便编程。
2.书面作业
1.String-使用Eclipse关联jdk源代码
1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?
答:
用栈来存储字符串。
1.2 分析其构造函数public String(char value[])的作用?
答:将目标char数组复制生成字符串对象,
1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
答:在java中,创建一个string字符串,相当于系统分配内容,并创建一个这个字符串的引用。当改变这个字符串引用时,相当于分配一个新的内容,然后将这个引用指向新的内容,而不会改变原来系统分配的内容,这就是string的不变性。
1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
答:String是类的一种,指的是字符串类,字符数组是数组,是char类型的,两者可以互相转化;因为string类中有许多已经定义好的函数,直接使用会比用字符数组处理字符串方便很多。
2.StringBuilder
2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
答:StringBuilder可以直接进行字符串的修改,而不是创建新的对象,String则因为有不变性,每次修改字符串时都会产生新的对象,占用空间。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
答:StringBuilder的append(char[] str)是将char数组插入到StringBuilder对象后面;
StringBuilder内部使用数组存放字符;
在原字符串的后面添加char数组;
3.字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
答:当有一个引用被赋值时,系统会先搜索这个值是否已经在字符串中,若有则直接引用这个值,所以在这里str1和str2引用的对象是相同的,这段代码的输出为“true”;str3使用了new,所以即使它所引用的对象的内容与str1相同,新对象也不是在字符串池中,所以这段代码创建了两个字符串对象。
3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?
答:因为引用有可能指向不同的对象,不同的对象就算值相同,所在位置也不一定一样;应该用函数equal比较。
4.Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
答:这里使用了自动装箱,将100赋值给i的引用对象;
自动装箱、自动拆箱、赋值、拆箱再装箱。
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
答:JAVA面向对象,但基本数据类型不是面向对象的,包装类可以让基本类型变成对象,方便编程。
5.实验总结
5.1 结对编程实践:
结对编程队友:周彪;刚刚开始学习java,两人的水平都不足,讨论经常是两个人都不懂该怎么做,结果还是一直在百度,这样反而比一个人查询的效率更低;互相交流意见确实可以引发各自的思考,但感觉在我们学java的初期,结对编程并不能达到1+1>2的程度。

5.2 PTA-1综合小测验
斐波那契数列使用循环语句逐个输出字符;
排序则使用arrays函数进行排序,输出时使用Arrays.toString可以用[]包裹;
搜索也是使用arrays类函数进行输出;getBirthDate则是用substring函数抽出身份证中的年月日。
5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
sort1:用substring将身份证号中的年月日抽出,组装起来后用Collections.sort排序;
sort2:用年月日比较后输出原身份证号;
将升序函数换成降序函数;用substring抽出月份进行排序即可。
5.4 PTA-4动态数组
先构建二维数组,然后用for循环语句将乘法表输出,空格的问题当时在不同位置直接输入“空格”都是格式错误,后来询问得知要使用%-7s的输出方式。
5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
使用ArrayList的各个函数(add、get、remove等)解决题目问题;数组的长度是固定的,而ArrayList是动态数组,比较灵活。
3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

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



3.3 使用老师发的jar程序统计每周的代码量
注意:请使用学姐更新的1.0版,使用新版前请先删除以前information.txt

201621123014《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 ...
随机推荐
- ffmpeg保存原始数据PCM YUV
保存yuv ffmpeg -i video.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv 保存pcm ffmpeg -i input.flv -f s16le ...
- Unity5 怎样做资源管理和增量更新
工具 Unity 中的资源来源有三个途径:一个是Unity自己主动打包资源.一个是Resources.一个是AssetBundle. Unity自己主动打包资源是指在Unity场景中直接使用到的资源会 ...
- solr原理
1.solr原理: 我本人的理解:solr是为解决高性能的全文索引而出现的,它将用户输入的关键字进行智能分解,分解成一个个词,过滤掉一些多余的停词及空格等,比如,“在”.“里面”.“也”.“的”.“它 ...
- pdf文件编辑
下载软件:Foxit PDF Editor,这个工具挺好用的,可以对pdf文件内容进行编辑 Foxit PDF Editor 是第一个真正的PDF文件编辑软件.许多人都希望能找到一个象编辑其它类型的文 ...
- AngularJS form $addControl 注冊控件control
需求背景: 在form中使用编写的某component directive时.想通过form's name来对form中控件进行操作, 如使用$invalid等来ng-disabled btn. 解决 ...
- linux服务器最大连接数
1 受内存限制 每个tcp连接是一个打开的socket文件,因此linux服务器的最大连接数受linux操作系统单个进程同时打开的最大文件数的限制. 这个限制本质上是对单个进程内存的限制. 查看进程最 ...
- Webpack探索【4】--- entry和output详解
本文主要讲entry和output相关内容.
- 我的设计模式学习笔记------>Java设计模式总概况
设计模式(Design Pattern)的概念最早起源于建筑设计大师Alexander的<建筑的永恒方法>一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的 ...
- 16.Django提交表单
Django表单提交一共有三种方式: 1.不使用Django组件进行提交 2.使用django.forms.Form(所有表单类的父类)进行提交 3.使用django.forms.ModelForm( ...
- Tensorflow官方文档中文版——第二章(瞎奖杯写)
包含如下几个部分: 1.面向机器学习初学者的 MNIST 初级教程 2.面向机器学习专家的 MNIST 高级教程 3.TensorFlow 使用指南 4.卷积神经网络 5.单词的向量表示(word e ...