1. Java8新特性_简介

hashmap默认16,超过后提供加载因子0.75

超过75%自动扩容,不能小于75%(浪费空间),扩容后链表内容重新排序,碰撞概率降低

数组——链表——红黑树

每个链表长度大于8并且总容量大于64,链表会转变成红黑树(除了添加外,都比链表快)

hashmap

hashset

concurrenthashmap

1、速度更快

2、代码更少(增加了新的语法Lambda表达式)

 

 

一、类:用Class修饰符修饰的就是类

二、方法的声明(定义)

修饰符 返回值类型 方法名([参数类型 参数名1, 参数类型 参数名2, ...]){
执行语句
...
[return 返回值;]
}
// []中的数据可以没有

我们可以看到方法的基本组成包括:名称、参数、返回值和方法体。

  • 修饰符:方法的修饰符较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等。
  • 返回值类型:用于限定方法返回值的数据类型。
  • 参数类型:用于限定调用方法时参数参数的类型。
  • 参数名:是一个变量,用于接收调用方法时传入的数据。
  • return关键字:用于结束方法以及返回方法指定类型的值。

          当方法以void关键字声明,那么此方法没有返回值;但可以使用return来结束调用。

三、构造器

用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义。

  • 构造器的名称必须与类名同名,包括大小写。
  • 构造器没有返回值,但也不能写void,也不能写return。
  • 构造器的参数:一般是初始化对象的前提条件。
  • 用new调用!且对象一建立,构造器就运行且仅运行一次。一般方法可被调用多次。
  • 类一定有构造器!这是真的,不需要质疑!
  • 如果类没有声明(定义)任何的构造器,Java编译器会自动插入默认构造器!
  • 默认构造是无参数,方法体是空的构造器,且默认构造器的访问权限随着所属类的访问权限变化而变化。如,若类被public修饰,则默认构造器也带public修饰符。
  • 默认构造器是看不到的,一旦自己写上构造器则默认构造器就没有了,自己写的叫自定义构造器,即便自己写的是空参数的构造器,也是自定义构造器,而不是默认构造器。
  • 如果类声明了构造器,Java编译器将不再提供默认构造器。若没手动写出无参构造器,但却调用了无参构造器,将会报错!
  • 构造器是可以重载的,重载的目的是为了使用方便,重载规则与方法重载规则相同。 
  • 构造器是不能继承的!虽说是叫构造方法,但实际上它不是常说的一般方法。 
  • 子类继承父类,那么子类型构造器默认调用父类型的无参数构造器。
  • 子类构造器一定要调用父类构造器,如果父类没有无参数构造器,则必须使用super(有参数的),来调用父类有参的构造器。 那么,为什么子类一定要访问父类的构造器?因为父类中的数据子类可以直接获取。所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时,要先访问一下父类中的构造器。总之,子类中至少会有一个构造器会访问父类中的构造器,且子类中每一个构造函数内的第一行都有一句隐式super()。
  • 注意事项:sper()、sper.和 this()、this.
  • this:在运行期间,哪个对象在调用this所在的方法,this就代表哪个对象,隐含绑定到当前“这个对象”。
  • super():调用父类无参构造器,一定在子类构造器第一行使用!如果没有则是默认存在super()的!这是Java默认添加的super()。
  • super.是访问父类对象,父类对象的引用,与this.用法一致
  • this():调用本类的其他构造器,按照参数调用构造器,必须在构造器中使用,必须在第一行使用,this() 与 super() 互斥,不能同时存在
  • this.是访问当前对象,本类对象的引用,在能区别实例变量和局部变量时,this可省略,否则一定不能省!
  • 如果子父类中出现非私有的同名成员变量时,子类要访问本类中的变量用this. ;子类要访问父类中的同名变量用super. 

四、匿名内部类

new 父类名或接口名

 

posted @ 2020-02-05 12:04  李清欣  阅读(183)  评论(0编辑  收藏  举报