• [总结]Java语法


    Java提供了八种基本数据类型:6种数字类型(4个整数型,两个浮点型),一个字符型、一个布尔型。

    • 整型 byte; short; int; long
      我们可以通过包装类的MAX_VALUE,MIN_VALUE来得到最大最小值。
    • 浮点型 float; double
      另外,有三个用于表示溢出和出错情况的特殊的浮点数值。我们可以通过包装类的POSTIVE_INFINITY,NEGATIVE_INFINITY来得到正无穷和负无穷。Double.NaN代表“不是数字”。
    • 字符型 char
      Java采用Unicode编码,一个char类型2个字节,相当于16位无符号整数 0-65536('\u0000' - '\uFFFF')
    • 布尔型 boolean

    基本数据类型和String之间的相互转化

    //基本数据类型转String
    int a = 20;
    String aa = a+"";
    
    //String转基本数据类型
    int bb = Integer.parseInt(aa);
    
    //Char to int
    char ch = '8';
    int cc = ch - '0';
    
    int number = 9;
    char cNumber= (char)(number+'0');
    
    char[] charArray = new char[] { 'a','b','c' };
    String str = String.valueOf(charArray); // "abc"
    

    String

    Java中String表示字符串类型,属于 引用数据类型,不属于基本数据类型。在JDK当中双引号括起来的字符串,例如:“abc” "def"都是直接存储在“方法区”的“字符串常量池”当中的。
    String的常用方法有:

    方法名 作用
    char charAt(int index) 返回指定位置的字符
    int compareTo(String anotherString) 比较两个字符串。相等返回0;前大后小返回1;前小后大返回-1
    boolean contains(CharSequence s) 判断字符串是否包含s
    boolean endsWith(String suffix) 判断字符串是否以suffix结尾
    boolean equals(Object anObject) 判断两个串是否相等
    boolean equalsIgnoreCase(String anotherString) 忽略大小写判断两个串是否相等
    int indexOf(String str) 返回str在字符串第一次出现的位置
    byte[] getBytes() 将字符串串变成字节数组返回
    boolean isEmpty() 字符串是否为空
    int length() 字符串长度
    int lastIndexOf(String str) 返回str最后一次出现的位置
    String replace(CharSequence target, CharSequence replacement) 用replacement替换字符串target的字符
    String[] split(String regex) 将字符串以regex分割
    boolean startsWith(String prefix) 判断字符串是否以prefix开始
    String substring(int beginIndex) 从beginIndex开始截取字串
    String substring(int beginIndex, int endIndex) 截取beginIndex到endIndex - 1的字符串
    String toLowerCase() 字符串转小写
    char[] toCharArray() 将字符串转换乘char数组
    String toUpperCase() 字符串转大写
    String trim() 去除字符串两边空格

    数组

    数组是相同类型数据的有序集合。数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。可以通过import java.util.Arrays引入Arrays类。
    Arrays的常用方法有:

    方法名 作用
    int binarySearch(Object[] a, Object key) 从指定的数组中使用二分查找搜索指定的值,找到了则返回该值在数组中的下标,没找到则返回一个负数。
    int[] copyOf(int[] original, int newLength) 将前面newLength个元素复制到一个新数组
    int[] copyOfRange(int[] original, int from, int to) 复制from-to索引的元素
    boolean equals(int[] a, int[] a2)) 判断数组 a 与数组 a2 是否相等,当且仅当a与a2元素相同
    void fill(int[] a, int val) 将所有元素赋值为val
    void sort(short[] a) 将数组 a 进行升序排列。

    Java集合

    为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。这两个接口又包含了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。

    在 图 1 和图 2 中,黄色块为集合的接口,蓝色块为集合的实现类。
    Java集合1

    Java集合2

    表 1 Java集合接口的作用
    接口名称 作 用
    Iterator 接口 集合的输出接口,主要用于遍历输出(即迭代访问)Collection 集合中的元素,Iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实现类实现 Collection 时就必须实现 Iterator 接口。
    Collection 接口 是 List、Set 和 Queue 的父接口,是存放一组单值的最大接口。所谓的单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操作。
    Queue 接口 Queue 是 Java 提供的队列实现,有点类似于 List。
    Dueue 接口 是 Queue 的一个子接口,为双向队列。
    List 接口 是最常用的接口。是有序集合,允许有相同的元素。使用 List 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,与数组类似。
    Set 接口 不能包含重复的元素。
    Map 接口 是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value 的形式保存。

    对于 Set、List、Queue 和 Map 这 4 种集合,Java 最常用的实现类分别是 HashSet、TreeSet、ArrayList、ArrayDueue、LinkedList 和 HashMap、TreeMap 等。表 2 介绍了集合中这些常用的实现类。

    表 2 Java集合实现类的作用
    类名称 作用
    HashSet 为优化査询速度而设计的 Set。它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,实现比较简单
    TreeSet 实现了 Set 接口,是一个有序的 Set,这样就能从 Set 里面提取一个有序序列
    ArrayList 一个用数组实现的 List,能进行快速的随机访问,效率高而且实现了可变大小的数组
    ArrayDueue 是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素
    LinkedList 对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有 addFirst()、addLast()、getFirst()、getLast()、removeFirst() 和 removeLast() 等方法,能把它当成栈(Stack)或队列(Queue)来用
    HsahMap 按哈希算法来存取键对象
    TreeMap 可以对键对象进行排序

    Collection接口

    Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。

    表 3 Collection接口的常用方法
    方法名称 说明
    boolean add(E e) 向集合中添加一个元素,如果集合对象被添加操作改变了,则返回 true。E 是元素的数据类型
    boolean addAll(Collection c) 向集合中添加集合 c 中的所有元素,如果集合对象被添加操作改变了,则返回 true。
    void clear() 清除集合中的所有元素,将集合长度变为 0。
    boolean contains(Object o) 判断集合中是否存在指定元素
    boolean containsAll(Collection c) 判断集合中是否包含集合 c 中的所有元素
    boolean isEmpty() 判断集合是否为空
    Iterator iterator() 返回一个 Iterator 对象,用于遍历集合中的元素
    boolean remove(Object o) 从集合中删除一个指定元素,当集合中包含了一个或多个元素 o 时,该方法只删除第一个符合条件的元素,该方法将返回 true。
    boolean removeAll(Collection c) 从集合中删除所有在集合 c 中出现的元素(相当于把调用该方法的集合减去集合 c)。如果该操作改变了调用该方法的集合,则该方法返回 true。
    boolean retainAll(Collection c) 从集合中删除集合 c 里不包含的元素(相当于把调用该方法的集合变成该集合和集合 c 的交集),如果该操作改变了调用该方法的集合,则该方法返回 true。
    int size() 返回集合中元素的个数
    Object[] toArray() 把集合转换为一个数组,所有的集合元素变成对应的数组元素。

    List集合

    List 实现了 Collection 接口,它主要有两个常用的实现类:ArrayList 类和 LinkedList 类。
    ArrayList 类
    ArrayList 类实现了可变数组的大小,存储在内的数据称为元素。它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好。使用 ArrayList 创建的集合,允许对集合中的元素进行快速的随机访问,不过,向 ArrayList 中插入与删除元素的速度相对较慢

    ArrayList 类除了包含 Collection 接口中的所有方法之外,还包括 List 接口中提供的如表 4 所示的方法。

    表 4 ArrayList类的常用方法
    方法名称 说明
    E get(int index) 获取此集合中指定索引位置的元素,E 为集合中元素的数据类型
    int index(Object o) 返回此集合中第一次出现指定元素的索引,如果此集合不包含该元素,则返回 -1
    int lastIndexOf(Object o) 返回此集合中最后一次出现指定元素的索引,如果此集合不包含该元素,则返回 -1
    E set(int index, Eelement) 将此集合中指定索引位置的元素修改为 element 参数指定的对象。此方法返回此集合中指定索引位置的原元素
    List subList(int fromlndex, int tolndex) 返回一个新的集合,新集合中包含 fromlndex 和 tolndex 索引之间的所有元素。包含 fromlndex 处的元素,不包含 tolndex 索引处的元素

    LinkedList 类采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除元素。需要频繁向集合中插入和删除元素时,使用 LinkedList 类比 ArrayList 类效果高,但是LinkedList 类随机访问元素的速度则相对较慢。这里的随机访问是指检索集合中特定索引位置的元素。

    LinkedList 类除了包含 Collection 接口和 List 接口中的所有方法之外,还特别提供了表 2 所示的方法。

    表 5 LinkList类中的方法
    方法名称 说明
    void addLast(E e) 将指定元素添加到此集合的末尾
    void addFirst(E e) 将指定元素添加到此集合的开头
    E getFirst() 返回此集合的第一个元素
    E getLast() 返回此集合的最后一个元素
    E removeFirst() 删除此集合中的第一个元素
    E removeLast() 删除此集合中的最后一个元素

    Queue集合

    Queue 用于模拟队列这种数据结构。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。
    Queue接口里定义了如下几种方法:

    表 6 Queue接口中的方法
    方法名称 说明
    void add(Object e) 将指定元素加入此队列的尾部;
    Object element() 获取队列头部的元素,但是不删除该元素;
    boolean offer(Object e) 将指定元素加入此队列的尾部。当使用有容量限制的队列时,此方法通常比add方法更好;
    Object peek() 获取头部元素,但不删除,如果队列为空,则返回null;
    Object poll() 获取队列头部元素并删除。如果队列为空,则返回null;
    Object remove() 删除头部元素。

    Queue接口有一个PriorityQueue实现类,除此之外Queue还有一个Deque接口,Deque代表一个"双端队列",可以同时从两端来添加或删除元素。

    PriorityQueue实现类保存队列元素的顺序并不是按加入顺序,而是按队列元素的大小进行重新排序。因此当调用peek或poll方法时,并不是取出元素的最先进入的,而是取出最小元素。

    Deque接口是Queue接口的子接口,它代表一个双端队列,Deque接口里定义了一些双端队列的方法,这些方法允许从两端来操作队列元素:

    表 7Deque接口中的方法
    方法名称 说明
    void addfirst(Object o) 将指定元素插入该双端队列的开头。
    void addLast(Object o) 将置顶元素插入双端队列末尾。
    Iterator descendingIterator() 返回该双端队列对应的迭代器,该迭代器将以逆向顺序来迭代队列中的元素。
    Object getFirst() 获取但不删除双端队列的第一个元素;
    Object getLast() 获取但不删除双端队列的最后一个元素;
    boolean offerFirst(Object e) 将指定元素加入双端队列的头部;
    boolean offerLast(Object e) 将指定元素加入双端队列的尾部;
    Object peekFirst() 获取头部元素,但不删除,如果队列为空,则返回null;
    Object peekLast() 获取尾部元素,但不删除,如果队列为空,则返回null;
    Object pollFirst() 获取队列头部元素并删除。如果队列为空,则返回null;
    Object pollLast() 获取队列尾部元素并删除。如果队列为空,则返回null;
    Object pop() pop取出双端队列所表示的栈的栈顶元素。
    Object removeFirst() 删除头部元素。
    Object removeFirstOccurrence(Object o) 删除该双端队列的第一次出现的元素o;
    Object removeLast() 删除尾部元素。
    Object removeLastOccurrence(Object o) 删除该双端队列的最后一次出现的元素o;

    Deque提供了一个典型的实现类:ArrayDeque,它是一个基于数组实现的双端队列。
    创建Deque时同样可指定一个numElements参数来指定Object[]数组的长度,如果不指定,默认长度为16。
    ArrayDeque既可以当做“栈”来使用,也可以当做“队列”来使用。

    Set集合:HashSet和TreeSet类

    Set 集合中的对象不按特定的方式排序,只是简单地把对象加入集合。Set 集合中不能包含重复的对象,并且最多只允许包含一个 null 元素。
    Set 实现了 Collection 接口,它主要有两个常用的实现类:HashSet 类和 TreeSet类。

    HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时就是使用这个实现类。HashSet 是按照 Hash 算法来存储集合中的元素。因此具有很好的存取和查找性能。
    TreeSet 类同时实现了 Set 接口和 SortedSet 接口。SortedSet 接口是 Set 接口的子接口,可以实现对集合进行自然排序,因此使用 TreeSet 类实现的 Set 接口默认情况下是自然排序的,这里的自然排序指的是升序排序。TreeSet 只能对实现了 Comparable 接口的类对象进行排序,因为 Comparable 接口中有一个 compareTo(Object o) 方法用于比较两个对象的大小。例如 a.compareTo(b),如果 a 和 b 相等,则该方法返回 0;如果 a 大于 b,则该方法返回大于 0 的值;如果 a 小于 b,则该方法返回小于 0 的值。

    TreeSet 类除了实现 Collection 接口的所有方法之外,还提供了如表 2 所示的方法。

    表 8 TreeSet类的常用方法
    方法名称 说明
    E last() 返回此集合中的最后一个元素
    E first() 返回此集合中的第一个元素。其中,E 表示集合中元素的数据类型
    E poolLast() 获取并移除此集合中的最后一个元素
    E poolFirst() 获取并移除此集合中的第一个元素
    SortedSet subSet(E fromElement,E toElement) 返回一个新的集合,新集合包含原集合中 fromElement 对象与 toElement 对象之间的所有对象。包含 fromElement 对象,不包含 toElement 对象
    SortedSet headSet<E toElement〉 返回一个新的集合,新集合包含原集合中 toElement 对象之前的所有对象。不包含 toElement 对象
    SortedSet tailSet(E fromElement) 返回一个新的集合,新集合包含原集合中 fromElement 对象之后的所有对象。包含 fromElement 对象

    注意:表面上看起来这些方法很多,其实很简单。因为 TreeSet 中的元素是有序的,所以增加了访问第一个、前一个、后一个、最后一个元素的方法,并提供了 3 个从 TreeSet 中截取子 TreeSet 的方法。

    Map集合

    Map 是一种键-值对(key-value)集合,Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

    Map 接口中提供的常用方法如表 7 所示。

    表 9 Map接口的常用方法
    方法名称 说明
    boolean containsKey(Object key) 查询 Map 中是否包含指定的 key,如果包含则返回 true。
    void clear() 删除该 Map 对象中的所有 key-value 对。
    boolean containsValue(Object value) 查询 Map 中是否包含一个或多个 value,如果包含则返回 true。
    V get(Object key) 返回 Map 集合中指定键对象所对应的值。V 表示值的数据类型
    V put(K key, V value) 向 Map 集合中添加键-值对,如果当前 Map 中已有一个与该 key 相等的 key-value 对,则新的 key-value 对会覆盖原来的 key-value 对。
    void putAll(Map m) 将指定 Map 中的 key-value 对复制到本 Map 中。
    V remove(Object key) 从 Map 集合中删除 key 对应的键-值对,返回 key 对应的 value,如果该 key 不存在,则返回 null
    boolean remove(Object key, Object value) 这是 Java 8 新增的方法,删除指定 key、value 所对应的 key-value 对。如果从该 Map 中成功地删除该 key-value 对,该方法返回 true,否则返回 false。
    Set entrySet() 返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry
    Set keySet() 返回 Map 集合中所有键对象的 Set 集合
    boolean isEmpty() 查询该 Map 是否为空(即不包含任何 key-value 对),如果为空则返回 true。
    int size() 返回该 Map 里 key-value 对的个数
    Collection values() 返回该 Map 里所有 value 组成的 Collection

    Collections类

    Collections 类是 Java 提供的一个操作 Set、List 和 Map 等集合的工具类。Collections 类提供了许多操作集合的静态方法,借助这些静态方法可以实现集合元素的排序、查找替换和复制等操作。下面介绍 Collections 类中操作集合的常用方法。

    Collections 提供了如下方法用于对 List 集合元素进行排序。
    void reverse(List list):对指定 List 集合元素进行逆向排序。
    void shuffle(List list):对 List 集合元素进行随机排序(shuffle 方法模拟了“洗牌”动作)。
    void sort(List list):根据元素的自然顺序对指定 List 集合的元素按升序进行排序。
    void sort(List list, Comparator c):根据指定 Comparator 产生的顺序对 List 集合元素进行排序。
    void swap(List list, int i, int j):将指定 List 集合中的 i 处元素和 j 处元素进行交换。
    void rotate(List list, int distance):当 distance 为正数时,将 list 集合的后 distance 个元素“整体”移到前面;当 distance 为负数时,将 list 集合的前 distance 个元素“整体”移到后面。该方法不会改变集合的长度。

    Collections 还提供了如下常用的用于查找、替换集合元素的方法。
    int binarySearch(List list, Object key):使用二分搜索法搜索指定的 List 集合,以获得指定对象在 List 集合中的索引。如果要使该方法可以正常工作,则必须保证 List 中的元素已经处于有序状态。
    Object max(Collection coll):根据元素的自然顺序,返回给定集合中的最大元素。
    Object max(Collection coll, Comparator comp):根据 Comparator 指定的顺序,返回给定集合中的最大元素。
    Object min(Collection coll):根据元素的自然顺序,返回给定集合中的最小元素。
    Object min(Collection coll, Comparator comp):根据 Comparator 指定的顺序,返回给定集合中的最小元素。
    void fill(List list, Object obj):使用指定元素 obj 替换指定 List 集合中的所有元素。
    int frequency(Collection c, Object o):返回指定集合中指定元素的出现次数。
    int indexOfSubList(List source, List target):返回子 List 对象在父 List 对象中第一次出现的位置索引;如果父 List 中没有出现这样的子 List,则返回 -1。
    int lastIndexOfSubList(List source, List target):返回子 List 对象在父 List 对象中最后一次出现的位置索引;如果父 List 中没有岀现这样的子 List,则返回 -1。
    boolean replaceAll(List list, Object oldVal, Object newVal):使用一个新值 newVal 替换 List 对象的所有旧值 oldVal。

    Random类

    Random类是java.until下的一个根据随机算法的起源数字进行一些变化,从而得到随机数字的方法。虽然Random类产生的数字是随机的,但在相同种子数(seed)下的相同次数产生的随机数是相同的(伪随机)。

    常用方法:
    new Random().nextInt(x) 返回值为整数,范围在0~x(不包含X)内的任意整数
    new Random().nextInt(x,y) 返回值为整数,范围在x~y(不包含y)内的任意整数
    new Random().nextLong() 返回值为长整型,范围是long类型的范围

    参考:
    集合(Collection、Map)

  • 相关阅读:
    【repost】JavaScript 运行机制详解:再谈Event Loop
    【repost】学JS必看-JavaScript数据结构深度剖析
    【repost】JavaScript 基本语法
    【repost】前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
    【repost】jQuery笔记总结
    【repost】javascript:;与javascript:void(0)使用介绍
    jQuery对象与DOM对象之间的转换方法
    EBS_DBA_问题:主键insert引起的死锁
    BI_开发_问题:ORA-26002: Table DWH.W_XACT_TYPE_D has index defined upon it.
    BI_开发_问题:到target库中的字符为?
  • 原文地址:https://www.cnblogs.com/hellojamest/p/16379777.html
Copyright © 2020-2023  润新知