201621123010 《Java程序设计》第2周学习总结
1.本周学习总结
- Java有基本数据类型(类似c)和引用数据类型(不同于c)两种数据类型。
- Java是面向对象的语言,引用类型变量存放指向对象的引用,而不是该对象本身。因此判断两对象值是否相等时,需使用
equals,==用于比较两对象的引用是否相同。 String对象是不可变的,例String x = "abc": x = x + "123",x指向的原来的内容“abc”未改变,而是生成新对象“abc123”。- 频繁对字符串进行修改时,使用
StringBuilder,避免耗用大量时间及内存。 - Java包含基本数据类型、对象、包装类、数组,基本类型有对应的包装类。包装类的自动装箱及自动拆箱语法。
foreach循环,for(type element:arr)。- 多维数组:数组初始化、不规则数组。
- 动态数组ArrayList及其常用方法,特点:无法存放基本数据类型,只能存放引用类型。
2.书面作业
1.String-使用Eclipse关联jdk源代码
1.1查看String对象的源代码(截图),分析String使用什么来存储字符串?

String使用char数组存储字符串。
1.2分析其构造函数public String(char value[])的作用?
通过char数组,生成String字符串对象。
1.3阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)
String的本质是字符串常量,一旦定义后不可改变。
1.4简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?
string属于类而且不可变,而字符数组是可变的。String使用了字符串常量池,避免了占用大量的存储空间。
2.StringBuilder
2.1 结合PTA -2(StringBuilder),说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?
频繁修改字符时,由于String是不可变的,因而直接使用String会不断生成新对象,造成内存的大量占用,耗时。
2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?
Q1:StringBuilder的append(char[] str)功能为将 char 数组参数的字符串表示形式追加到此序列,实现拼接。
Q2:用字符数组存放字符。
Q3:在原字符串的尾部添加。
3.字符串与字符串池
3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 ="hi", str2 ="hi";
String str3 = new String(str1);
System.out.println(str1==str2);

创建了了两个字符串对象,执行String str1 ="hi", str2 ="hi";时,str1指向“hi”的引用后,在常量池内添加了“hi”这一元素,而str2并没有使用new,且指向对象也为“hi”,这时在常量池内已经有了“hi”,所以str2直接复用这个“hi”,所以在最后的str1==str2判断比较二者引用时,输出true。第二句中使用了new,创建了新的对象,故本段代码一共创建了两个字符串对象。
3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?
Q1:Java中对于引用类型,使用=进行赋值时,此时变量指向的为该对象的引用,而不是该对象的本身,使用==进行判断时是判断二者的引用是否相同,而不是判断值。
Q2:比较引用类型的值是否相等时,应用equals。
4.Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?
Q1:Integer i = 100;可以替换为Integer i=new Integer(100);此处实为包装类的自动装箱语法,将基本类型转换Integer类型。
Q2:包含了自动装箱、自动拆箱。
4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?
Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
另外,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了
5.实验总结
5.1 结对编程实践

本次我的结对编程对象为吴延彬。结对编程有好处也有坏处,但对我来说可能还是不大适合,好处时可以多和同学交流各自对题目的看法以及编写思路,加快对题目的解决速度。但是各自编写一段时间感觉上就比较鸡肋,由于各自的编写习惯不同,代码上难免出现较大的出入,,一旦出现分歧,就很有可能打乱原有的思路,也比较耗时。
5.2 PTA-1综合小测验
本题中需使用switch对输入指令作区分,方法同C。斐波那契数列采用了for循环依次将前两数值相加后赋值。获取生日则使用了substring截取指定字符串。
5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?
使用了substring截取指定位置的字符串并输出,对于sort2则使用了compareTo,根据数字比较两个Character对象,如果该 Character 等于此 Character,则返回 0;如果该 Character 的数值小于参数 Character,则返回小于 0 的值;如果该 Character 的数值大于参数 Character,则返回大于 0 的值(有符号比较)。返回的值大于0时,则交换前后顺序,将大者后置。若需降序,同理,将大者前置即可,指定月份比较则将读入进行比较的位置进行改变。
5.4 PTA-4动态数组
创建动态字符串二维数组,将乘法口诀表内容作字符串依次存入,再对输出形式加以调整依次输出。
5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?
本题中创建ArrayList后,多使用JDK文档中ArrayList类所包含的方法。数组一旦确定大小,无法改变,而ArrayList可动态改变大小,且Java中ArrayList类中包含了众多的常用方法,使用便捷。
5.6 选做:5-5(浮点数计算)
本题中主要问题是浮点数计算的精确问题,由于计算机采用二进制,若直接使用+和*等符号进行运算,结果不精确。需使用String的形式读取参数,再使用类BigDecimal转化为不可变的、任意精度的有符号十进制数,使用add和multiply进行运算。
3.码云及PTA
3.1 码云代码提交记录




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



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

201621123010 《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 ...
随机推荐
- Mirror--使用证书配置镜像模板
--==================================================================--该文档主要用于内部配置模板--场景:--主服务器:192.1 ...
- Spark checkpoint机制简述
本文主要简述spark checkpoint机制,快速把握checkpoint机制的来龙去脉,至于源码可以参考我的下一篇文章. 1.Spark core的checkpoint 1)为什么checkpo ...
- [py]python中的==和is的区别
is比较id id(a) == id(b) == id(c) a is d #false ==比较值 a==b #true 举个例子:a = 1 b = a c = 1 d = 1.0 这里有3个对象 ...
- HDU:Gauss Fibonacci(矩阵快速幂+二分)
http://acm.hdu.edu.cn/showproblem.php?pid=1588 Problem Description Without expecting, Angel replied ...
- 入坑-DM导论-第一章绪论笔记
//本学习笔记只是记录,并未有深入思考. 1.什么是数据挖掘? 数据挖掘是数据库中发现必不可少的一部分. 数据预处理主要包括(可能是最耗时的步骤): 1.融合来自多个数据源的数据 2.清洗数据以消除噪 ...
- 2016-ccf-data-mining-competition 搜狗用户画像构建
想法1: 分成147(3*7*7)类, 后来觉得这样效果不好,后来看了看竞赛要求的也是分别预测,分别评分,而不是一次就把3类的标签都给出 所有后来我们改进了当时的想法,决定对年龄,性别,学历进 ...
- 2017ACM/ICPC Guangxi Invitational Solution
A: A Math Problem 题意:给出一个n,找出有多少个k满足kk <= n 思路: kk的增长很快,当k == 16 的时候就已经超过1e18 了,对于每一次询问,暴力一下就可以 ...
- Win10取消开机密码方法
1.开始菜单输入命令“netplwiz” 2.进入到用户账户页面,选择所需账户,把“要使用本计算机,用户必须输入用户名和密码”单选框取消勾选,点击应用 3.输入密码进行 这个时候会提示输入两次该账户的 ...
- linux第六周
一.知识概要 进程的描述 进程描述符task_struct数据结构(一)进程描述符task_struct数据结构(二)进程的创建 进程的创建概览及fork一个进程的用户态代码理解进程创建过程复杂代码的 ...
- IntelliJ IDEA 常用快捷键,maven依赖图,个性化设置,禁用Search Everywhere
查看idea 中jar关系图 快捷键: Ctrl+/ 用于注释,取消注释 Ctrl+Shift+F 全文搜索 Ctrl+F 单页面查找 Ctrl+Alt+Shift+L 格式化代码 ======== ...