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 ...
随机推荐
- Markdown公式编辑
一.公式使用参考 1.如何插入公式 行中公式(放在文中与其它文字混编)可以用如下方法表示:$ 数学公式 $ 独立公式可以用如下方法表示:$$ 数学公式 $$ 自动编号的公式可以用如下方法表示: 若需要 ...
- Java的static和final关键字的用法
static关键字的用法 static的意思是"'静态的",在java里面可用于修饰属性和方法. static关键字的应用应注意以下几种情形: 1.static作用于某个字段,一个 ...
- 关于Java中面向对象章节、IO 流中的重点基础知识。
一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多 ...
- Ajax 学习笔记
什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...
- Maven学习 使用Nexus搭建Maven私服(转)
为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...
- BotVS趋势交易策略-RSI
BotVS趋势交易策略-RSI, 基于Python实现. RSI简单买卖测试, 默认 70-100卖出,0-30买入 参数 代码 import math def adjustFloat(v): ret ...
- View.post() 不靠谱的地方你知道吗?
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 一.前言 有时候,我们会需要 ...
- vue-cli脚手架npm相关文件解读(1)webpack.base.conf.js
系列文章传送门: 1.build/webpack.base.conf.js 2.build/webpack.prod.conf.js 3.build/webpack.dev.conf.js 4.bui ...
- 【JavaScript】Js控制页面所有元素只读
在页面初始化加载以下readOnlyPage()方法,可实现所有元素只读,方便实用. <script language="javascript"> function r ...
- C# 实现模拟登录功能,实现公共类分享。
前言 最近在研究模拟登录的各种方法, 主要想要实现的两个功能是: 1.点击按钮可以直接跳转并登录到某一个系统中. 2.抓取某一个系统中某一个页面中的特定数据. 为此在网上查了许多的资料,首先了解到自身 ...