201521123039《Java程序设计》 第二周学习总结
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程序设计》 第二周学习总结的更多相关文章
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 201521123063 JAVA程序设计 第二周学习总结
1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...
- 2017面向对象程序设计(Java)第二周学习总结
2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结
丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- 201521044152<java程序设计>第一周学习总结
本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
- 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结
这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...
- 杨其菊201771010134《面向对象程序设计Java》第二周学习总结
第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...
- 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
随机推荐
- MYSQL中的多类型查询及高级查询操作
离散查询select * from car where price=30 or price=40 or price=50 or price=60;select * from car where pri ...
- 【LeetCode】数组-2(628)-数组中三个数相乘最大
题目不难: 思路一(排序取两端) 先排序,最后三个数相乘即可.(很快就想到了,但是没想全面 [
- 遇到local variable 'e' referenced before assignment这样的问题应该如何解决
问题:程序报错:local variable 'e' referenced before assignment 解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变 ...
- Razor语法问题(foreach里面嵌套if)
报错: @foreach (var item in ViewBag.TopList) { if (!string.IsNullOrWhiteSpace(item.LogoPic_Mobile)) &l ...
- jenkins 设置 gitlab web hooks
背景 接口自动化期望代码push后触发实现持续集成,代码push后,自动化执行jenkins的job. 步骤 准备工作 工具:jenkins,gitlab jenkins需要安装插件:git plug ...
- Akka(21): Stream:实时操控:人为中断-KillSwitch
akka-stream是多线程non-blocking模式的,一般来说,运算任务提交到另外线程后这个线程就会在当前程序控制之外自由运行了.任何时候如果需要终止运行中的数据流就必须采用一种任务柄(han ...
- Django编写RESTful API(四):认证和权限
欢迎访问我的个人网站:www.comingnext.cn 前言: 按照前面几篇文章里那样做,使用Django编写RESTful API的基本功能已经像模像样了.我们可以通过不同的URL访问到不同的资源 ...
- 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程
上星期写了一个篇文章,数据库方面的面试技巧,如何从建表方面展示自己能力,承蒙管理员抬举,放入首页,也承蒙各位厚爱,两天内收获了将近770个点击,也一度进入48小时热榜. 为了感谢管理员和大家的支持,再 ...
- JS中的循环结构
[循环结构的执行步骤]1.声明循环变量:2.判断循环条件3.执行循环体操作4.更新循环变量然后循环执行2-4,直到条件不成立时,跳出循环.while循环()中的表达式,运算结果可以是各种类型,但是最终 ...
- 使用 Palette 让你的 UI 色彩与内容更贴合
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 一.前言 今天介绍一个 An ...