1. 本章学习总结

(1)String类、StringBuilder类(频繁进行字符串的修改应选用StringBuilder,不会生成大量的字符串对象)、Math类的用法、字符串池的概念
(2)Scanner扫描器用法
(3)一维数组、二维数组及多维数组的使用(数组的静态初始化、动态初始化、数组元素的引用)、利用Arrays类相应的方法对数组进行复制、打印、排序等操作。
(4)完全限定类名(包名+类名)、包的使用、使用命令行对带有包名的java文件进行编译、运行。
(5)ArrayList的特性(ArrayList使用数组存储数据,ArrayList有个可指定容量的构造函数,可以建立足够长度的数组,方便进行插入、删除操作)。

2. 书面作业

Q1. 使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。

答:先创建一个由"public final"修饰的String类,String类中含方法名相同的无参构造方法及有参构造方法(字符数组,整形数组,字符串,字节数组等作为参数),在创建String对象时,会根据不同的参数选择相应的构造方法。

Q2.为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?

答:用StringBuilder对字符串进行频繁的修改操作, 不会产生新的字符串对象,占用的内存小,而用String则会产生大量的字符串对象,占用的内存空间大,显然,用StringBuilder的效率高。

Q3.比较两个字符串的值是否相等?为什么不能用==直接进行比较?

答:用==比较的是引用的值,即比较两个字符串的内存地址是否相同。比较两个字符串的值应该使用equals方法。

Q4.尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:

String str1 ="hi", str2="hi";
String str3 = new String(str1);
System.out.println(str1==str2);
答:遇到"String str1 ="hi";"语句时,Java会先在字符串池中寻找是否存在"hi"这个字符串,发现没有,则新建一个"hi"对象,让str1指向这个对象的内存地址,然后遇到"String str2 ="hi";"语句时,Java在字符串池中找到了"hi"字符串,则让str2也指向字符串池中的"hi"对象的内存地址。之后遇到"String str3 = new String(str1);"语句,则不会去访问字符串池,而是直接新建一个"hi"字符串对象,让str3指向新的"hi"对象的内存地址。最后遇到"System.out.println(str1==str2);"由于str1与str2指向的是同一个内存地址,所以程序输出结果为true,上面的代码创建了2个字符串对象。

Q5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i

答:从J2SE5.0之后提供了自动装箱功能,即将基本类型打包在对象之中,上述代码相当于"Integer i=new Integer(100);"。

Q6.尝试分析下面代码输出结果

Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128;
i1 == i2;//true of false
答:本题中用到了自动装箱功能,实际上会用Integer.valueof()来建立Integer实例,第一条语句由于127在-128~127之间,会从缓存中传回Integer实例,第二条语句要打包的也是127,也是从缓存中返回同一Integer实例,因为i1,i2指向的是同一个Integer实例,所以"i1==i2"结果为true.第四条语句由于128不在-128~127范围内,所以直接使用new创建新的Integer实例,同理,第五条语句也直接建立新的Integer类型,所以i1,i2指向的不是同一个Integer实例,结果为false。

Q7.package与javac、 java、 -classpath、 -d

在 com.ibm包中编写 StringUtil类,内有一方法

public static void foo1(){
System.out.println(StringUtil.class+" method:foo1");
}

在edu.jmu包中编写Main类,调用com.ibm.StringUtil的foo1方法

7.1 尝试用命令行进行编译并运行,截图

7.2 将生成的StringUtil.class放到d盘的lib目录下,将Main.class在d:\test目录下,尝试命令行下运行,截图。

7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl+f11就可以直接运行Main,尝试分析背后实现的原理。

7.1



7.2



7.3

Eclipse中源代码放在src目录、class文件放在bin目录。

Q8.自己在这门课的目标与计划

请描述一下你的技术基础(会什么语言,都写了多少行代码)

一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?

关于这门课的smart目标参考链接

答:(1)技术基础;C语言 (2)一周准备花一天半的时间在这门课上,一周准备写1000行代码,学完一个知识点自己敲一下代码运行一下,遇到困难可以借助百度搜索引擎或者请教同学、老师。(3)目标:掌握Java语言的基本用法,通过实验对所学知识进行巩固,学完Java语言,争取自己编写一个Java Web项目。

Q9.选做:公交卡里应该还有多少钱?请分析原因

3. PTA实验总结及码云上代码提交记录

3.1本周Commit历史截图

3.2 实验总结

实验碰到的问题、思考、收获与解决方案

实验碰到的问题:(1)打印斐波那契数列时输出格式错误,例如输入3,输出应为1 1 2(2)不确定search是在未排序的数组中查找还是在排序后的数组中查找(3)对字符串数组str进行排序,只需一行代码即可解决,我打了无数行。(4)打印乘法口诀时,输出格式错误,例如:2*1=2  2*2=4每一项之间,从前一个首字母算起到后一项首字母之间,包括空格总共有7个字符。(5)对两个浮点数进行精确计算,将这两个数定义为double型,先转成字符串型,再将字符串转成BigDecimal型,对其进行加法及乘法操作。

解决方案:(1)注意最后一个数字2后面没有空格,去掉2后的空格。(2)实践证明,search是在排序后的数组中查找(3)使用Array.sort(str)对字符数组进行排序。(4)使用"System.out.printf("%-7s",str);"形式输出(5)之间将两个浮点数定义为BigDecimal型。
收获:有些知识课上听懂了并不代表你就掌握了,真正要用的时候还是会犯各种各样的错误,掌握一个知识点最重要的还是要会运用。做题的时候要细心点,考虑问题要全面。

4. 其他的一些题目,如特别加分的实验题目、小任务、自己用Java做的一些小东西(可选,加分)

201521123069 《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. angularJS实战(一)

    angular实现列表 accessCtrl.js let AccessCtrl = function($scope, AlertService, DialogService, BigDataServ ...

  2. python 集合 set

    集合 set:可变集合与不可变集合 可变集合:可以向集合中添加删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素. 把不同的元素组成一起形成集合,集合不记录元素的位置或者插入点,也就是不能 ...

  3. 专业辟谣----ThinkSNS不仅仅是微博程序!

    [摘要]ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+. ThinkSNS这个词,第一眼应该想到的 ...

  4. RMAN备份介质的移动与再恢复测试 [ catalog start with ‘dir’ ]

    --RMAN备份介质的移动与再恢复测试 ---------------------------------------------------------2013/09/21   由于目前生产环境中没 ...

  5. 研究分析JS中的三种逻辑语句

    JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10;  ...

  6. Go指针

    Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...

  7. Centos定时任务

    安装crontab:yum install crontabs说明:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbi ...

  8. RoutePrefix和Route 路由前缀

    使用应用到某个控制器中所有操作的路由前缀来批注该控制器. web api /// <summary> ////// </summary> [RoutePrefix(" ...

  9. jenkins 从git拉取代码

    步骤 jenkins已集成git插件(如无,请自行下载) 1. 去到源码管理栏,选中Git: 使用http协议去获取代码 Repository URL填写http的git地址,此时未选择相应的Cred ...

  10. 一句话搞定-phpStudy安装yaf扩展

    首先下载phpStudyX64位的,然后傻瓜式安装,安装完下载yaf,由于yaf扩展的网站在国外很难下载,需要FQ,所以我这里下载了yaf5.6nts.zip,解压后把php_yaf.dll这个文件粘 ...