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


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

    教材学习内容总结

    Java编程风格

    • 基本语法与C相似;调用main函数写public static void main (String[] args)
    • Java是自由格式语言(确实比C自由一些,虽然编的不多,但是能感受到)

    认识Java的类型与变量

    • 类型
      • 基本类型:整数、字节、浮点数、字符、布尔(true&false)
        • 整数可分为short(2)、int(4)、long(8)
        • 浮点型可分为float(4)、double(8)o
        • boolean类型中的true/false不能与其他类型进行运算
      • 类类型
      • 程序中写下一个浮点数,系统会默认为double类型,写下一个整数时默认不超过int类型的长度,如果表达式有不同类型的数值,运算时以较长类型为主,其他数值自动提升
    • 变量
      • 命名规则:驼峰式
      • 局部变量使用前需要赋值(可以边定义边赋值)
        • final变量不可修改
      • 字面常数
      • 忽略符号''
    • 运算符
      • 算数运算符、比较条件运算符、逻辑运算符、位运算符、递增递减运算符、指定运算符
      • ===的区别,前者是赋值,后者比较是否相等。
      • 位运算符的一个例子,可以显示写成二进制数每一位按位取反。
      byte number = 0;
      System.out.printli(~number);
      
      • 逻辑运算符的快捷方式运算
      • 位运算:>>最左边补原来位,>>>最左边补0;
    • 类型转换
      • float PI = 3.14Ffloat PI =(float)3.14
      • 运算时自动提升类型

    掌握Java流程控制的方法

    • 分支
      • if...else...
      • switch
    • 循环
      • for(初始式;true/false;重复式)
      • 前测试循环while
        • while(true){...}直接循环
      • 后测试循环do{...}while(条件);
      • 退出
        • break 离开循环
        • continue 退出本次循环进入下一次循环
        • 配合标签使用

    程序优化

    • 多个相同类型的选择更倾向于用switch而不是if else
    • 如果isOpened是boolean型,在if中判断可直接用if(isOpened)

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

    • 问题1: 课本68页有关溢值的一段代码,为什么count+1>Interger.Max_VALUE永远不会是true?
    • 问题1解决方案:书上给出的解释是Java中字节的第一位是1表示一个负数,Interger.Max_VALUE代表int所能表示的最大值 0x7FFFFFFF,再加1后是0xFFFFFFFF,这在Java中表示一个负数。
    • 问题2: Math.radom()会产生0.0到1.0的任意值吗?是什么类型的值?
    • 问题2解决方案
     public class MathRandom {
        public static void main(String[] args){
            int number1 =(int) (Math.random()*10);
            float number2=Math.random();
            System.out.println(number1);
            System.out.println(number2);
        }
    }
    

    调试这些代码的时候出现了这样的提示

    可见产生的是double型的数,修改程序后进行编译得出想要的结论

    如果修改其中一行代码为float number2=(float) (Math.random());也可以得出正确结论,相当于将MathRandom函数产生的随机数强制类型转换一float形式输出

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

    • 问题1: 在Java中用System.out,println("i=%d",i)输出时报错
    • 问题1解决方案:当输入
    public  static  void  main(String[] args){
        for(int i=1;i<=10;i++){
            System.out.println("i=%d",i);
    

    时,显示这样的错误提示

    修改为System.out.println(i);运行正常;
    上网查了一下printf,println和print的区别

    public static void main(String[] args) {
       int i = 4;
       double j = 5;
       System.out.print("用print输出i:"+ i);//直接写参数
       System.out.println( "用println输出i:"+ i);//直接写参数
       System.out.printf("i的值为%d,j的值为%f", i,j);
       }
    

    运行结果为

    • print将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后。

    • println 将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始。

    • printf是格式化输出的形式。

    • 问题2:continue在for前后配合标签使用产生影响的不同?

    • 问题2解决方案:

    • 分别运行continue back1和continue back2

    public class ContinueBack {
        public static void main(String[] args){
            back1:
            for (int i = 0;i<10;i++ ){
                back2:
                for (int j=0;j<10;j++){
                    if (i==9){
                        continue back1;
                        //continue back2;
                    }
                }
                System.out.println("test");
            }
        }
    }
    

    产生的结果

    • continue back1:产生9个text
    • continue back2:产生10个text
    • 结论:continue配合标签可以自由跳至任何一层for循环

    代码托管

    • 代码提交过程截图:
      • 运行
    ssh -T git@git.oschina.net
    git init
    git remove add origin http://git.oschina.net/bestiisjava2017/HelloWorld.git
    git pull origin master
    git add .
    git commit -m "week03"
    git push origin master
    
    - 截图
    

    • 代码量截图:
      • 运行
      $ chmod +x statistics
      $ ./statistics
      

    上周考试错题总结

    试卷还没发,我印象中有这么几道(还会持续更新)

    1. 学习JavaAPI要掌握API在设计时的封装、继承、多态、接口架构
    2. 只有通过TCK兼容性测试的实现,才可以使用Java这个商标

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 50/100 1/1 24/12
    第二周 250/300 2/2 48/36

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:24小时

    • 实际学习时间:24小时

    参考资料

  • 相关阅读:
    PKUSC2021游记
    P3349 [ZJOI2016]小星星
    序二
    1.3 解析库的安装
    1.2 请求库的安装
    1.5 存储库的安装
    1.6 Web 库的安装
    1.7 App 爬取相关库的安装
    2.1 HTTP 基本原理
    1.9 部署相关库的安装
  • 原文地址:https://www.cnblogs.com/lxy1997/p/6507487.html
Copyright © 2020-2023  润新知