20165214 第二周学习任务
20165214 2017-2018-2 《Java程序设计》第二周学习总结
教材学习内容总结
- 第二章:基本数据类型与数组
-
标识符的定义以及定义标识符时所要注意的一些事项。
-
Java里的基本数据类型的一些基本参数:
-
数据类型转换时,格式为
(类型名)要转换的值
,级别低的变量赋给级别高的变量时,系统会自动完成类型转换。但是级别高的变量要赋给级别低的变量,必须用类型转换运算。 -
输入数据:使用
Scanner
创建一个对象,比如Scanner reader=new Scanner(System.in)
创建了一个reader
对象,然后使用int m =reader.nextInt()
来读取键盘输入的整数型变量,赋值给m
。然后就可以根据具体的要求对输入的数进行相应的操作了。 -
输出数据:本章介绍了3种输出的方式
- ①
System.out.println()
,可输出串值、表达式的值,输出后换行。 - ②
System.out.print()
,同第一种方式,区别是这种方式输出后不换行。 - ③
System.out.printf()
,跟C语言的printf
函数输出数据的方式类似。
- ①
-
数组的相关知识点
- 我把数组的形成分成3步:
- ①声明数组:
数组类型 数组名 []
(还有数组类型 [] 数组名
等方式); - ②分配变:
数组名 = new 数组类型[n]
(n
是正整数,指的是数组的元素个数); - ③初始化:
数组名 = {1,2,3,4....,n}
。
- ①声明数组:
- 需注意,上述的步骤中,可以①②同时进行:
数组类型 数组名 []=new 数组类型[n]
;也可以①②③同时进行:数组类型 数组名[]={1,2,3,4,...n}
。 - 使用
数组名.length
语句可以得到数组的长度。 - 数组名的值等于该数组的引用(除
char
型数组)。 - 如果两个相同类型的数组具有相同的引用,那么他们就有完全相同的元素(个人感觉这跟C语言中数组的地址有些相似)。
- 另外,我发现了Java一个很方便的地方,就是程序里
for
语句的第一个分号前面的变量可以随时定义随时使用,比如教材P29里面的程序,i,j都是这样的。
- 我把数组的形成分成3步:
-
- 第三章:运算符、表达式和语句
- java里面的运算符和表达式和C语言里面的几乎相同,所以比较容易就能理解它们。要注意的是位运算符和逻辑运算符的区别,前者是先计算完变量的值后再给出运算的结果。
instanceof
运算符,可以用来判断运算符左边的对象是不是运算符右边的对象创建的类。若是,结果为true
,否则为false
。- 一个复合语句的{}可能有多个语句,但是只算一个语句;分号是一个空语句.
if
条件分支语句有三种用法:- ①
if
语句是单条件单分支语句,满足条件时执行。 - ②
if-else
语句是单条件双分支语句,满足条件时执行if
紧跟着的复合语句,不满足时执行else
紧跟着的复合语句。 - ③
if-else if-else
语句是多条件多分支语句,当满足其中某个if
的条件时,执行其后面紧跟着的复合语句,然后结束当前if-else if-else
语句的执行。若都不满足,执行最后else
后面的复合语句。
- ①
switch
语句中表达式的值只能是byte,short,int,char
里面的一种类型。- Java里面的循环语句和C语言的类似,没有什么问题。
- 要清楚
break
语句和continue
语句之间的区别。如果在某个循环中执行了break
语句,那么整个循环语句就结束了;如果在某个循环中执行了continue
语句,那么本次循环就结束了。 for
语句在Java里的另外一种用法(这种方式主要用于遍历数组):for(数据类型 没被定义过的变量:数组名)
,每次循环,新定义的变量依次取:
后面的数组中每一个元素的值。Scanner
定义的对象可以先调用hasNext类型名
的方式来先对输入的数据进行判断,判断其是否符合要求,符合要求再获取这个输入的数据
教材学习中的问题和解决过程
-
问题1:我的Ubunutu里面没有中文输入法,不能打出汉字。
-
问题1解决方案:上网查找了一下,在这个链接里发现了解决的方法。
-
问题2:在教材中,我知道了,当
byte
变量超过127时,又会从-128开始循环。这是为什么?其他的变量是否有这个性质?如何验证呢? -
问题2解决方案:这个问题目前我还找不到解决的办法。
-
问题3:第三章有一个课后题目,我在运行时候出现了这样一个问题:
-
问题3解决方案:因为在这个题目里面我是把i放在
for
语句里面去定义的,没想到这样的话到最后不能直接输出i。于是我又设置了一个新的变量t来过渡i,然后就可以了。因此我觉得,i虽然可以在for
语句里随时定义随时使用,但是它可能只是个暂时变量,等循环结束就释放掉了?这是我的猜测,不知道如何进行验证呢?
代码调试中的问题和解决过程
因为是敲课本里面的代码,所以错的几个地方都是因为输入的失误。
-
问题1:在敲书里面的Example2_5时候,把java和util中间的点漏掉了
-
问题1解决方案:打开文本进行修改,并在书里做了标记。
-
问题2:在写一个程序时,不小心在程序后面加了一个
_
,编译时出现了这个问题:
-
问题2解决方案:打开文本进行修改。
代码托管
我把教材里面程序的源文件放在了src文件夹里面,编译得到的字节码文件放在了bin文件夹里面。
而二、三章课后的调试程序、编写的题目放在了“课后作业”文件夹。
(statistics.sh脚本的运行结果截图)
我的截图不知道为什么显示不出来git的记录。。明明已经有往上传了,码云里面也有了。等我解决了这个问题我再把新的截图补上吧
上周考试错题总结
上周课上测试的总结我已经写了一片博客提交上去了。这是博客的链接。
其他
本周的Java学习我不是像上周那样,累积到最后几天才开始写,而是一天完成一部分。这样学的感觉很好。而且可能时间比较充足的原因,课本还有网上的教材我都是慢慢看的,有什么不懂马上敲代码、看例题去理解。这么一来,感觉自己学到了很多很多的东西。
我觉得第一周的学习已经让我对Java的一些基本操作有所了解,所以在第二周的学习里,虽然量比较多,但是感觉也没有那么累了。果然,“万事开头难”,不过只要开了好头,接下来的学习一定会充满兴趣与动力。希望自己能够继续保持这份对Java的热情,不断地更上一层楼。
还有一点让我感觉收获很大的是,在我把书里的代码按顺序敲下来后,我感觉一个是我敲代码的速度变快了,还有一个就是那些基本的代码我可以不用看书就能够敲出来了。“好记性不如烂笔头”。接着,我尽自己的努力,把第二章和第三章的课后第4题(编程题)给自己敲出来了!(代码已经传到码云上了,在课后作业文件夹里,以hw24和hw34开头的文档)没有看书。瞬间感觉自己投入的时间都是有意义的,还是蛮高兴的。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 36/36 | 1/1 | 8/8 | |
第二周 | 432/468 | 2/3 | 15/23 |
-
计划学习时间:15小时
-
实际学习时间:15小时