Java基础(一)

108 阅读3分钟

final关键字

final关键字的用法

final修饰类

final修饰方法

例子

final修饰局部变量

final修饰成员变量

内部类

成员内部类

-- 内调用外 -- 外调用内

  1. 间接方式
  2. 直接方式

内部类重名变量访问

局部内部类

-- 调用局部内部类(通过外部方法中局部内部类自己调用内部方法)

类权限修饰符

局部内部类的final问题

匿名内部类

匿名对象

String和StringBuilder

int和Integer互转

自动装箱和拆箱

基本类型->字符串(String)

基本类型的值 + ""

字符串(String)->基本类型

集合

Collection父类共用方法

迭代器

例子 注: next()既会取出元素,也会把指针向后移一位。

红黑树

List

List集合遍历

ArrayList

  • 底层数据集结构是可变长度的数组。
  • 不是线程同步的,多线程并发,效率高速度快。
  • 查询快(数组地址连续),增删慢(每增加一个元素,底层就要调用数组复制方法(arraycopy))。

LinkedList

  • 底层数据集结构是链表。
  • 不是线程同步的,多线程并发,效率高速度快。
  • 获取、操作首尾元素效率高。增删快,查询慢。
  • 创建LinkedList不能使用多态。
  • 特有方法: 注: addFirst(..)等效于push(..)addLast(..)等效于add(..)removeFirst()等效于pop()

Vector

  • 底层数据集结构是数组。
  • 是线程同步的(单线程)。

HashSet

  • 遍历
  • 哈希值: 对象的逻辑地址,十进制,不是物理地址。
  • 哈希表
  • Set集合不存储重复元素的原理

前提:存储的元素必须重写hashCodeequals方法,所以用HashSet存储自定义元素时,自定义类(如Person)要重写hashCodeequals方法。

String类内部重写了hashCodeequals方法。

LinkedHashSet

  • 不允许重复但有序。

Collections集合工具类方法

Collections.sort

  • 自定义类需要重写接口Comparable中的compareTo方法
  • 接口Comparable的排序规则 针对自定义类排序的例子

Comparable和Comparator的区别

普通例子 针对自定义类排序的例子

  • 可定义多条排序规则。

HashMap和LinkedHashMap

HashMap中的方法

put

remove

  • 注意方法的返回值。
  • 使用包装类(如Integer)代替基本数据类型(如int)。

get

containsKey

keySet

通过key找value的方式遍历Map集合

示例 或使用增强for循环遍历

entrySet

  • Map.Entry存储的是Map中的<key,value>对。

通过Entry对象遍历 示例 或使用增强for循环遍历

  • 注意:HashMap存储自定义类型(如Person)为key时,为保证key是唯一的,必须重写hashCodeequals方法。

LinkedHashMap

  • 底层实现是哈希表+链表(记录元素顺序),所以是有序的。HashMap是无序的。

Hashtable

Hashtable和HashMap的区别

  • 同: 底层都是哈希表。
  • Hashtable的键和值都不能为null。HashMap允许键和值为null。
  • Hashtable是同步的(线程安全/单线程),所以速度慢。HashMap是线程不安全的(多线程),所以速度快。

Debug

  • 在出错的代码前一行加断点进行调试。