• 20155305乔磊2016-2017-2《Java程序设计》第三周学习总结


    20155305乔磊 2016-2017-2 《Java程序设计》第三周学习总结

    教材学习内容总结

    • 对象(Object):存在的具体实体,具有明确的状态和行为
    • 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制
    • 从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象
    • 从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)
    • 类是对象的设计图,对象是类的实例,生成对象要先定义类

    4.1 类与对象

        Clothes c1 = new Clothes(); 
    
    • c1是引用,在栈上
      new Clothes()在堆上生成对象
      c1 可以近似看成指向对象的指针

    • 封装 = 类 + 访问控制(public,protected,private...)
      java.util.Scannerjava.math.BigDecimal

    • 注意类的构造方法
      Scanner类大大简化了Java的输入,要熟练掌握其方法,关键是会查API文档,能自学

    • 对象相等
      ==equals的区别
      ==比较的对象的地址
      equals是逻辑上相等

    • 函数
      又称方法,是定义在类中的具有特定功能的一段独立的小程序。

    • 格式:

        修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
        {
        执行语句;
        return 返回值;
        }
      
    • 返回值类型函数运行后结果的数据类型,return结束函数,返回值返回给调用处,形式参数变量,存储调用函数时传递给函数的实际参数,实际参数传递给形式参数的具体数值。

    • 不用返回值的函数可以用void声明。

    • 程序示例

        class Clothes2
        {
            String color;
            char size;
            Clothes2(String color, char size)
            {
                this.color=color;
                this.size=size;
            }
        }
      
        public class Field2
        {
            public static void main(String[] args)
            {
                Clothes2 sun = new Clothes2("red",'S');
                Clothes2 spring = new Clothes2("green",'M');
                System.out.printf("sun(%s,%c)%n",sun.color,sun.size);
                System.out.printf("spring(%s,%c)%n",spring.color,spring.size);
            }
        }
      

    4.2 基本类型包装

    • 为了让Java 基本类型像类一样使用 int-Integer
      long-Long
      byte-Byte
      float-Float
      double-Double
      boolean-Boolean
      ...

    • 程序示例

        public class IntegerDemo
        {
            public static void main(String[] args)
            {
                int data1 = 10;
                int data2 = 20;
                Integer w1 = new Integer(data1);
                Integer w2 = new Integer(data2);
                System.out.println(data1/3);
                System.out.println(w1.doubleValue()/3);
                System.out.println(w1.compareTo(w2));
            }
        } 
      
    • 理解Autoboxing和Unboxing
      AutoboxingUnboxing是编译器语法

    4.3 数组对象

    • Java中,数组是对象
      与C语言不同,Java检查数组边界,越界会触发ArrayIndexOutOfBoundsException异常

    • 数组访问的foreach语法

    • 是同一类型数据的集合,是一个容器。它会自动从0开始编号。

    • 格式:

        元素类型[] 数组名=new 元素类型[元素个数或数组长度];
        元素类型[] 数组名=new 元素类型[]{元素,元素,...};
        元素类型[] 数组名={元素,元素,...};
      
    • 数组一被定义即有默认初始值。

    • javac -encoding 指定字符编码

    • 思考题:
      举例说明什么是浅拷贝与深拷贝?

        深拷贝:采用了在堆内存中申请新的空间来存储数据,这样每个可以避免指针悬挂。
      
        浅拷贝:也就是在对象复制时,只是对对象中的数据成员进行简单的赋值,如果对象中存在动态成员,即指针,浅拷贝就会出现问题。
      

    4.4 字符串对象

    • String/StringBuffer/StringBuilder

    4.5 查询API文档

    • 学习Java,同样要学会使用Java API,在Windows下一定要下载CHM格式的Java API,这个版本具有检索功能,使用非常方便。

    5.1 何谓封装

    • 封装实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作
    • 封装的好处
      模块化(Modularity)
      信息隐藏(Information hiding)

    5.2 类语法细节

    • public
        用在类前
        用在方法前
        用在成员变量前

    • private
        用在类前不可以
        用在方法前不可以
        用在成员变量前

    • this

    • 除了被声明为static的地方外,this关键字可以出现在类中任何地方,在构造函数与对象数据成员同名时,可用this加以区别。

    • static:所有对象公有的

    • 被声明为static的成员,不会让个别对象拥有,而是属于类,将类名称作为名称空间。

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

    • 1 问题:在操作对象时,=和==的区别,并且不太能够熟练区分应用。
    • 1 解决方案:首先理解概念,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一个对象。然后我编代码时注意这些特殊的点,渐渐掌握。
    • 2 问题:Java编写中事先建立的数组长度不够怎么办?
    • 2 解决方案:利用Arrays.copyOf()方法建立新数组,将原数组内容复制至新数组。理解到Arrys.copyOf()的第二个参数就是指定建立的新数组长度。

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

    • 1 问题:在编译书上p96Score程序时,我错将System.out.printf("学生分数:%d %n",scores[i])打成System.out.println("学生分数:%d %n",scores[i]),结果弹出来很多错误。在上一章中书上说System.out.printf是按格式输出,而System.out.println是输出后换行,如果仅仅只是换行的差别的话那为什么用后面一种不行呢?

    • 1 解决方案:后来了解到这主要是因为println是用于输出参数内容,然后换行,其参数个数固定为一个,而printf是用于输出带各种数据类型的占位符的参数,其参数个数是不定的,所以上面的代码应该用printf。

    • 2 问题:书上代码平均值结果是NaN

    • 2 解决方案:应该是因为没有输入数字的结果吧,没有解决。

    代码托管

    上周考试错题总结

    • 填空:~0b1011的十进制值是(-12)

        00001011取反得11110100,因为java语音中带符号得不骂形式,所以对他区补码,则得10001100,即-12. 
      
    • 填空 :0x10%9 的结果是( 7 )

        0x是16进制的意思,0x10是16,16%9答案是7                                               
      
    • 填空 :0x10&9 的结果是(0)。

        同上一题,16和9位运算,得0。                                                          
      

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 3000行 20篇 400小时
    第一周 200/200 1/1 18/18
    第二周 153/353 1/2 18/36
    第三周 356/709 1/3 24/60
    • 计划学习时间:30小时

    • 实际学习时间:24小时

    • 改进情况:计划时间提高了,所以学习时间有所提高,但是由于缺乏经验,可能计划学习时间没有能够达到。

    参考资料

  • 相关阅读:
    学习进度条73
    学习进度条72
    学习进度条71
    学习进度条70
    学习进度条69
    学习进度条68
    学习进度条67
    学习进度条66
    学习进度条65
    elasticsearch
  • 原文地址:https://www.cnblogs.com/20155305ql/p/6509383.html
Copyright © 2020-2023  润新知