常用类String&compareTo&Arrays...

Posted by lily on April 7, 2023

string相关类

  • String
  • StringBuilder:线程安全
    • deleteCharAt() 删除指定位置字符
  • StringBuffer:线程不安全,效率高

    String底层实现

  • final char[] a;底层实际上是不可变的char数组。
  • Serialized Form 该类型可序列化,可将string序列化为一串数字,用于网络传输等

    string不可变性

    在内存中一旦创建,不会在原有的基础上改变,若要把字符串改变,会在常量池中新创建一个新的字符串常量;

  • 1.8之时方法区的常量池
  • 字符串的字面量赋值和构造器新建
  • 常量池没有重复的常量
  • 有变量参与的赋值是从堆空间中获取变量,因此整体变量会指向堆空间中而不是指向常量池
    //字面量赋值
    String s1 = "helloWorld"; /* 指向常量池*/
    //构造器赋值/初始化
    String s2 = new String("helloWorld"); /* 指向堆空间*/
    //有变量参与的赋值
    String s3 = "hello"; 
    String s4 = "World";
    String s5 = s3 + s4; /* 堆空间 */
    

    String类

    常用方法
    String.copyValueOf(obj); —>可迭代对象,赋值为string类型并返回该string

| charAt (int index)
返回 char指定索引处的值。
substring (int beginIndex, int endIndex)
返回一个字符串,该字符串是此字符串的子字符串。
toCharArray () —> char[]
将此字符串转换为新的字符数组。
compareTo (String anotherString)
按字典顺序比较两个字符串。
valueOf (long l)
返回 long参数的字符串 long形式。
copyValueOf (char[] data)
相当于 valueOf(char[]) 。 返回char数组参数的特定子阵列的字符串char形式
compareToIgnoreCase (String str)
按字典顺序比较两个字符串,忽略…差异。
contains (CharSequence s)
当且仅当此字符串包含指定的char值序列时才返回true。
format (String format, Object … args)
使用指定的格式字符串和参数返回格式化的字符串。
replace (char oldChar, char newChar)
返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。 | | — |

StringBuilder

  • 底层初始长度为16的可变的 char[] char型数组,当要添加新的字符时会根据需要进行”扩容”,生成另一个长度为原来的1.5倍的新数组,若此新数组长度新加入字符长度
  • sb.deleteCharAt(index)
    StringBuilder sb = new StringBuilder("123456");
    sb.deleteCharAt(2);
    System.out.println(sb);
    //sout--> 12456
    

    StringBuilder

  • 此类设计用作简易替换为StringBuffer在正在使用由单个线程字符串缓冲区的地方
  • StringBuilder的主要StringBuilder是append和insert方法,它们是重载的,以便接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入字符串构建器。append方法始终在构建器的末尾添加这些字符;insert方法将insert添加到指定点。
  • StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。 | StringBuffer()
    构造一个没有字符的字符串缓冲区,初始容量为16个字符。 | | — |

字符串列表

List CBTs = new ArrayList<>();
字符串列表会自动把加入的字符或是其他obj 转换为""字符串类型

Arrays工具类

Math工具类

Math类里的常用静态方法

  • Math.abs()
  • min()
  • max()

    日期相关类

  • Date
  • Localdate

System、Bigdecimal、BigIntege类

object类

equals方法:obj类中的该方法原本是比较两对象的地址值是否相等,即为用” == “ 进行判断;但所有的类可以按照重写规则重写该方法,比较两对象的实际内容是否相等/某属性是否相等。

Collections类

Arrays类

Comparable接口

Arrays.sort(list, Compartor c)—> 可以根据设计的compartor定制排序
/*
Compares this object with the specified object for order.  Returns a
* negative integer, zero, or a positive integer as this object is less
* than, equal to, or greater than the specified object.

负数 == 小于, 零 ==等于, 正数 ==大于

compareTo 和 compare方法

Integer.compare(int 1, int 2);
string1.compareTo(String 2);

java比较整数类型

二维数组position
Arrays.sort(points, (a, b)->Integer.compare(a[0], b[0]));
Arrays.sort(points, (a, b)->a[0]-b[0]);
当比较的数==正数最小数或最大数边缘时,Integer自带的compare
方法能够判断出大小
而直接进行相减则会出现整数溢出错误,导致运算结果出错