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都是这样的。
  • 第三章:运算符、表达式和语句
    • 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小时

原文地址:https://www.cnblogs.com/zhuwenyuan/p/8543342.html