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周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. BOM部分笔记整理

    BOM部分整理 (章节 8.9) 概览: 一.介绍BOM 在web中,JS的核心对象就是BOM. 1.1 在浏览器中,window对象 == global 所以,你在全局环境下定义的变量,函数都会自动 ...

  2. python实战===实现读取txt每一行的操作,账号密码

    最近搞到了一批163邮箱的账号和密码,但是里面有部分账号不能用,密码是错的. 以此为背景 人工手动挨个登录检查效率太低! 于是写了下面这个脚本: import linecache import smt ...

  3. 不重启修改mysql root密码

    不重启修改mysql root密码 --------------------2014/09/28 一.一般忘记密码的解决办法,需要重启Mysql1.skip-grant-tables我们常用的方法是使 ...

  4. 我读<代码整洁之道>--读书笔记整理

    第一章 整洁代码 "我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的,整洁的代码总是看起来像是某位特别在意他的人写的.几乎没有改进的余地,代码作者设么都想到了,如果你企图改进它 ...

  5. html&css笔记(2)

    第9章 用background-image属性为任何元素添加背景图片,用url()标识背景位置,它落在背景颜色之上,所以类似于背景颜色,它位于边框之内 p380 可以指定任一边框(上.下.左.右)的样 ...

  6. JsonArray和JsonObject遍历方法

    一:遍历JsonArray String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'}, ...

  7. win10 永久激活 命令行方式

    现在我们可以看下当前系统的激活状态,查看方法"WIN+R"打开运行对话框,输入命令slmgr.vbs -xpr,点击确定,这样可以查看到当前系统的激活信息.大家可以发现,虽然小编系 ...

  8. Springboot系列文章

    一.springboot简介1.前世今生 在boot没有出现之前,基于spring的开发,常常需要配置大量的xml文件.工程狮们苦不堪言,渐渐厌倦了配置文件的复制黏贴.spring家族因为这件事,也经 ...

  9. 新鲜出炉的JSON,拿走不谢!

    一.JSON简介 1.JSON全称是JavaScript Object Notation即JavaScript对象标记法. JSON是一种轻量级(Light-Weight).基于文本的(Text-Ba ...

  10. APUE 2 - 进程组(process group) 会话(session) job

    进程组(process group) 进程组顾名思义是指一个或多个进程的集合.他们通常与同一个job(可以从同一个终端接收信号)相关联.每个进程组拥有一个唯一的Process Group Id.可以使 ...