美文网首页
Java进阶

Java进阶

作者: zjlearn | 来源:发表于2016-12-09 15:11 被阅读17次

    对象集合

    1. 避免人机交互和业务逻辑进行融合,也就是注意解耦

    2.注意程序的细节,每个函数的执行可能的结果

    3.对象数组中的每个元素都是对象的管理者而非对象本身

    4. for循环返回对于对象返回的是引用,对于基本类型是副本

    5.能够直接讲对象放到打印中去,因为实现了toString

    6 .Map的put时,key相等时,相当于直接修改key相对应的值

    Java中有两大种数据类型:基本类型和  引用(非基本类型)。 基本类型中表示数据本身,Java 中共8个基本类型, 如下:
    * bool
    * char
    * byte
    * int
    * long
    * float
    * double
    * void
    

    其他的类型都为非基本类型,非基本类型的变量保存的是引用,而非对象本省,可以理解为一个指针。

    继承

    7.子类构造器会自动调用父类的构造器,即使你没有显示的调用父类的构造器
    继承体系中变量的初始化的过程:
    先初始化父类,然后初始化子类。
    8.如果子类和父类中有相同的变量,那么变量共存,在子类中的访问的变量是子类的,在父类中访问的是父类的变量

    • java 的对象变量是多态的,他们能够保存不止一种类型的对象
    • 他们可以保存的是声明类型的对象,或者声明类型的子类的对象
    • 当把子类的对象赋值给父类的变量的时候,就发生了向上造型。
      Java具有静态类型和动态类型,静态类型是编译时期确定的类型,动态类型为运行时确定的类型,其为真实的对象的类型

    9 . 关于向上造型:

    • 子类的对象可以赋值给父类的对象

    ** java中不存在对象对对象的赋值, 仅仅是一个引用的改变,也就是浅拷贝**

    ** 父类的对象不能赋值给子类的对象(其是由编译器所决定的,编译器会根据静态类型进行报错)

    ** 但是可以使用强制的cast造型的方式绕过编译器的限制。 但是其正确性必须有程序员自己决定,如果左右真实的类型不匹配,运行时将会报
    classCaseException 错误。

    对于基本类型的强制转化和引用类型的强制转换
    基本类型的强制转换,存储的值直接发生变化,但是相对于引用类型强制转换的时候,仅仅是引用改变了,引用指向的对象不变。

    float b=1.5f
    int x=(int)b; //
    Vechicle v;
    Car c= new Car();
    v=c; //可以
    c=v; //编译错误
    c=(Car)v //编译通过,但是运行时会发生classCaseException
    
    编译器不允许父类复制给子类,但是可以通过强制类型转换,绕过编译器。
    

    绑定:

    静态绑定和动态绑定:
    静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程称之为静态绑定。
    动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法
    Java中的方法只有final,static,private和构造方法是前期绑定

    覆盖

    覆盖指之类覆盖父类中的方法,这要求函数签名相同,最好使用@overide标志。
    

    单根结构Object

    即所有的类默认继承至object。
    

    object的类
    Object类的toString的默认输出是:对象加地址
    注意equals的签名中,函数的参数是Object,所以使用时一般需要cast. 前面加上override的时候更加安全

    设计原则

    • 消除代码复制,

    • 可复用,可维护,可扩展。

    • 用封装来降低耦合

    • 尽量私有化成员变量

    • 框架+数据提高可扩展性(尽可能的改造)

      其主要的方法是,减少程序的硬编码的数量,尽量使用对象加上框架的方式增加程序的可扩展。其主要的还是先需要查看程序中会有改动的部门。

    抽象和接口

    抽象函数:表达概念而无法实现代码的函数

    抽象类: 表达概念而无法构造出实体的类

    修饰符:abstract. 有抽象函数的类一定是抽象类。

    抽象类不一定必须含有抽象方法。只要使用abstract修饰符修饰即可。

    设计模式

    控制反转.

    内部类可以认为是外部类的一个成员,作为成员其具有访问其他的成员的权限。当然还有函数的内部类。

    匿名类: 在new对象的时候,直接给出类的定义

    MVC三层设计模式

    异常

    异常的处理流程: 当前的环境是否是try环境,否则返回上一个函数

    异常最大的好处就是分割了业务逻辑和错误处理代码

    异常类的体系

    catch匹配的时候 是一种IS-A的关系,也就是父类可以捕捉子类

    当异常遇到继承关系时:

    当覆盖一个函数的时候,子类不能声明比父类的版本更多的异常,在子类的构造函数中,必须声明父类可能抛出的全部异常,

    但是构造函数 可以增加额外的异常,

    IO

    当将对象通过序列化的方式写入到文件中时,写入到文件中的对象远远不止基本信息,还有其他的一些信息,包括对象的类的信息,这样才可以读出时,重构出相关的对象。

    相关文章

      网友评论

          本文标题:Java进阶

          本文链接:https://www.haomeiwen.com/subject/tygemttx.html