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++;这一串命令中包含了些什么操作?

Q1Integer 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转化为不可变的、任意精度的有符号十进制数,使用addmultiply进行运算。


3.码云及PTA

3.1 码云代码提交记录

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





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


201621123010 《Java程序设计》第2周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Python 读取写入配置文件 —— ConfigParser

    Python 读取写入配置文件 —— ConfigParser Python 读取写入配置文件很方便,可使用内置的 configparser 模块:可查看源码,如博主本机地址: “C:/python2 ...

  2. 国内比特币bitcoin交易平台

    火币网:   www.huobi.com 比特币中国:   www.btcchina.com okcoin:    www.okcoin.cn 中国比特币:   www.chbtc.com 比特币交易 ...

  3. MapReduce中的Shuffle和Sort分析

    MapReduce 是现今一个非常流行的分布式计算框架,它被设计用于并行计算海量数据.第一个提出该技术框架的是Google 公司,而Google 的灵感则来自于函数式编程语言,如LISP,Scheme ...

  4. PAT 1138 Postorder Traversal [比较]

    1138 Postorder Traversal (25 分) Suppose that all the keys in a binary tree are distinct positive int ...

  5. 文件下载—SSM框架文件下载

    1.准备上传下载的api组件 <dependency> <groupId>commons-io</groupId> <artifactId>common ...

  6. 2017年浙江中医药大学程序设计竞赛 Solution

    训练地址 A: 树剖板子题 求最小值的时候要注意值是不是有负数,如果有,初值要置为$-INF$ #include <bits/stdc++.h> using namespace std; ...

  7. .net webform 把word转为html

    首先添加引用 引用命名空间 using Microsoft.Office.Interop.Word; using System; using System.Collections.Generic; u ...

  8. laravel 项目部署注意事项

    1.'Failed to open stream: Permission denied' error - Laravel Laravel >= 5.4 php artisan cache:cle ...

  9. 微信 audio 获取 duration 为 NaN 的解决方法

    先加load() myaudio.load(); myaudio.oncanplay = function () { alert(myaudio.duration); } load() 方法用于在更改 ...

  10. 20145311 《Java程序设计》第八周学习总结

    20145311 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章 NIO与NIO2 高级的输入输出处理,可以使用NIO(New IO),NIO2是文件系统的API 第十五章 ...