教材学习内容总结
二三章介绍的主要是Java中的基本知识:数据类型及转换,数据的输入输出,数组,运算符表达式,和常见的一些语句,这些都是帮助我们学习Java的基本知识,而这些知识很大一部分都和C语言相同,因此在学习时并不吃力,许多都很容易理解。当然,由于编译软件和环境的原因,还是存在一部分和C语言不同的地方,在接下来的内容中会有详细介绍。
在此指出问题的同时也会对和C语言不同的地方做出简要说明。
第二章学习问题总结
区别1:字符集的使用
C语言中的字符来源主要是ASCII码表,共计128或256种可能的字符,而Java中采用Unicode字符集,最多可识别65536个字符,这为代码的编写提供了更加充足的空间。
区别2:数据类型的不同
需要注意的是,与C语言相比在Java语言中多了逻辑类型boolean,作用是定义逻辑变量例如Java中的true和false;在整数类型中,Java中多出了byte类型,long型变量在定义时要加上后缀L;浮点类型中定义float型变量时需要加上后缀F或f,否则会被当做double型变量;在Java中不存在无符号类型的byte,short,long,int和char型变量,因此也不能用unsigned声明。
区别3:输入和输出
在输入和输出方面,我认为Java和C语言存在较大差异。首先Java中不能直接键盘输入,而是要从Java库中调用Scanner类进行输入;输出时Java语言主要采用System.out.println的命令,注意这里的“ln”代表了C语言中的“\n”表示换行,在输出时字符串和数字之间需要用到“+”进行连接。
区别4:数组
关于数组,最主要的区别在于定义数组时,C语言中定义数组为int a[5] ,在Java中需要用到关键字new进行定义:int a[] = new a[5]。此处注意:Java中允许直接使用int指定数组元素的个数;其余知识点例如数组的初始化和长度都比较易于理解,也没有需要特殊记忆的内容,大家在学习教材后很容积就可以理解,在此不再过多介绍。
问题1:在编写程序Example2_3时,对于程序中第一行给出的命令不理解
问题1解决方案:按照书上讲述的内容,我首先去书上4.10中阅读了相关内容并学习到了一个新的关键字package,在了解import的内容后,我又对package和import的用法产生了疑问,在浏览网上的相关解答(https://wenda.so.com/q/1368830278060213?src=140个人认为是最适合自己的理解方式)并在蓝墨云中和老师同学们的讨论后,我认识到了二者的区别,package是将某些类打包至某个目录下,而import则是调出包中的类,Example2_3中的类已经默认被package好,我们直接调出即可,类似于C语言中的头文件。
注意点1:关于书上的例子Example2_5,老师在蓝墨云中所给的代码和书上所给的代码有所不同,与书上相比多了一行命令System.out.println(Arrays. toString(a));
这行命令的作用是按照从小到大顺序输出数组,这样在输入要查找的数字时也能够清晰看出查找的数字是否在其中。
第三章学习问题总结
区别1:运算符的扩张
在运算符方面,Java与C语言相比多出了位运算符和instanceof运算符。位运算符作用是对整型数据进行位运算,包含与、或、非、异或运算;instanceof运算符的作用是对表达式两遍类的包含关系的逻辑真值进行判断。
区别2:switch语句
在书上P43页中强调switch语句中表达式的值不可以是long型,因为在Java中规定switch语句中参数只能是离散型或枚举型,byte,int,char,short均属于离散型,而枚举型需要自己定义,因此不可以为龙型。这一点在C语言中并没有如此规定。
区别3:for语句的扩充
在JDK 1.5中对for语句功能进行了扩充,给出了for语句一种新的书写方式(书上P46):for (声明循环变量: 数组的名字) {}
个人认为这种方式相对而言减轻了程序员编写代码的出错率,与原来的for语句的使用相比有所简化,而且便于记忆。
问题1:对于书上的内容学习过后的应用还是不够自如,在完成蓝墨云中的习题时不是很顺利,有些题目不能及时看出存在的问题。
问题1解决方案:针对这个问题,我觉得还是程序写的比较少,在学习的时候除了书上给出的例子和视频资源中的一些例子没有写过其他的程序,因此虽然书上的内容都理解了但有时不会应用。为了解决这个问题,我认为首先要把书上每一章的课后习题都过一遍,书上的例题是对每一章的总结,其中不乏一些改错题和编译题,对我们的学习会有很大帮助。此外应该再Linux中多调试一些程序,理解每一步程序运行的方法,我认为这对于我们在编写程序时可以避免一些错误。另外可以多找一些基础的程序,自己编写操作一下。
关于代码调试:
第二三章的代码在总体上来说其实大同小异,第三章主要是让我们熟练掌握各种循环语句的使用方法。再次接触调试时用起来熟练度明显提升,和调试第一章代码时相比有一个好处就是,第二三章中有很多循环语句,之前所给的博客中有一部分命令是关于调试循环时的操作方法,在调试第一章代码时这一部分时进行不到的,在调试二三章代码时就弥补了之前的操作漏点。(图中主要列举了执行断点操作的相关步骤)
脚本运行截图:
这里出现了一些问题,由于我之前建立的仓库存在一点问题,所以我又重新建立了一个仓库,并把上一周的作业(包括书上和课上的程序还有两个脚本)重新上传至仓库中,所以显示的时间应该是3月7日的时间。
在将新仓库的内容推送到码云上时出现了一个问题,上一次我推送仓库的时候Linux中的bin文件夹是可以在码云仓库中显示的,但是这一次再次推送时一直没有显示bin文件夹,我以为是自己操作的问题所以重复了很多次操作,并且在同学的帮助下用一部分命令强制将bin文件推送至仓库中,但后来老师给出解答:码云的仓库只是用于托管代码,可以用代码生成的不需要管理,因此bin文件不需要上传至git中,之后在经历了几次修改之后,终于把之前的工作都补齐成功上传。
以下为脚本截图(二三章的脚本我统一分两次上传,因此注释分别为chapter2和chapter3,。在上传时将注释打错了,capter应为chapter)