java知识点---第二部分

  • 面向对象的特点:
    • 封装性:将对象的属性与行为看成一个整体;信息隐蔽:可以将对象的属性与行为保护起来,不让外界知道或者进行修改
    • 继承性:可以继承一些已知的类,极大的减少了代码量
    • 多态性:方法的重载,对象多态。
    • 类与对象:汽车的设计图纸是类,具体生产出的某台汽车是对象。
    • 类中的属性必须都进行封装,封装的属性必须通过setter和getter进行访问。
    • 用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用
    • 构造方法
      • 构造方法的作用就是为类中的属性初始化
      • 构造方法的名称必须与类名称一致
      • 构造方法的声明处不能有任何返回值类型的声明,不能使用return返回值
      • 只要是类就必定存在构造方法,如果一个类中没有声明构造方法,那么在编译时,会自动生成一个无参的构造方法。如果一个类中已经明确的声明了一个构造方法,那么就不会再自动生成无参的构造方法,一个类中应该保证至少有一个构造方法。
  • 对象
    • 要使用对象就必须要对对象进行实例化
    • 对象的内容存放在堆内存中,栈内存中保存的是内存存放的地址。只有对象通过new关键字实例化之后才会在堆内存开辟空间进行保存
    • 对象属性的默认值:字符串的默认值为null,整数的默认值为0
    • 一个栈内存空间只能指向一个堆内存空间,如果想要指向其他的堆内存空间,那么需要先断开已有的指向才可以重新分配新的空间。断开指向的空间便成了垃圾空间,在java中有垃圾回收机制GC会不定期的释放空间。
  • String类
    • 一个字符串就是一个String类的匿名对象,该对象已经开辟了堆内存空间。
    • string类的实例化建议使用直接赋值的方法,如果采用new关键字的方式进行实例化,不管该对象是否已经存在,而是直接开辟新的空间,这样会造成垃圾。
    • 使用直接赋值的实例化方法:String str=“hdsodn”;这种方式产生的对象在一个对象池里,如果发现要实例化的对象已经存在,便不再重新定义。这种入池的操作是一种共享的模式。
    • 字符串的内容一旦声明则不可改变。
  • this关键字
    • 调用本类中的方法
    • 表示类中的属性
    • 可以使用this调用本类的构造方法,必须放在构造方法的首行
    • this表示当前对象
  • static关键字
    • 被static关键字定义的属性,可以被所有对象共享,可以直接使用类名称定义,该属性称之为全局属性(静态属性)
    • 类中的方法被static关键字定义后,该方法可以直接由类进行调用
    • 非static声明的方法可以去调用static声明的属性或方法,但是static声明的方法是不能调用非static类型声明的属性和方法。原因是static定义的方法在对象未被实例化时就可以被类名调用,而非static定义的方法必须要对象实例化后才可以被调用。
  • java中的常用内存区域
    • 栈内存空间:保存所有的对象名称(保存了引用的堆内存空间的地址)
    • 堆内存空间:保存每一个对象的具体属性内容
    • 全局数据区:保存static类型的属性
    • 全局代码区:保存所有的方法定义
  • final关键字
    • 使用final声明的类不能有子类
    • 使用final声明的方法不能被子类所覆写
    • 使用final声明的变量既为常量,该常量不可以修改,全部的字母都大写
  • 抽象类
    • 抽象类就像是一个“模板”,他的目的是设计者依据他的格式来修改并创建新的类,但是抽象类并不能直接创建对象,只能是通过抽象类派生出新的类,再由新的派生类创建对象。
    • 一个子类只能继承一个抽象类
    • 包含一个抽象方法的类必须是抽象类
    • 抽象类和抽象方法都要使用abstract关键字声明
    • 抽象方法只需要声明不需要实现
    • 抽象类必须要被子类继承,子类(如果不是抽象类)必须要覆写抽象类中的所有的抽象方法。
  • 接口(interface)
    • 接口是由全局变量和公共的抽象方法组成。接口中的抽象方法必须定义为public访问权限,即使省略不写,也是public访问权限,而不是default权限
    • 一个子类可以同时实现多个接口(implements),该子类必须要同时覆写全部接口的抽象方法
  • 对象的多态性(没太理解)
    • 对象的向上转型 父类 父类对象 = 子类实例
    • 对象的向下转型 子类 子类对象 = (子类)父类实例
    • 在发生向下转型之前必须要先向上转型,否则会发生对象转换异常。
  • instanceof关键字:
    • 判断一个对象是哪个类的实例
    • 对象 instanceof 类
  • Object类
    • 所有的类都有一个公共的父类Object。所有的对象都可以向Object进行转换,一切的引用数据类型都可以使用Object进行接收。
    • Object类常用的方法:
      • toString():取得对象内容
      • equals():对象进行比较
      • hashCode():取得hash码
    • 包装类
      • 将基本数据包装成类,这样基本数据类型可以成为一个对象
      • 对象型包装类(Object的直接子类):Boolean(boolean)、Character(char)
      • 数值型包装类(Number的直接子类):Interger(int)、Short(short)、Long(long)、Float(float)、Double(double)、Byte(byte)
      • 装箱与拆箱(JDK1.5之后提供了自动装箱与拆箱的操作)
        • 装箱:将基本数据类型变成包装类:int x=30;Integer i =new Integer(x);
        • 拆箱:将包装类变为基本数据类型:int temp=i.intValue();
      • 将基本数据类型转换为字符串
        • 在String类型中有valueOf()方法,可以将基本数据类型转换为String类型
        • 也可以使用“+”这种方式,但是这种方式会产生垃圾,不建议使用
    • 访问控制权限
      • private:私有访问权限,可以用在属性的定义与方法的声明上,一旦使用了private关键字声明,则只能在本类中进行访问
      • default:默认的访问权限,可以被本包中的其他类所访问,但是不能被其他包的类所访问
      • protected:受保护的访问权限,只能被本包或者不同包的子类所访问
      • public:公共访问权限:可以在所有类中被访问,不管是否在同一个包中。

猜你喜欢

转载自www.cnblogs.com/Etude/p/9279810.html