201521123026《Java程序设计》第2周学习总结
1. 本章学习收获
1.熟悉了码云的部分功能的使用
2.java编程基础的巩固以及延伸
3.解决了部分PTA编程时所遇到困难并明白了解决困难的方法的原理
4.了解了用package和import管理类别
5.初步了解了对象与封装,以及继承与多态
2. 书面作业
1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。
设计思路:String 使用 private final char value[]来实现字符串存储,String其本质是字符char 常量,且一旦定义后不可改变
2.为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?
StringBuilder类是直接用于字符串操作的类,不同于String,其进行操作时不需要每次都生成新的对象并为其分配内存空间,而是在原代码上进行修改,效率较高。
3.比较两个字符串的值是否相等?为什么不能用==直接进行比较?
若有两个字符串的值完全相同,但存于不同的字符串池时(对象不同),用==比较后的结果为false;只有当两个字符串的值完全相同并且同存于一个字符串池时(对象相同),==比较的结果才是true。若要比较两个字符串string1和string2,建议使用string1.equals(string2)。(可以说==的比较是地址和值的比较而equals的比较是数值的比较)
4.尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 =“hi“, str2=“hi“;
String str3 = new String(str1)
System.out.println(str1==str2);
输出结果为true,创建了两个字符串对象。在创建String str1=“hi”时,java会先在字符串池中寻找是否有存在“hi”这个字符串(如果没有就创建一个新对象“hi”并让str1指向它)而str2=“hi”因为字符串池中已存在“hi”字符串,所以不会再新建立对象,而是将str2也指向已存在的“hi”,因此str1与str2的对象相同所以结果为true。而String str3 = new String(str1)在原有的基础上又创建了一个新的字符串对象,因此一共2个。
5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i
装箱(即直接将一个基础数据类型传给其相应的封装类(wrapper class)的做法)。integer是int的包装类,装箱过程中JDK自动调用Integer.valueOf(100)*返回指向已经存在的对象的引用;否则创建一个新的Integer对象。
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
理由:在进行自动拆装箱时,JVM对处在在-128~127(系统默认)之间的Integer值,会先查看缓存有没有打包过相同的值(为了节省内存)如果有则按原生数据返回;而在超出该范围的Integer值,则是会创建新的Integer实例.
源代码:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
通常情况下,IntegerCache.low=-128,IntegerCache.high=127
第一个等式中,Integer值127在系统默认的范围内,i1、i2建立在同一Integer实例中(值相同地址相同),返回true;第二个等式中,Integer值128在系统默认的范围外,i1、i2在不同的Integer实例中(值相同地址不同),返回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 尝试用命令行进行编译并运行,截图
javac -d . StringUtil.java
javac -d . Main.java
java -cp . edu.jmu.Main
class com.ibm.StringUtil method:foo1
7.2 将生成的StringUtil.class放到d:\lib正确的目录结构下,将Main.class在d:\test正确的目录结构,尝试在命令行下运行,并截图。
javac -d D:\lib StringUtil.java
javac -cp D:\lib -d D:\test.Main.java
java -cp .;D:\test edu.jmu.Main
class com.ibm.StringUtil method:foo1
7.1和7.2在完成的过程中出现了一些困难。
我想是可能因为我这周重装eclipse软件后出现错误,无法提取全部文件安装完成或者是系统环境变量没有设置好所造成的,待重新验证
在老师的指点下 我用everything在电脑中寻找了javac.exe发现查找不到,怀疑是文件损坏,于是重新安装了一下JDK。安装完毕后重新在电脑中查找得到了javac.exe在电脑中的所在目录
经过配置系统环境变量解决了关于JAVAC所存在的问题。
7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl+f11就可以直接运行Main,尝试分析背后实现的原理。
在src里面存放源代码,在bin文件夹中存放class。
8.自己在这门课的目标与计划(1)请描述一下你的技术基础(2)一周准备花多少时间在这门课上?(3)采用怎样的学习方式?(4)遇到困难打算怎样解决(5)小目标
(1)技术基础:C语言,C++,数据结构(编程能力较为薄弱)(2)希望每周除了课堂和作业之外能多花不低于十个小时的时间用来学习JAVA并努力尝试自己编写代码。(3)以课前自我学习为主,课堂时间用来巩固所学的知识,并根据老师的教学,对自己所学的知识进行补充完善,并在课后做练习。(4)先尝试通过书上,网上查找资料自己独立解决问题不行再询问同学,老师等
(5)希望能扎实掌握并巩固该门专业知识,对于一些项目,不求自己能独立编写,但至少看源代码时能读得轻松,这串代码是什么意思,原理是什么,怎么用的 都要清清楚楚等等
3. PTA实验总结及码云上代码提交记录
实验1:java中函数的调用,switch以及枚举类型的结合
实验2:要求掌握StringBuilder类的使用。如stringBuilder.delete(int x,int y)(删除该序列中的由位置X开始到位置y-1截止的字串字符并返回删除了字串字符后的序列)、stringBuilder.append(i)将i追加在stringBuilder结尾等
实验3:ArrayList数组存储身份证号。采用sub.substring(start,stop)提取字符串中两个指定下标间的字符,用Collection.sort(list,new Comparator())进行升序操作等
实验4:通过循环实现二维数组存储乘法口诀并将其输出。
实验5:用BigDecimal准确表示一般数据类型所不能表示的16位有效数字以上的数,从而通过调用其相应方法进行积、和运算(因为BigDecimal创建的是对象因此无法使用算术运算符直接进行运算)
实验6:熟悉java中枚举类型的使用以及函数的调用
实验7:用BigInteger以及ArrayList表示若干大的整数并用BigInteger模拟int型的加法操作进行大整数求和 同时附带上很全很强大的BigInteger的用法http://blog.csdn.net/w00w12l/article/details/7290750
实验8:用ArrayList数组实现,注意List.get(i),List.remove(i),List.add()的用法。
3.1本周Commit历史截图
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图,如下图所示
(这周重装eclipse的时候出现文件夹拒绝访问 文件提取失败,部分已经写好的代码没有上传到码云,还需培养随写代码随传码云的习惯。。)
201521123026《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 ...
随机推荐
- Java String字符串深入详解
Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new这种标准的构造对象的方法,如String str = new ...
- FPS手游如何脱颖而出?看《CF手游》的性能突破之路
WeTest导读 俗话说:用户体验不谈性能就是耍流氓. 在PC游戏上的性能问题并没有那么明显, 加个内存换个CPU或者刷个主频就能轻松搞定:到了手游时代后情况则显得比较严峻,捉襟见肘的内存使得资源加载 ...
- MySQL主从失败 错误Got fatal error 1236解决方法
--MySQL主从失败 错误Got fatal error 1236解决方法 ----------------------------------------------------2014/05/1 ...
- SQL语句Tips
1. 可以在FROM字句中指定多个表,表与表之间用逗号隔开,如下面所示. SELECT * FROM T1,T123 结果集是这两个表的笛卡尔乘积.
- python中添加环境变量
import sys sys.path 系统环境是一个list,可以将自己需要的库添加进入,例如mysql库,hive库等等.有三种方式添加,均验证通过: 1 临时添加,在一个shell窗口中 ...
- MySQL数据库—查询基础,简单查询,条件查询,对查询结果排序
一.SELECT语句 SELECT COL1,COL2,....COLn FROM TABLE1,TABLE2,....TABLEn [WHERE CONDITIONS] -- 查询条件 [GROUP ...
- linux几个重要的按键
我们在用Windows系统时,有没有感觉快键键让我们工作更有效率,在Linux系统中仍有很好用的快捷键,这些快捷键可以辅助我们进行指令的编写与程序的中断呢,下面介绍几个经常用到的快捷键. 一.Tab- ...
- Linux下C的线程同步机制
C里提供了保证线程安全性的三种方法: (添加头文件#include<pthread.h>,pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a, ...
- VRTK实现瞬移需要添加的脚本
进入一个新的公司,boss让实现漫游,但是新公司的Unity版本是5.6,我之前的瞬移插件不好用了,无奈之下找到一个我不熟悉的插件VRTK,但是查了很多资料也没有实现瞬移.经过自己查脚本与实验终于得到 ...
- window.parent.document jquery
使用 jQuery ,写法如下: .$("#myEle", window.parent.document).html(html); 另外还有一种实现方式,代码如下: .parent ...