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

教材学习内容总结

『注意』

  • “//”为单行批注符; “/*”与“*/”为多行批注符,编译程序会忽略“/*”与“*/”之间的内容。但不能将多个“/*”与“*/”嵌套使用。

  • 在程序中写下一个浮点数时,编译程序默认使用double类型,如float PI = 3.14;会报错,要想避免这个错误,可以改为float PI = 3.14F;float PI = (float) 3.14;

  • 在程序中写下一个整数时,默认使用不超过int类型长度,如int number = 2147483648;long number = 2147483648;都会报错,因为2147483648超出了int类型的长度,所以应改为long number = 2147483648L;

  • 如果变量i是boolean类型,在if中做判断只需要写:if(i) {...}

  • for()中每个描述区块以分号“;”作分隔,而在一个描述区块中若想写两个以上的描述句,则使用“,”作分隔。

  • switch程序只会在一开始的switch括号中取出变量的值一次,再与case比较,而if-else每次判断都需要取值,所以在这种情况下switch语句的效率要高于if-else。

  • Math.random() * n 表示产生0~n的随机数。

教材学习中的问题和解决过程

  • 问题一:print、printf、println的区别(P56)

课本中提到,print输出文字不换行,println输出文字换行,printf是对输出文字格式化后再显示在文本模式中。查阅相关资料学习之后,我认为Java中的printf与C语言中的printf差别不大,都是进行格式化输出;而print与println都是标准输出,只不过print不换行,println换行而已。输入以下代码,得到的结果如图:


  • 问题二:Java中的关键词与保留字(P58)

Java中的变量在命名时不可以使用关键词与保留字。查阅资料后学习到Java中的关键词和保留字如下:

  • 问题三:变量初始化(P58)

在Java中,声明局部变量后,未给其指定任何值就使用变量,会发生编译错误,代码及运行结果如图:

正确的程序如下:

  • 问题四:boolean运算(P59)

boolean是我们新接触的一种类型,可指定的值只有true和false,否则编译时会报错:

正确程序如下:

  • 问题五:位运算与左移右移运算符(P64)

按照课本P64的代码运行,得到的结果并不是正确结果。刚开始以为我的输入有问题,仔细检查后发现,变量number在每次运算中都被重新赋值,导致结果出错。

基于课本上的思路,修改代码如下,最终得到了正确结果。

  • 问题六:int可储范围的溢出(P69)

int类型的最大值是Int.MAX=2147483647,期望中Int.MAX+1超过上限而归零。但实际情况,int的最大值在内存中的字节是:01111111 11111111 11111111 11111111,Int.MAX+1则变成:11111111 11111111 11111111 11111111,在Java中,最高位为1表示负数,所以显示的结果为-2147483648,Int.MAX+1并不会因为超出存储范围而溢出。代码及调试结果如下:

  • 问题七:break和continue配合标签使用(P77)

break:设定标签与区块,可以离开整个区块。代码与运行结果如下图:

continue:配合标签使用,可以自由跳至任意一层for循环。代码与运行结果如下图:


如果把back1改为back2,System.out.println("test") 将会被执行,运行结果与back1完全不同。

  • 问题八:指定精度与预留字符宽度(P57)

例如:System.out.printf("example:%6.2f%n",19.23);预留了6个字符的宽度,而19.23只有5个字符,因此补一个空格在最前端。仔细想想,如果想让输出排列整齐,或者制表格之类的,预留字符宽度就能起到很大作用了!附上未预留和预留的代码运行图:


课后习题思考与总结

  • P80 6:关于在Java中,-Integer.MAX_ VALUE是否与Integer.MIN _VALUE相等的问题,实际操作结果为“false”。


分别显示-Integer.MAX_ VALUE与Integer.MIN _VALUE如图,这是因为int类型的最大值是2147483647,最小值为-2147483648,所以结果为false。

  • P80 7、8:这两道涉及到++和--运算符的位置问题。将++或--运算符写在变量前,表示先将变量值加或减1,然后再返回变量值,将++或--写在变量后,表示先返回变量值,然后再对变量加或减1。第7题和第8题的运行结果分别如图:

代码调试中的问题和解决过程

  • 类型声明

    『错误』:在某次编写for循环的程序时,编译时报错(如图)。明明在for语句中声明了i为int型变量,为什么提示没有找到变量i?

    『解决』:仔细检查后发现自己粗心把输出i放在了for语句之外,而for语句中对变量i的声明只在for循环中有效,所以编译时才会报错。

  • 字符串连接问题

    『错误』:第一次撰写上面问题一“探究print、printf、println的区别”的程序时,我的代码是这样的:不知道什么原因,出现了这种错误提示。

『解决』:之后在网上查找资料,发现了这样两行代码:

觉得非常奇怪,不明白为什么“”与i之间要用“+”连接。抱着怀疑的态度修改了我的代码,竟然成功了!Why?!


之后去图书馆翻阅了相关书籍,最终在华盛顿大学Stuart Reges Marty Stepp编著的《Java程序设计教程》中找到了详细的解释。原来,Java中的“+”还可以用来表示字符串的连接,将多个字符串用“+”连接,就形成了一个可以求值的表达式。如“I have ”+3+" things to concatenate"输出的结果为I have 3 things to concatenate

关于字符串连接的问题,我随后参考了java五种拼接字符串的方法这篇博客进行了大致的学习,简单了解到不同字符串连接方式对性能的影响,受益很多。

  • 『附』

编写博客时发现markdown好像不能同时输入两个“*”(星号),因为会自动将两个星号之间的内容变为斜体,类比Java,我突然想到了课本P59貌似提到过如何表示一些已经有特殊用途的符号,比如“'”(单引号)。大致学习了课本上的内容之后,编写了一个(有趣的)代码,练习了转义字符的使用。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

  • 『写在后面』

第一次使用git bash的时候,中文的commit全部显示乱码,参考相关资料后输入了以下三行命令,问题得到解决:

上周考试错题总结

  • git log:查看提交历史

  • 查找home目录中昨天创建的文件的命令是:find ~ -ctime 1

    『考点』:与时间相关的命令参数:-atime:最后访问时间;-ctime:创建时间;-mtime:最后修改时间。以-mtime为例,-mtime n:n天之前的“一天之内”修改过的文件;-mtime +n:n天之前(不包含n天本身)被修改过的文件;-mtime -n:n天之前(包含n天本身)被修改过的文件。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 16/16 1/1 18/18 初步认识了Java
第二周 219/235 2/2 28/46 学习了Java的基本语法知识

参考资料

20155303 2016-2017-2 《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. 畅通工程 HDU - 1232

    某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接 ...

  2. redis和spring整合使用

    第一步,在项目中加入redis的pom代码: <dependency> <groupId>redis.clients</groupId> <artifactI ...

  3. [HAOI2010]软件安装

    简单的tarjan+(本蒟蒻刚刚接触不久)恶心的树形DP 题面 题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为 ...

  4. hadoop新增kerberos租户

    第一步 在kerberos服务器所在主机 通过kadmin.local,也可以通过kadmin 输入用户密码登录 kadmin.local: addprinc -randkey it1@STARYEA ...

  5. gradle build docker image

    前言:其实gradle-docker插件干的事和我们手动制作镜像是一样的,只不过它封装了一些步骤而已. eg:如果我们要将项目打包成镜像,首先我们要写Dockerfile,这是制作镜像的不可或缺的第一 ...

  6. MSIL实用指南-创建枚举类型

    创建枚举类型比较简单,主要使用moduleBuilder.DefineEnum 和enumBuilder.DefineLiteral. 第一步:创建 EnumBuilder 创建 EnumBuilde ...

  7. SpringDataJPA入门就这么简单

    一.SpringData入门 在上次学SpringBoot的时候,那时候的教程就已经涉及到了一点SpringData JPA的知识了.当时还是第一次见,觉得也没什么大不了,就是封装了Hibernate ...

  8. 快速创建 HTML5 Canvas 电信网络拓扑图

    前言 属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列表还不够好看,怎么办?我试着用 HT for Web 来实现属性栏点击按钮弹出多功能 ...

  9. AIX分页(交换)空间的监控

    1.分页和交换 这两个概念,很多人混为一回事儿,两者虽然有共性,但也有些差别.分页是进程的部分内容在RAM和磁盘的分页空间间移动,而交换是整个进程在RAM和磁盘的分页空间间移动,在将进程移到磁盘分页空 ...

  10. OpenStack中部署glance的步骤

    OpenStack中部署glance的步骤(基于Ubuntu14.04系统) author:headsen  chen   2017-10-13   08:34:35 个人原创,转载请注明作者,出处, ...