1.本周学习总结

答:上课老师介绍了Java基本的数据类型,需要注意的地方有:**java的整型数都为带符号数**,**byte类型范围(-127,128)太小,所以我们一般不使用byte型,byte型常与switch结构一起用**、**对于一个浮点数来说,在Java中如果不加后缀就会被默认为double型数据**、**浮点数不够精确,不能够使用与金融计算,如果想要更精确的话就使用BigDecimal型**、**变量名一定要区分大小写,声明一个变量之后必须对变量进行一个显式的初始化**、**利用final声明的常量被赋值后不能再被修改**、**String对象创建后也不能再进行修改**。

2.书面作业

(1)使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?分析String使用什么来存储字符串的?分析其构造函数public String(char value[])的实现原理?分析public String replace(char oldChar, char newChar)的实现原理,回答String的不可变性在该函数中如何体现?(重点)



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

答:因为String是不可变对象,所以每次修改字符串都是新建,非常浪费时间,而StringBuilder是可变的,利用append将修改的字符加到当前StringBuilder的末尾,效率会比String操作高很多。

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

答:如果直接用==比较的话,比较的是引用地址而不是字符串的值。

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

String str1 =“hi“, str2=“hi“;
String str3 = new String(str1)
System.out.println(str1==str2);
答:该程序段输出的结果是true,因为这段代码共创建了2个字符串对象。第一次创建了一个对象是str1,第二次str2并不是创建新的对象,而是str2直接引用str1,第三次又新建了一个str3对象;上题也回答了==比较的是引用地址,所以str1和str2是相等的。

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

答:因为基本类型的值就是一个数字或者一个字符又或者是一个布尔值,引用类型的值就是指向内存空间的地址,所以100就是数值100的本身,i是指向100的内存空间地址,因此100可以赋值给i。

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

Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128;
i1 == i2;//true of false
答:Integer的范围是(-127,128),所以第一个结果是true,第二个结果是false,因为128不在Integer范围内,所以i1和i2比较的不是128这个数值,而是它们的地址。

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

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



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

Eclipse中源代码放在src中,class文件放在bin中。

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

基础:只学过c语言,以前也没有经常写代码,没有计算过写过多少行
目标:能够熟练掌握Java语言,并且可以写出一些简单的Android的小项目。
计划:坚持每天至少花半个小时在Java上,要在编程这方面多花点时间,遇到问题就上网查或者问助教、同学和老师

(9)选做:公交卡里应该还有多少钱?请分析原因

答公交卡里应该是欠费了,我觉得原因可能是公交卡里的余额范围是一定的,如果超过这个范围的最大值或者小于范围的最小值,那么公交卡的余额系统可能就会发生数据的上溢或者下溢从而导致出错。

3.使用码云管理Java代码

4.PTA实验总结

(1)问题:每次拿到题目都会忘记先分析再开始做,所以每次很容易写到一半就没了思路,然后不得不重写
解决方法:拿到题目先思考如何实现题目的要求,然后再写伪代码,最后再开始编程
(2)问题:在编写第一题的时候,因为digits数组的原因,出现了一个java.lang.nullpointerexception错误
解决方法:重新new了一个digits数组
(3)问题:拼接字符串时没有使用StringBuilder,然后程序一直得不到正确的答案
解决方法:最后使用StringBuilder然后.append的方法成功通过pta的提交
(4)问题:关于markdown的,复制粘贴图片有时候可以有时候加载不出来
解决方法:改为上传,上传比较稳定。
其他问题还在发现中。。。。。

201521123039《Java程序设计》 第二周学习总结的更多相关文章

  1. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  2. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  3. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结

    丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...

  5. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结

    这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...

  9. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

  10. 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

随机推荐

  1. angularJS实战(一)

    angular实现列表 accessCtrl.js let AccessCtrl = function($scope, AlertService, DialogService, BigDataServ ...

  2. Cognos配置管理

    --Cognos配置管理 --------------------------2014/03/19 进入配置管理界面: /washome/cognos/c10/bin64 ./cogconfig.sh ...

  3. Go 程序的性能优化及 pprof 的使用

    Go 程序的性能优化及 pprof 的使用 程序的性能优化无非就是对程序占用资源的优化.对于服务器而言,最重要的两项资源莫过于 CPU 和内存.性能优化,就是在对于不影响程序数据处理能力的情况下,我们 ...

  4. python 如何在一个for循环中遍历两个列表

    是我在看<笨方法学python>过程中发现有一行代码看不懂--" for sentence in snippet, phrase:",所以研究了半天,感觉挺有收获的.所 ...

  5. MFC加载PNG图片并实现双缓冲

    因为PNG包含Alpha通道,所以不同于BITMAP,在MFC中使用CImage类对其进行处理,通常使用load和draw成员函数. 所以标题的论述可以进一步解释为,使用CImage实现双缓冲. 通常 ...

  6. Promise与异步

    不知道promise,大家现在用了吗?如果还不了解的话,今天就来对了-基础的了解起来- 正文从这开始- 接触过promise的的都知道它的应用场景和用途,Promise可以用来避免异步操作函数里的嵌套 ...

  7. 命令行创建Maven项目卡住以及出错解决办法。

    第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问 ...

  8. SuperSocket基础(二)-----一个完成SocketServer项目

    SuperSocket基础(二)-----一个完成SocketServer项目 由于时间关系未能及时更新,关于SuperSocket,对于初学者而言,一个SuperSock的Server真的不好写.官 ...

  9. System.ComponentModel.DataAnnotations 冲突

    项目从原来的.NET Framework4.0 升级到 .NET Framework4.5 编译报错. 查找原因是: Entity Framework 与 .net4.5 的 System.Compo ...

  10. css预处理器之一---sass(一)

    慕课学习笔记: CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作. 通俗 ...