201521123069 《Java程序设计》 第2周学习总结
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周学习总结的更多相关文章
- 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 ...
随机推荐
- android学习ProgressBar的简单使用
android 提供的ProgressBar控件分为两种,一种是不带进度的进度条,一种是带进度的进度条,如果可以计算任务的完成量那么就用带进度条的,如果无法计算任务量,那么就使用不带进度的进度条.Pr ...
- 前端性能优化--图片处理(Css Sprites 与 base64)
前言: 近期研究着前端性能的优化方面的知识,并以博客记之.之前有相同系列的文章(前端性能优化--图片懒加载(lazyload image)),这次继续是关于图片的处理,css sprites 和 ba ...
- Obj-C 实现 QFileDialog函数
Obj-C 实现 QFileDialog函数(getOpenFileName/getOpenFileNames/getExistingDirectory/getSaveFileName) 1.getO ...
- “selection does not contain a main type”解决方法
在运行java程序时,出现了错误“selection does not contain a main type”. 是因为.java文件不在项目的src路径内,也就是说源代码未被eclipse编译,字 ...
- SpringMVC详解(二)------详细架构
通过上篇博客,我们能编写一个 SpringMVC 的入门实例,但是为什么要这样写?这样写有啥好处?通过这篇博客我们会有详细的了解. 本篇博客源码下载链接:http://pan.baidu.com/s/ ...
- virtual与static
virtual与static不能同时作用于一个函数.根据面向对象的理论,virtual的成员函数是可以变子类覆盖的,是实现多态的重要手段.而static作用的成员函数表示该函数仅属于某个类. 下面是实 ...
- java项目编码格式转换(如GBK转UTF-8)
昨天突然下了个Java项目,把项目导入到eclipse中,发现项目是gbk编码格式想把项目变为utf-8,但是发现转换格式比较麻烦就写了这个代码,后面改进了下,想到说不定有人也需要就把它写了出来 代码 ...
- Linux云计算 面试时最常遇到的40个问题
1)使用云计算有哪些优点? 使用云计算有下列优点: a)备份数据和存储数据b)强大的服务器功能c)SaaS(软件即服务)d)信息技术沙盒功能e)提高生产力f)具有成本效益,并节省时间 2)可否列举哪些 ...
- 45、concurrent.futures模块与协程
concurrent.futures —Launching parallel tasks concurrent.futures模块同时提供了进程池和线程池,它是将来的使用趋势,同样我们之前学习 ...
- Python学习笔记之运算符之一
算数运算符 +加法运算符 -减法运算符 *乘法运算符 /除法运算符 //整除运算符 **乘积运算符(幂运算符) %取模运算符(取余) #!/usr/bin/python # -*- coding: U ...