Java笔记③

13 阅读6分钟
  • 一、包装类

1.基本数据类型的包装类

  • 整型(byte、short、int、long)、浮点型(float、double)、布尔型boolean、字符型char。对应包装类:Byte、Short、Integer、Long、Character、Float、Double、Boolean
  • 把基本数据类型变量转换成包装类实例是通过对应包装类的valueOf(例如Integer.valueOf())实现的
  • 8个包装类中除了Character之外,还可以通过传入一个字符串参数来构建包装类对象
  • 获得包装类对象中包装的基本类型变量:xxxValue()实例方法
  • 自动装箱:把一个基本类型的变量直接赋给对应的包装类变量
  • 自动拆箱:将包装类自动转换成对应的基本数据类型
  • 包装类还可以实现基本类型变量和字符串之间的转换,除了Character之外的所有包装类都提供了一个parseXxx(String s)静态方法
  • 如果将基本类型转换为字符串,只需在后面加+ “ ”进行连接运算。

二、单例类

1.定义:如果一个类始终只能创建一个对象,称为单例类 2.条件:

  • 我们把该类的构造器使用Private修饰,从而把该类的所有构造器隐藏起来。
  • 需要提供一个public方法作为该类的访问点,用于创建该类的对象,且必须使用static修饰
  • 该类还必须缓存已经创建的对象,必须用static修饰

三、final类

  • final类不能被继承,即不能有子类
  • Java提供的String类,它对于编译器和解释器的正常运行有很重要的作用,对它不能轻易改变,因此它被修饰为final类。
  • 如果一个方法被修饰为final方法,则这个方法不能被重写。
  • final 修饰的方法仅仅是不能重写,但它完全可以被重载

final变量

  • final修饰变量时,表示该变量一旦获得初始值之后就不可被改变。
  • final既可修饰成员变量,也可以修饰局部变量

final修饰成员变量

  • 成员变量是随类的初始化或对象初始化而初始化的。final修饰的成员变量必须由程序员指定初始值。
  • 对于类属性而言,要么在静态初始化中初始化,要么在声明该属性时初始化。
  • 对于实例属性,要么在普通初始化块中指定初始值。要么在定义时、或构造器中指定初始值

final修饰局部变量

  • 使用final修饰局部变量时既可以在定义时指定默认值,也可以不指定默认值
  • 给局部变量赋初始值,只能一次,不能重复

四、抽象类

abstract类不能用new运算创建对象,必须产生其子类,由子类创建对象。对于abstract方法,只允许声明,而不允许实现 如果一个类是一个abstract类的子类 ,它必须具体实现父类的abstract方法 如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法) 抽象方法和类都必须使用abstract来修饰,有抽象方法的类只能定义成抽象类,抽象里也可以没有抽象方法 抽象类不能被实例化,可以通过其子类给他赋值,普通类里有的抽象里也有,定义抽象方法只需在普通方法上增加abstract修饰符,并把普通方法的方法体(也就是方法后花括号括起来的部分)全部去掉,并在方法后增加分号即可 抽象类的特征:可以拥有抽象方法;失去了创建对象的能力

五、非访问控制符

0651a35a2d98e5b832daa4366833164.png

六、接口

  • 接口是抽象类的一种,只包含常量和方法的定义,而没有变量和具体方法的实现
  • 一个类可以实现多个接口
  • 关键字interface,分为接口的声明和接口体
  • 子接口扩展某个父接口将会获得父接口的所有抽像方法,常量属性,内部类和枚举类定义
[修饰符] interface接口名 extends 父接口1,父接口2 ...{
零个到多个常量定义...
零个到多个抽象方法定义...
零个到多个内部类、接口、枚举定义...
零个到多个私有方法、默认方法或类方法定义...
}
  • 接口可以用于声明引用类型的变量,但接口不能用于创建实例
  • 当使用接口来声明引用类型的变量时,这个引用类型的变量必须引用到其实现类的对象
  • 一个类可以实现一个或多个接口,继承使用extends关键字,实现接口则使用implements关键字
  • 一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法(也就是重写这些抽象方法);否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类

接口与抽象类的相同

  • 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承
  • 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法 接口与抽象类的不同

接口与抽象类的不同

  • 接口里只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供方法实现;抽象类则完全可以包含普通方法
  • 接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,也可以定义静态常量
  • 接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作
  • 接口里不能包含初始化块;但抽象类则完全可以包含初始化块

七、集合类

  • 为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组)
  • 负责保存、盛装其他数据,也叫容器类。所有集合类都位于java.util包下。
  • 集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类