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


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

    教材学习内容总结

    • 类型:整数,字节(需要逐字节处理数据时,如图像处理,编码处理等,会使用byte类型),浮点数,字符,布尔(boolean类型可以表示TRUE或FALSE,代表逻辑值的真与假)。
    • 注释:注意不可叠加注释,会出现编译错误信息。
      -常用格式控制符号:(仅写出与c语音不同的符号用法) %% 表示 %;%b表示输出 boolean值(非null输出true,null值输出false)。
    • 浮点数输出是确定精度:其中对于:%6.2f,6代表预留了6个字符宽度,不足的要由空格补全,2代表小数点后留两位,小数点也占据一位,故输出结果为 19.23,只占了五个字符故前面要用空格补上。
    System.out.printf("example:%6.2f%n",19.234);
    
    • 声明变量:与c语音不同,不用declare a 20。直接int a= 10即可。
    • 命名习惯:首先不可与java的关键字同名,其次通常以小写字母开始,并在每个单字开始时的第一个字母大写,驼峰式命名法,使其作用一目了然。
    • 忽略符号:在想表达的字符(这个字符在java语法中已经用来表示字符了)前加/即可。
    • 逻辑运算符:基本与c语言相同。举例说明&&快捷方式的好处:避免除零错误。
    ……
    if(b!=0&&a/b==5)
    ……
    
    • 位运算:~(补码);注意与逻辑运算的区别。;左移与右移运算符:1.左移运算符(<<):左移指定位数,被挤掉的位数被丢弃,右边补0;右移运算符:(>>)被挤掉位数被丢弃,左边原来是0则补0,原来是1则补1;(>>>)右移后左边一定补0。
    • 类型转换:在程序中写下一个浮点数,程序会默认为double型,为了避免精度遗失错误(double类型8字节,float类型4字节,程序会因为将默认8字节的数放入4字节中),对于以下代码,在数值后加F,即可告诉编译程序要用float类型来存储3.14这个值;如果表达式中含有不同类型的数值,运算时则以长度最长的类型为主,其他类型自动提升类型。
    float a=3.14F;
    

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

    • 问题一:对于书上P63页的例子:运行出结果为-1。书上说0在内存中是位00000000,经补码运算后为11111111.那么输出的结果应该是-127才对,但书上说输出为-1,因为byte占内存为1字节。故11111111在计算机中用整数表示则为-1。这与我所学到的补码知识不相符,故有些疑惑。
    public class a {
        public static void main(String[] args) {
            byte n=0;
            System.out.println(~n );
        }
    }
    
    • 解决方案:将代码敲出来,运行结果为-1.但0的补码应该还是0才对。补码运算不是将所有位取反,而是:为负数时除符号位外诸位取反末位加1,正数补码与原码相同。
    • 问题三:教材中P69页,关于补码的问题。
    • 解决方法:自己敲出代码,得到如下图结果,与书中答案相同。书中说因为当count达到01111111 11111111 11111111 11111111时count+1会变为11111111 11111111 11111111 11111111表示-2147483648.为什么不是变成了10000000 00000000 00000000 00000000?而在问题一中说到教材中说明11111111在计算机中用整数表示则为-1。两者互相矛盾。
    public class  c{
        public static void main(String[] args) {
            int count =0,a=1;
            while(a==1);
            {
                if (count + 1 > Integer.MAX_VALUE) {
                    a=0;
                    System.out.printf( "%d",count);
                } else count++;
            }
        }
    }
    

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

    • 问题一:printf与println的区别,为什么如下代码会出现错误?
      image
      image
    • 解决方法:上网查找了一下两者的区别。发现printf用于“a=%d”这种输出格式的;而println在输出内容后自动加上了回车换行符号,且这个函数不可用于输出格式。

    课后习题

    3.4.2.1求最大公因子

    package src.week1;
    import java.util.Scanner;
    public class e {
        public static void main(String[] args) {
            Scanner m=new Scanner(System.in);
            Scanner n=new Scanner(System.in);
          int x,a,b;
          a=m.nextInt();
          b=n.nextInt();
          do {
              do {
                  x = a - b;
                  a = x;
              } while (x >=b);
              a = b;
              b= x;
    
          }while(!(b==0||b==1));
          if(b==0) System.out.printf("%d",a);
          else if(b==1) System.out.printf("%d",b);
    
        }
    }
    
    

    运行结果如图image

    3.4.2.2阿姆斯特朗数

    package src.week1;
    public class d {
        public static void main(String[] args) {
          int a,b,c,i,j;
          for(i=100;i<=999;i++)
          {
              a=i/100;
              b=(i-100*a)/10;
              c=i%10;
              if(a*a*a+b*b*b+c*c*c==i)
              {
                  System.out.printf("%d%n",i);
              }
          }
        }
    }
    

    运行结果如图image

    上周考试错题总结

    • 填空:(git init )命令可在在工作目录中创建新的 Git 仓库。[错误写为git commit。可以将想要添加的内容添加到仓库而不是创建新的仓库。]
    • CH02 选择:教材P49,第4题 (d)[老师,我认为这道题选择a。我打出代码如下所示:可以运行出结果。image
    • 只有通过(TCK)兼容性测试的实现,才可以使用Java这个商标。[错误原因:对概念理解不到位。]
    • CH01 选择:教材P21,第7题 (B)[错选为a。JDK用来编译.class文档;JRE是java执行环境,如果是只需运行已经编译好的.java文件,则只需JRE即可]
    • 填空:查找home目录中昨天创建的文件的命令是(find ~ -ctime 1)
      [find是查找 -ctime是创建时间n表示n天之前的“一天之内”的文件]

    代码托管

    • 代码提交过程截图:
      • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
    • 代码量截图:imageimage
      • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图image

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 120/120 1/1 16/16 开始了JAVA学习的第一步!
    第二周 346/466 1/2 23/36 了解并学习了Java基础语法
    • 计划学习时间:20小时

    • 实际学习时间:23小时

    • 改进情况:对于编译程序有了更深一步的了解,学习的效率有了明显的提高

    参考资料

  • 相关阅读:
    [leetcode-551-Student Attendance Record I]
    [leetcode-543-Diameter of Binary Tree]
    [leetcode-541-Reverse String II]
    [leetcode-530-Minimum Absolute Difference in BST]
    [leetcode-521-Longest Uncommon Subsequence I]
    [leetcode-504-Base 7]
    [leetcode-116-Populating Next Right Pointers in Each Node]
    [leetcode-573-Squirrel Simulation]
    [leetcode-572-Subtree of Another Tree]
    [leetcode-575-Distribute Candies]
  • 原文地址:https://www.cnblogs.com/paypay/p/6506577.html
Copyright © 2020-2023  润新知