201521123029《java程序设计》第2周学习总结

1. 本周学习总结

(1)完成了课后习题,对所学知识进一步巩固。
(2)学会了JAVA中的选择结构,循环结构,其中条件必须为布尔表达式,与C++非0即真不同。
(3)学会java中的break和continue的使用。
(4)学习了数组在java中的运用,初始化为 int[] student=new in[10]等。

2. 书面作业

(Q1)使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。
关联截图:
源代码:
设计思路:String对象创建之后不能再进行修改。

(Q2)为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?
string每次修改字符串都是新建,然后删除旧的串会很影响效率,而stringbuilder是在字符串的末尾操作,和string比较快。例如StringBuilder每次append()调用后,都会返回原有的StringBuilder对象,方便你进行下一次操作。

(Q3)比较两个字符串的值是否相等?为什么不能用==直接进行比较?
不能。两个对象进行比较,如果使用符号,那么比较的是这两个对象的“引用”(类似C语言中指针的概念)。字符串比较,通常情况下比较的是字符串的值而非引用,不同的“引用”是可以对应相同值的,如果这时候用比较,得出的结论是不相等,但是实际上它们的值是相等的。举例说明:
String a = new String("abc");
String b = new String("abc");
a == b; //false
a.equals(b) // true

(Q4)尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 =“hi“, str2=“hi“;
String str3 = new String(str1);
System.out.println(str1==str2);

因为str1和str2对象一样,为字符串常量,所以str1==str2而str3建立了一个新的对象,参考至新建的String实例,所以这个代码创建了两个字符串对象,str1与str2指向一个,str3指向一个。

(Q5)Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i
Integer是所谓的打包器,然后当做对象来操作,也就是自动装箱,允许这样打包基本类型。

(Q6)尝试分析下面代码输出结果
Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128;

i1 == i2;//true of false?
第一问题答案是true,第二个问题是false。因为Integer的默认值为-128到127之间,第一个i1和i2地址一样结果为true,第二个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,尝试分析背后实现的原理。
不太理解。
(Q8)自己在这门课的目标与计划
请描述一下你的技术基础(会什么语言,都写了多少行代码)
一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
关于这门课的smart目标参考链接

如今我会C语言。然后C++语言还未熟练;现在一周准备花大部分空闲的时间,来编写程序与学习java,采用在实践中学习正确的答案与丰富经验开拓思维、遇上困难我会先百度一下,其中有疑惑的话我会问学习较好的同学,若还不能解惑只能依靠老师与学长助教们了。

3. 使用码云管理Java代码

在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

4. PTA实验

题目集:jmu-Java-02-Java基本语法 中的判断、选择、编程(8道)
实验中碰到的问题、思考、收获与解决方案
(1)编程第2题:首先开始编程的时候把整数连接在一起时并未调用到append(),从而导致采用字符串连接的方式效率低,每次连接都会构建一个新的String对象,既耗时又浪费空间,最后提交到PTA并没有通过。后来使用了StringBuilder,每次调用append()后,都会返回原有的StringBuilder对象,方便进行下一次的操作。让我学会了并运用append函数。让我体会到,并不用像C语言是面向过程的。JAVA是面向对象的,之后因多灵活运用学习。
(2)编程第5题:了解到需要使用 BigDecimal来处理超过16位有效位的数进行精确的运算,double可以处理16位有效数。显然不能运用Double,然而在调用BigDecimal过程之中一直遇到不熟练的问题。总有一些小问题。看不懂或者其他原因。直到慢慢调试。终于找到正确的代码。这是个必须体会的过程,不可能一蹴而就的完成。这也许就是积累经验。
(3)编程第6题:此题中运用到枚举,其中还有哦switch条件式,swicth的括号中放置取得值的变量或表达式,值必须是整数、字符、字符串或Enum。然后按要求去一步一步的编写代码,这题的问题是对不懂得未知而导致不知从何下手,此时就需要耐心去学习,去查资料。从而完成题目的要求。由于对JAVA的熟练度不高,所以有几个题目并未来得及去完成,接下来我会一一去学习完成。争取尽快完成老师给的任务。

5. 小任务(加分)

现有choice.txt文件,里面包含上千行,上百题选择题。先在老师要将其中的题目转化为PTA网站的选择题。然而PTA网站上的选择题对输入格式有要求。要求如下:
题面第1行及选项行前不能有空格,题面其他行无此要求。
题面第1行结尾要包含答案字符串,内容形式@C,代表该题答案为C,分值为2
PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。
统计:题目数量
输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。
提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。
提示2:题目很简单,大概50行左右,不要畏难。
进阶:可以为将来的自动出题、组卷系统做准备。

posted on 2017-03-04 20:16  茗想  阅读(194)  评论(1编辑  收藏  举报