201521123006 《Java程序设计》 第2周学习总结
1. 本周学习总结
本周进一步学习了java,了解了java编程中一些特定的用法,比如:在编译程序时可以使用import来减少输入包名称。本周还学会了使用枚举类(enum Choice{fab,sort})的 使用及switch语句和if...else语句字java中的使用。虽然java和C语言中控制流程的语句基本上相同,但是对于while语句中的条件不在可以是简单的条件,而是必须是条件式,且返回值为true或false。并且在实验课上对java的编程软件——eclipse的使用进行了进一步的加深。在实验课中学会了使用eclipse来管理自己的码云,这种方法对比起使用cmd来说,更加的方便,简洁,不需要输入过多的命令语句。而且发现了eclipse软件的更便捷之处,可以先行编写出程序的大体结构,eclipse软件可以快捷编写所需要的函数等。
2. 书面作业
Q1. 使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。
首先String对象虽然java语言中重要的数据类型,但其本身并不属于java的8种基本数据类型。因为关于对象的默认值是null,而String也是一种对象,所以String的默认值也 是null。
其次在C语言中,对于字符串的表示通常使用char数组,而在java中,通常使用String对象,在了解String对象的用法后可以默认String是对于char数组的进一步操作或者是延伸。String对象的作者针对一些方面进行了优化。String对象在不变性,常量池进行了优化,使其能够具有节约内存,性能好,安全的优势。
最后String对象是对于char数组本身无法封装字符串操作所需的基本方法的补充,是为提高处理字符串的效率,节约内存而设计优化的,毕竟字符串在计算机处理中有着很重要的地位。
**Q2. 为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String? **
因为对于String来说是对一串字符串进行操作,但是其是不可变类,而对于StringBuilder来说,它同样是对一串字符串进行操作,但是它却是为可变类。并且如果使用String 对字符进行修改,需要把字符都写入内存,然后删除原来的String对象,再创建一个String对象并读取内存内的数据,而使用StringBuilder则能够在原来的String对象上直接进行字 符串的修改,比起String更加简单,所需时间更少。
Q3. 比较两个字符串的值是否相等?为什么不能用==直接进行比较?
因为在java中“==”比较的是引用的值,“==”只能比较是否是同一个对象。在比较引用时,如果引用指向内存中的同一对象,结果为true。比较两个字符串的值是否相等, 一般是使用equals方法。
Q4. 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 =“hi“, str2=“hi“;
String str3 = new String(str1)
System.out.println(str1==str2);
程序段的输出结果是:true。
在本程序段的第一行:它在常量池中创建了一个对象str1,它的值为“hi”,并且对象str2的值同样为“hi”,而str1,str2是为同一个字符串对象。
在本程序段的第二行:它则是在常量池中另外新创建了一个对象str3,并且把str1的值“hi”赋值给str3。
在本程序段的第三行:此行则是在比较str1和str2是否为同一个对象,而str1和str2是为同一个对象,所以此时输出“true”。
**Q5. Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i **
因为对于Integer来说,在JDK5.0的版本之后,能够采用自动装箱和自动拆箱,装箱就是将java中的基本类型转换成对象类型,而拆箱就是将对象类型的值取出来赋值给java中的基本对象类型。所以题目中的Integer i=100则可以理解成:Integer i = new Integer(100);int j = i.intValue。所以可以将100赋值给i。
**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()函数缓存,则对赋值的整数要求在-128—127之间。而在上面的代码中,第一行中的整数为127,在其范围内,所以第二行输出的结果为:true。而代码的第三行中的整数为128,超出了范围,所以第四行输出的结果为:false。
输出结果:true
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,尝试分析背后实现的原理。
Eclipse中源代码放在src目录中,而class文件放在bin目录中。
因为对于Ctrl+f11来说,它执行的是含有main的代码,它首先会判断当前是否是可以执行的代码,没有包含main则会执行上次的代码。
Q8. 自己在这门课的目标与计划
。请描述一下你的技术基础(会什么语言,都写了多少行代码)
(1)C语言和c++,因为大一一年的实践都在学习C语言和c++,所以对于编写代码的量还挺大的,至少也有几千行了,具体没有数过。
(2)java,刚开始入门,编写的程序主要以pta上的实验题目为主,现在写的代码主要是实验一和实验二的编程题目。
。一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
准备利用每天晚上的时间来学习java及编写java的程序。
一周准备些二到三百行,或者更多,依情况而定。
采用以编程为主,实际应用为主,看书为辅的方式来学习java,毕竟即使看了好多遍的书,都抵不上自己动手编写下程序来得深刻和明白。
遇到困难打算自己先想想能不能自己解决,如果各种方法都行不通,则可以去询问老师,同学或者也可以在专业的网站上向广大的IT专业的人员询问。
。关于这门课的smart目标参考链接
首先对于smart目标是在目标管理中的一项原则,分别由「Specific、Measurable、Attainable、Relevant、Time-based」五个词组组成。这是订定工作目标时,必须谨记的五项要点。
S 即specific,代表具体的,指绩效考核要切中特定的工作指标,不能笼统;
M 即measurable,代表可度量的,指绩效指标是数量化或者行为化的,验证这些绩效指标的数据或者信息是可以获得的;
A 即attainable,代表可实现的,指绩效指标在付出努力的情况下可以实现,避免设立过高或过低的目标;
R 即relevant,代表相关性,指实现此目标与其他目标的关联情况;
T 即time-based,代表有时限,注重完成绩效指标的特定期限。
能够掌握好java的知识,能够独立完成一个java的大项目,希望能够在本学期期末的时候能够对于java运用自如,至少不需要在编写程序时经常不知道从哪里下手,同样也希望学习java能为以后的就业打好基础,虽然还没决定好在毕业后是否从事IT工作,但依旧希望学好java。
Q9. 选做:公交卡里应该还有多少钱?请分析原因
29.4
可能是无符号浮点数的小数位没有在正确的位置,而是后移了。
3. 使用码云管理Java代码
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图
4. PTA实验
在这次的pta试验中,对于java中一些特定的用法有了了解,例如学会了使用Arrays及String的方式进行编写程序,从而使得程序变得更加简单,执行时间也有所缩短。而且在java中String是不可变类,当我们需要在有限制执行时间和内存大小时,我们需要采用StringBuilber,因为它是可变类,不会生成新对象。对于ArrayList的基本使用有了初步的了解,通过对ArrayList进行编程,从而对ArrayList更加熟悉,在以后使用到的时候能够很熟练。
5. 小任务(加分)(PS:有时间的话会补上的)
Q1. 现有choice.txt文件,里面包含上千行,上百题选择题。先在老师要将其中的题目转化为PTA网站的选择题。然而PTA网站上的选择题对输入格式有要求。要求如下:
* 题面第1行及选项行前不能有空格,题面其他行无此要求。
* 题面第1行结尾要包含答案字符串,内容形式@[C](2),代表该题答案为C,分值为2
* PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。
* 统计:题目数量
* 输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。
* 提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。
* 提示2:题目很简单,大概50行左右,不要畏难。
* 进阶:可以为将来的自动出题、组卷系统做准备
201521123006 《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 ...
随机推荐
- InnoDB online DDL与快速索引创建
导读:在MySQL5.6之前版本,Innodb表的许多DDL操作是非常昂贵.许多ALTER TABLE操作的原理是通过创建新的空表,定义被要求的表选项和索引,然后逐行拷贝已存在记录到新表,在插入行时更 ...
- C++新建Dialog程序
1.新建: IDE VS2013 新建项目|C++|MFC,选择“基于对话框” 2.为Dialog添加类 在Dialog(界面)上右键,选择“添加类”,然后再弹出界面输入类名即可. 为什么要添加类? ...
- Java的static和final关键字的用法
static关键字的用法 static的意思是"'静态的",在java里面可用于修饰属性和方法. static关键字的应用应注意以下几种情形: 1.static作用于某个字段,一个 ...
- Fatal error: Class 'LearningPHP1\mysqli' not found
在php文件的头部使用了namespace 结果报错mysqli不在LearningPHP1中, 结论:如果定义了命名空间,在使用mysqli做连接的时候就要指明mysqli所在的命名空间. < ...
- Tomcat7安装及配置教程
Apache Tomcat7.0安装及配置教程.. Apache Tomcat7.0官方网站链接:http://tomcat.apache.org/ apache-tomcat-7.0.73-wi ...
- Andrew Ng机器学习课程笔记--week11(图像识别&总结划重点)
一.内容概要 Photo OCR Problem Decription and pipeline(问题描述和流程图) Sliding Windows(滑动窗口) Getting Lots of Dat ...
- Catalan Number 卡特兰数
内容部分来自以下博客: Cyberspace_TechNode 邀月独斟 一个大叔 表示感谢! Catalan数的引入: 一个长度为2N的序列,里面有N个+1,N个-1 它的任意前缀和均非负,给定N, ...
- java-生产者消费者模式
经常会有公司叫我们手撕代码,比如网易,阿里,那我们是不是该掌握下呢.下面这段代码来自<现代操作系统>进程与线程P49页. public class ProducerConsumer { p ...
- Android项目实战(三十四):蓝牙4.0 BLE 多设备连接
最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据. 查询了很多资料终于实现,现进行总结. ------------------------------------------- ...
- JS判断当前使用设备是pc端还是web端(转MirageFireFox)
js判断当前设备 最近用bootstrap做自适应,发现仍然很难很好的兼容web端和PC端的现实. 仔细观察百度,淘宝,京东等大型网站,发现这些网站都有对应不同客户端的子站. 站点 PC端url we ...