• 20182323 2019-2020-1 《数据结构与面向对象程序设计》第2、3周学习总结


    目录

    学号20182323 2019-2020-1 《数据结构与面向对象程序设计》第2、3周学习总结

    教材学习内容总结

    第二章

    1. print和println两种方法的区别
    关键概念:print和println方法代表System.out对象提供的两个服务。
    
    1. 字符串连接的用法(字符串连接运算符+、与数字连接的两种情况,参见教材P22、23中程序2.2和程序2.3)
    关键概念:在java中,运算符+用于加法及字符串连接。
    
    1. 转义字符(用“ok"给输出的ok加上双引号)

    其他转义字符参见图片

    1. 声明变量时最好给其赋初值,如果在明确给出变量初值之前使用该变量,那么大多数的java编译程序会给出错误或警告信息。
    关键概念:变量时内存中用来保存一个特定类型数据值的位置的名称。
    
    1. 赋值语句
    关键概念:不能将一个类型的值赋给与之不匹配的另一个类型的变量(java强类型语言的体现)
    
    1. 常量的用法与C语言中的宏定义类似(在类型前加final)。
    2. 强制类型转换运算符的优先级比除法运算符的优先级要高。
    3. 强制类型转换操作不会改变原变量的值
    4. Scanner类的一些方法
    • 创建一个Scanner类的对象
    Scanner scan = new Scanner(System.in);
    
    • scan为变量,new用来创建对象;
    • Scanner类的next方法读入下一个输入标记,而nextLine方法读入当前行的所有输入,直到行尾,然后作为字符串返回。

    第三章

    1.学习使用new运算符建立对象(即实例化),类和对象的关系。

    2.对象引用变量的声明和初始化。用"."来引用方法,并且需要保留()。

    3.了解String类的一些基本方法和标准类库java API。

    4.除了在java.lang中的变量无需import声明,其他都需要import声明(简化类的多次引用)。

    5.了解和使用Random类和Math类。

    6.理解格式化输出中NumberFormat类和DecimalFormat类和printf方法。

    7.特殊的枚举型数据类型,枚举型是一种特殊的类,枚举型变量是对象变量。(这点特殊在编译代码时让我发现编译好的class文件名中多了$变量名)。

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

    • 问题1:import java.util.*;和import java.util.Scanner;有什么区别。

    • 问题1解决方案:查阅网上资料得知:✳是通配符,指的是改包下面的所有子包内容
      不过:
      比如你要用Scanner这个工具类
      import java.util.Scanner(它只会导Scanner类,在你所建的类中只可以用util中Scanner类)
      import java.util.*(它是采用赖加载模式,你用到util中哪个类它才会加载哪个类。可以省去你一些导包的功夫,不必担心它多加载)

    • 问题2:对类和对象这两个概念不清楚。

    • 问题2解决方案:查阅网上资料Java 对象和类得到了一个形象的解释:

        对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
      
        类:类是一个模板,它描述一类对象的行为和状态。
      

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

    • 问题1:编译时出现错误:不兼容的类型:从float转换到int可能有损失。

    • 问题1解决方案:从float转换为int为缩窄转换,可能会出现数据缺失,所以将int型的c重新定义为float型。

    • 问题2:编译时弹出错误:程序包java.until不存在

    • 问题2解决方案:因为自己敲代码敲快了,将util多敲了个n,去掉n即可。

    代码托管

    上周考试错题总结

    • 问题1: What value will z have if we execute the following assignment statement? float z = 5 / 10; (如果我们执行下面的赋值语句,得到的z将会是什么值?)

      A . z will equal 0.0 (z将等于0.0)

      B . z will equal 0.5 (z将等于0.5)

      C . z will equal 5.0 (z将等于5.0)

      D . z will equal 0.05 (z将等于0.05)

      E . none of the above, a run-time error arises because z is a float and 5 / 10 is an int (以上都不对,因为z是float类型,5 / 10是int类型,所以会发生运行时错误)

    • 问题1分析与理解:这道题中5和10是int型变量,进行除法运算时就会按照int型变量进行计算,然后再进行赋值型提升转换,变成0.0.故选择A.

    • 问题2:A cast is required in which of the following situations? (下列哪种情况需要强制转换?)

      A . using charAt to take an element of a String and store it in a char (使用charAt来获取字符串元素并将其存储为char类型)

      B . storing an int in a float (将一个int类型的数存储为float类型)

      C . storing a float in a double (将一个float类型的数存储为double类型)

      D . storing a float in an int (将一个float类型的数存储为int类型)

      E . all of the above require casts (以上所有情况都需要强制转换)

    • 问题2分析与理解:D答案中是缩窄转换,会有数据遗失的风险,编译会显示错误,因此需要强制转换。故选择D。

    • 问题3:If x is an int and y is a float, all of the following are legal except which assignment statement? (如果x是一个int类型的数,y是一个float类型的数,下面所有赋值语句中哪个不合法?)

      A . y = x;

      B . x = y;

      C . y = (float) x;

      D . x = (int) y;

      E . all of the above are legal (以上全部合法)

    • 问题3分析与理解: 与第二题类似,A为提升型转换,C和D为强制型转换。

    • 问题4: What is output with the statement System.out.println(""+x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(""+x+y);的输出是什么?)

      A . 15

      B . 105

      C . 10 5

      D . x+y

      E . An error since neither x nor y is a String
      (因x和y都不是字符串而引起的一个错误)

    • 问题4分析与理解:根据课本第二章字符串连接的内容,“+”起到的是连接符的作用。若为+ x + y;这样出来的两个数字是有空格的。

    • 问题5: If you want to store into the String name the value "George Bush", you would do which statement? (如果你想把"George Bush"这个值存储为字符串类型的名字,你会执行那条语句?)

      A . String name = "George Bush";

      B . String name = new String("George Bush");

      C . String name = "George" + " " + "Bush";

      D . String name = new String("George" + " " + "Bush");

      E . Any of the above would work (上述都可以完成)

    • 问题5分析与理解:
      通过第三章的学习了解到,上述几个答案都能执行。

    • 问题6: Java is a strongly typed language. What is meant by "strongly typed"? (Java是一种强类型语言。“强类型”指的是什么?)

      A . Every variable must have an associated type before you can use it (在使用变量之前,每个变量一定都有一个与之关联的类型)

      B . Variables can be used without declaring their type (变量可以在不声明其类型的情况下使用)

      C . Every variable has a single type associated with it throughout its existence in the program, and the variable can only store values of that type (在程序中,每个变量都有一个与之关联的类型,而变量只能存储该类型的值)

      D . Variables are allowed to change type during their existence in the program as long as the value it currently stores is of the type it is currently declared to be (变量存在于程序中时允许改变类型,只要它当前存储的值是当前声明的类型)

      E . Variables are allowed to change types during their existence in the program but only if the change is to a narrower type (变量存在于程序中时允许改变类型,但只能缩窄转换)

    • 问题6分析与理解:根据解析大致理解是:强类型很重要的原因是它不会误用已经声明了的类型的变量,保证了程序正常编译而不会运行出错。(在程序中,每个变量都有一个与之关联的类型,而变量只能存储该类型的值),B答案较为合理。

    问题7:In Java, 'a' and 'A' are considered to be different values. (在Java中,'a'和'A'被当成不同的数值)

    A . true
    
    B . false
    
    • 问题7分析与理解: 'a' and 'A' 有不同的ASCII 码值 和 不同的 Unicode编号。

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:

      • 加入自己学习过程中的图片,给人印象深刻。
      • 态度认真,对问题有自己的见解。
    • 代码中值得学习的或问题:

      • 代码排版不错,便于阅读
      • 代码量有待提升
    • 基于评分标准,我给本博客打分:13分。得分情况如下:

    1. 正确使用Markdown语法(加1分):

      • 不使用Markdown不加分
      • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
      • 排版混乱的不加分
    2. 模板中的要素齐全(加1分)

      • 缺少“教材学习中的问题和解决过程”的不加分
      • 缺少“代码调试中的问题和解决过程”的不加分
      • 代码托管不能打开的不加分
      • 缺少“结对及互评”的不能打开的不加分
      • 缺少“上周考试错题总结”的不能加分
      • 缺少“进度条”的不能加分
      • 缺少“参考资料”的不能加分
    3. 教材学习中的问题和解决过程(2分)

    4. 代码调试中的问题和解决过程(2分)

    5. 本周有效代码超过300分行的(加0分)

    6. 其他加分:

      • 周五前发博客的加1分
      • 感想,体会不假大空的加1分
      • 进度条中记录学习时间与改进情况的加1分
      • 有动手写新代码的加1分
      • 错题学习深入的加1分
      • 点评认真,能指出博客和代码中的问题的加1分
      • 结对学习情况真实可信的加1分

    点评过的同学博客和代码

    其他(感悟、思考等,可选)

    学习java之路任重而道远,写博客需要每天写一些,这样到最后就能有条不紊的完成学习任务。对待问题要有勇于专研的态度。多多理解,多多敲代码。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 10000行 30篇 400小时
    第一周 77/77 2/2 15/15
    第三周 424/501 3/5 30/30
    • 计划学习时间:35小时

    • 实际学习时间:30小时

    • 改进情况:准备抽出刷视频的时间拿出来学习

    参考资料

    Random类常用方法详解析

    Java 对象和类

  • 相关阅读:
    安装 TensorFlow
    Active Learning
    基于PU-Learning的恶意URL检测
    AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法
    Graph 卷积神经网络:概述、样例及最新进展
    深度学习在graph上的使用
    xgboost入门与实战(实战调参篇)
    xgboost入门与实战(原理篇)
    机器学习中的损失函数 (着重比较:hinge loss vs softmax loss)
    <html>
  • 原文地址:https://www.cnblogs.com/caoqian1314/p/11569823.html
Copyright © 2020-2023  润新知