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 ...
随机推荐
- Python 读取写入配置文件 —— ConfigParser
Python 读取写入配置文件 —— ConfigParser Python 读取写入配置文件很方便,可使用内置的 configparser 模块:可查看源码,如博主本机地址: “C:/python2 ...
- 国内比特币bitcoin交易平台
火币网: www.huobi.com 比特币中国: www.btcchina.com okcoin: www.okcoin.cn 中国比特币: www.chbtc.com 比特币交易 ...
- MapReduce中的Shuffle和Sort分析
MapReduce 是现今一个非常流行的分布式计算框架,它被设计用于并行计算海量数据.第一个提出该技术框架的是Google 公司,而Google 的灵感则来自于函数式编程语言,如LISP,Scheme ...
- PAT 1138 Postorder Traversal [比较]
1138 Postorder Traversal (25 分) Suppose that all the keys in a binary tree are distinct positive int ...
- 文件下载—SSM框架文件下载
1.准备上传下载的api组件 <dependency> <groupId>commons-io</groupId> <artifactId>common ...
- 2017年浙江中医药大学程序设计竞赛 Solution
训练地址 A: 树剖板子题 求最小值的时候要注意值是不是有负数,如果有,初值要置为$-INF$ #include <bits/stdc++.h> using namespace std; ...
- .net webform 把word转为html
首先添加引用 引用命名空间 using Microsoft.Office.Interop.Word; using System; using System.Collections.Generic; u ...
- laravel 项目部署注意事项
1.'Failed to open stream: Permission denied' error - Laravel Laravel >= 5.4 php artisan cache:cle ...
- 微信 audio 获取 duration 为 NaN 的解决方法
先加load() myaudio.load(); myaudio.oncanplay = function () { alert(myaudio.duration); } load() 方法用于在更改 ...
- 20145311 《Java程序设计》第八周学习总结
20145311 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章 NIO与NIO2 高级的输入输出处理,可以使用NIO(New IO),NIO2是文件系统的API 第十五章 ...