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. 创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)

    上一节我们准备好了 macvlan 的实验环境,今天在 host1 和 host2 中创建 macvlan 网络 mac_net1: 注意:在 host2 中也要执行相同的命令. ① -d macvl ...

  2. 身在魔都的她,该不该继续"坚持"前端开发?

    一 这个女孩儿,是我很好很好很好的一位朋友,也是中学的同学,去年从她的本科大学毕业,毕业后由于没找到合适的工作而选择去培训机构培训了比较火爆的前端开发,之后去了上海找工作,但是由于一些原因在从上一家公 ...

  3. MAC下安装MAMP的Mongodb

    首先安装Mongodb服务端: 1.brew install mongodb 2.修改 vim /usr/local/etc/mongod.conf文件,db路劲 3.创建.修改/data/db,并为 ...

  4. JS中几种常见的数组算法(前端面试必看)

    JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...

  5. noip普及组2005 陶陶摘苹果

    陶陶摘苹果 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...

  6. eclipse自动提示设置以及问题:去除变量自动提示(图文详解)

    第一件事 eclipse设置为自动提示 配置步骤: 1 Window > Preferences > Java > Editor > Content Assist 2 &quo ...

  7. PHP 字符串替换

    这是2017上半年的第一篇学习笔记,也是最后一篇,捂脸- 在前几天的工作中,关于"银行卡"页面原型如下,其中,不同银行卡的卡号只保留了最后四位数字可以显示,其他数字均用*字符隐藏了 ...

  8. Django 学习笔记(三)模板导入

    本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...

  9. Android笔记: 日期格式化

    下面的转换符来自Java,但是在android中同样可用.(以下表格内容来自互联网.) 常见日期格式化转换符 转换符 说 明 示 例 %te  一个月中的某一天(1-31)  2 %tb  指定语言环 ...

  10. Android笔记: fragment简单例子

    MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bun ...