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

时间:2025-01-24 13:34:02

1. 本章学习总结

本周Java教学主要围绕Java的基本语法展开。在本周的学习中,我了解到了:

-Integer的取值范围

-if...else条件式,switch条件式,while循环,break与continue的区别

-Java语言中存在大量可以直接使用的函数,如:Arrays.sort,Arrays.search,Arrays.deepToString等,能够有效提高编程效率

-同时介绍了更多关于使用命令符编译Java程序的方法,如:java -d等

2. 书面作业

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

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

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

使用ctrl+左键点击截图中所示的“String”,可打开源代码文件

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

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

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

答:使用String类修改字符串时,系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。而使用StringBuilder可以减少Java中对象的添加删除次数,在频繁的对字符串进行修改操作时有利于提高运行效率

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

答:一般来说==比较两个引用的对象,比较两个字符串的值是否相等应该使用equals()方法

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

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

答:输出结果为true

该代码创建了2个字符串对象。第一个字符串对象:当Java遇到String str1 =“hi“这样的语句时,会先在字符串池中寻找是否已经存在"hi"这个字符串,如果没有,则建立字符串"hi"对象,变量str1指向这个地址。然后遇到语句str2=“hi“,这时字符串池中已经有 "hi"了,所以直接让变量b也指向这个地址,等于只创建了一个字符串对象。第二个字符串对象:str3以new的形式被创建出来

Q5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i

答:调用了Integer的valueOf()方法 ,形式如:public static Integer valueOf(int 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?

答:(1)true;(2)false

调用了Integer valueOf(int i);valueOf()方法通过Cache数组将传入的int进行缓存,取值范围为-128至127之间,而128不处于取值范围内,此时Integer将会以new的方式创建两个新实例,使得i1,i2在缓存中的位置不同,而==的比较只有等号两边的值为同一值.也就是在内存中是同一个地址时才会返回true

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方法

Q7.1 尝试用命令行进行编译并运行,截图

答:201521123057 《Java程序设计》第2周学习总结

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

答:201521123057 《Java程序设计》第2周学习总结

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

答:src存放源文件,bin存放编译产生的文件

3. 使用码云管理Java代码

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

4. PTA实验

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

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

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

通过本次实验,我认识到了细节的重要性,还学习到了许多新知识,例如ArrayList,BigDecimal,BigInteger,Arrays.deepToString,字符串的拼接.append()方法,字符串的截取.substring()等等