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的时候出现文件夹拒绝访问 文件提取失败,部分已经写好的代码没有上传到码云,还需培养随写代码随传码云的习惯。。)

转载于:https://www.cnblogs.com/lyhooo/p/6500907.html

201521123026《Java程序设计》第2周学习总结相关推荐

  1. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  2. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  3. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

  4. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

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

    20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...

  6. 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...

  7. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  8. 20155226 2016-2017-2 《Java程序设计》第一周学习总结

    20155226 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一周主要学习了一二章的内容,也浏览了剩余章节,以下是本周主要学习内容总结 1.首先了解了[ ...

  9. 20172325 2018-2019-1 《Java程序设计》第二周学习总结

    20172325 2018-2019-1 <Java程序设计>第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集.组织了其他对象的对象.集合可以分为两大类:线性集合和非线性集合. ...

  10. 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结

    20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...

最新文章

  1. C语言中,#include 和#include 的区别和注意点
  2. WebService大讲堂之Axis2(3):使用services.xml文件发布WebService
  3. zabbix 安装时常见问题处理
  4. 第十八章 应用举例:照片OCR-机器学习老师板书-斯坦福吴恩达教授
  5. mysqlpump 备份文件压缩对比
  6. html属性和dom属性的区别,HTML属性与DOM属性的区别?
  7. 计算机简单故障时的排除方法,电脑简单故障排除解决办法大全
  8. 013年十大急需的热门IT技能
  9. 经历越多困难,你就变的更韧性
  10. 数据库的设计与连接、站点的搭建
  11. 关于计算机博弈的开源项目
  12. 求解模糊运动角度matlab,动态模糊图像复原MATLAB程序
  13. java LineRecordReader类解析
  14. Android开发之实现图片自动滚动显示标签的ViewPager
  15. Qt环境下利用opencv逐帧播放视频
  16. [ACL2017]Going out on a limb:Joint Extraction of Entity Mentions and Relations without Depende...
  17. android升级失败,开机logo后卡住,无限重启
  18. 元宇宙中的虚拟办公室SkyOffice
  19. 广播(Broadcast)的发送与接收
  20. 洛谷题库答案(持续更新)

热门文章

  1. paypal中授权返回_微信开放平台授权登录流程详解
  2. 分布式和微服务_太难了!阿里三面凉透~ Spring+高并发+算法+分布式微服务等等一个都没讲不清...
  3. 广西大学计算机硕导名单,导师-广西大学研究生院
  4. python求高阶导数_Pythorch中的高阶梯度
  5. vue实现搜索框搜索新增_基于Vue el-autocomplete 实现类似百度搜索框功能_含真_前端开发者...
  6. tomcat 占用 dos
  7. mysql 城市二级联动_MYSQL二级联动
  8. 华为鸿蒙mate,华为MatePad Pro发布亮相!华为首款鸿蒙平板全新体验!
  9. 积木机器人拼装图恐龙图纸_‎机器人积木模型--恐龙积木拼装对战游戏 v App Storu...
  10. c语言程序仪表称重编程,基于WinCE的双台面动态汽车称重装置仪表设计