201521123007《Java程序设计》第2周学习总结

1.本周学习总结

  • 类名第一个字母大写,类名下的方法如main第一个字母要小写;
  • Java有三种基本数据类型:整型(byte,short,int,long,char),浮点型(float,double),boolean型(true,false);
  • 声明一个变量后必须对变量进行显式的初始化;
  • 字符串常量是用“”括起来的字符序列,最后字符不是‘]0’,""为空字符串;
  • 重复性连接字符用StringBuilder的append()函数;

2.书面作业

(1)使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。

Eclipse->Window->Preferences->Java->Installed JREs

201521123007《Java程序设计》第2周学习总结

点击右边Edit

201521123007《Java程序设计》第2周学习总结

点击右边Source Attachment

201521123007《Java程序设计》第2周学习总结

点击OK完成。

查看String源代码

201521123007《Java程序设计》第2周学习总结

一般用一下两种方式创建String对象:

String str1 = "string";
String str2 = new String("string");

String创建的对象是不变的,用第一种方式创建的字符串会放在栈里,常量池中。第二种是通过new关键字,java会把new对象放在堆中,在运行时创建。

(2)为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?

因为String创建的对象是不可变的,虽然String类中提供了很多操作字符串的函数,但是运行慢。如果要频繁地对字符串修则最好用StringBuilder,且StringBuilder的运行效率高。

(3)比较两个字符串的值是否相等?为什么不能用==直接进行比较?

比较两个字符串的值是否相等用equals(),比较的字符串首地址是否相同,若两个字符串指向同一对象则可以用“”,否则不行。

(4)尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:

String str1 =“hi“, str2=“hi“;
String str3 = new String(str1)
System.out.println(str1==str2);

第一行代码是在字符串常量池中创建一个对象str1,它的值是hi,创建的str2对象的值也为hi,str1、str2的对象是同一个;第二行代码是在字符串池中创建一个新的对象,新对象的值跟str1的值相同,但不是指str1的对象;第三行代码是输出str1==str2的结果,答案是true。

(5)Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?

这个叫对象的自动封箱与拆箱,Integer i = 100;即Integer i = new Integer(100);调用时自动拆箱得到i.intValue();

(6)尝试分析下面代码输出结果

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的valueOf()缓存,其大小不能超过127,所以第一个输出结果为true,而第二次赋值超过127,就不能缓存为基本类型,输出就为false。

(7)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 尝试用命令行进行编译并运行,截图

201521123007《Java程序设计》第2周学习总结

7.2 将生成的StringUtil.class放到d盘的lib目录下,将Main.class在d:\test目录下,尝试命令行下运行,截图。

201521123007《Java程序设计》第2周学习总结

7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl+f11就可以直接运行Main,尝试分析背后实现的原理。

源代码放src目录,class文件放bin目录。

**(8)自己在这门课的目标与计划 **

  • 请描述一下你的技术基础(会什么语言,都写了多少行代码)

我会C、C++、Java(算不得会,才刚入门,要学的还很多),C与C++能打上百行代码,但也不能说很精通。

  • 一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?

从目前看来一周从头到尾都有在这门课上花时间,因为不仅有写博客这样的书面作业,还有pta上的选择判断和几道编程题(其实很多又很难(┬_┬)),最重要的是有时间限制,天啦鲁,为了完成作业我们也是很拼的↖(ω)↗,有时很晚都在打代码。Java老师并没有像学C、C++那样手把手教我们打代码,以致于我们在之前编程的作用起到很小的情况下要打出正确完美的代码异常艰辛,通常解一道题要查阅很多的文档查看很多类方法的使用方式与格式,这就导致了作业完成时间的加长。当然了,这并不是不能完成作业的借口,所以,在平常的学习中,我们不仅要多查阅类方法的使用并应用,碰到不懂的要及时与同学讨论或向老师求助,(有很方便的度娘可以问啊_,能解决的自己解决strong)加快作业完成效率,更深入地学习好Java这门课。

  • 关于这门课的smart目标

特点SMART:

  • Specific:具体的,无二义性的,能描述 “成功” 是什么样的。
  • Motivating: 目标能激发对目标的兴趣么?实现目标对学生来说说意味着什么?他们会为之自豪么?
  • Achievable: 能做到么?是挟泰山以超北海?还是把墙角一堆砖头搬走?
  • Relevant: 和学生来到大学的大方向、目标吻合
  • Trackable: 能衡量进度的,和有些资料提到的 Measurable 相似。

远大的目标当然是精通Java,变身实力码奴,走上人生巅峰。(果然很虚无飘渺啊(~ ̄▽ ̄)~)

,现在只能先定一个小目标了,从目前和长远来看,一周都绝对不能放弃码代码啊,不练就忘(┬_┬),所以必须温故而知新,一周也就一百行代码(没问题吧?必须的(^-^)V)。职业规划什么的(那是啥?),还真没有,虽说现在都大二了,还有两年(其实很快)就出社会(面临残酷现实)了,不能啥准备都没有,所以......我不是正准备着嘛╭(╯^╰)╮。

3. 使用码云管理Java代码

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

201521123007《Java程序设计》第2周学习总结

正在进行中,还有很多没做,请多包涵Σ( ° △ °|||)︴。

4. PTA实验

- 题目集:jmu-Java-02-Java基本语法 中的判断、选择、编程(8道)

- 实验种碰到的问题、思考、收获与解决方案

问题老多了,就第一题我都要折腾好久,还没做完,目前只能这样了啦o_O。

5. 小任务(加分)

现有choice.txt文件,里面包含上千行,上百题选择题。先在老师要将其中的题目转化为PTA网站的选择题。然而PTA网站上的选择题对输入格式有要求。要求如下:##

- 题面第1行及选项行前不能有空格,题面其他行无此要求。

- 题面第1行结尾要包含答案字符串,内容形式@C,代表该题答案为C,分值为2

- PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。

- 统计:题目数量

- 输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。

提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。

提示2:题目很简单,大概50行左右,不要畏难。

进阶:可以为将来的自动出题、组卷系统做准

额呵呵:-),对于现在的我困难不止一点点啊。

上一篇:浅谈dedecms模板引擎工作原理及其自定义标签


下一篇:li span兼容性问题