一文了解Java中有哪些常用类

举报
lwq1228 发表于 2021/10/31 10:17:11 2021/10/31
【摘要】 第一章 字符串类的分析和使用 1、String类的分析String类的底层使用char的数组保存数据。String类是一个final类,不允许被继承。String类是一个不可变类,该类的对象生成后,内容不会发生变化。String类中的所有返回String类型对象的成员方法都是返回一个新的String对象。 2、String类的比较String类重写了equals方法,用来比较两个字符串的内...

第一章 字符串类的分析和使用

1、String类的分析

  • String类的底层使用char的数组保存数据。String类是一个final类,不允许被继承。
  • String类是一个不可变类,该类的对象生成后,内容不会发生变化。
  • String类中的所有返回String类型对象的成员方法都是返回一个新的String对象。

2、String类的比较

  • String类重写了equals方法,用来比较两个字符串的内容是否相同。
  • String类的equals方法和==做区分,==比较的是两个字符串对象的地址。

3、字符串类实例化机制

Java中string类型的创建有以下两种方式∶

  • 创建的时候,JVM会先在字符串常量池中去查找是否存在该字符串,如果存在直接返回该字符串对象的地址,否则会在常量池中创建该字符串对象并返回地址。
  • 创建的时候,也会先查找常量池中是否存在该字符串,如果存在就会在堆里面复制一份这个字符串对象,然后把堆里面的对象地址返回给变量;不存在的话就会在堆中和常量池中各创建一个对象,并返回堆中对象的地址。

4、字符串的维护和参数传递

  • String类的+和concat都可以将2个字符串拼接到一块,形成新的字符串。
  • String的+还可以将字符串与非字符串拼接在一起,成为新的字符串,concat不可以与非字符串拼接在一起。

5、字符串的常用API方法String类的常用方法:

  • equals方法用来比较两个字符串内容是否相同。
  • charAt方法―返回指定索引处的字符。
  • contains方法﹑判断字符串中是否包含另一个字符串。
  • indexOf方法―返回第一次出现某个字符串的位置。
  • isEmpty方法―判断字符串是否是空字符串。
  • split方法―将字符串分割,返回一个字符串数组。
  • trim方法―返回去掉字符串开头和结尾的空格后的字符串。
  • toCharArray方法―将字符串转换为字符数组。
  • replace方法――替换原字符串中的某个字符或子字符串,全部替换。
  • length方法―返回字符串的长度。

6、StringBuffer类

  • StringBuffer又称为可变字符序列,它是一个类似于String的字符串缓冲区,可以改变该序列的长度和内容。

  • StringBuffer是同步安全的。

7、StringBuilder类

  • StringBuilder类也是字符串缓冲区,非同步安全。

  • String、StringBuffer、StringBuilder的区别:

    • String是内容不可变的。
    • StringBuffer、StringBuilder都是内容可变的。
    • StringBuffer是同步的,数据安全,效率低。
    • StringBuilder是不同步的,数据不安全,效率高。

第二章 Java常用类

1、System类

  • System类代表系统,系统级的很多属性和控制方法都放置在该类的内部,该类位于java.lang包。
  • 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员方法和成员变量都是static的,所以可以通过类名呼叫。
  • System中包含了in、out和err三个成员变量,分别代表标准输入流、标准输出流和标准错误输出流。
  • System中常用的方法:
    • System.arraycopy(a,b,c,d,e):其中a是被复制的数组,b是复制的起始位置,c是复制到的数组,d是复制到这个数组的起始位置,e是复制到这个数组的结束位置。
    • System.currentTimeMillis():返回毫秒数,这个就比较简单了,和Date类中的getTime方法一样。
    • getProperty():获取系统属性。

2、CharSequence类

  • CharSequence是一个接口,表示char值的一个可读序列,此接口对许多不同种类的char序列提供统一的自读访问。
  • CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而string的值是只读序列。

3、Runtime类

  • Runtime类封装了运行时的环境,每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。
  • Runtime类通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少。

4、Cleaner类

  • Cleaner负责清理对象,替代finialize()方法,Cleaner是在JDK1.9之后才提供的一个对象清理操作。

5、深度克隆

  • 克隆和现实生活中的克隆一样,复制一个一模一样的对象出来。
  • clone()这个方法是从Object继承下来的,一个对象要实现克隆,需要实现一个叫做Cloneable的接口,实现了这个接口就能实现克隆操作。
  • 克隆分深度克隆和浅度克隆。
  • 深度克隆:被克隆得到的对象基本类型的值修改了.原对象的值改变。
  • 深度克隆:复制对象本身的同时,也复制对象包含的引用指向的对象,即修改被克隆对象的任何属性都不会影响到克隆出来的对象。

6、浅度克隆

  • 浅度克隆:被克隆得到的对象基本类型的值修改了,原对象的值不会改变。
  • 浅度克隆:复制对象时仅仅复制对象本身,包括基本属性,但该对象的属性引用其他对象时,该引用对象不会被复制,即拷贝出来的对象与被拷贝出来的对象中的属性引用的对象是同一个。

7、Math数学类

  • Math类中包含基本的数字操作,如指数、对数、平方根和三角函数。
  • Math类中包含E和PI两个静态常量,以及进行科学计算的类方法,可以直接通过类名调用。
    • public static final Double E = 2.7182818284590452354。
    • public static final Double Pl= 3.14159265358979323846。
    • public static long abs(double x):传回x的绝对值,x也可int long float。
    • public static long sin(double x):传回x径度的正弦函数值。
    • public static long cos(double x):传回x径度的余弦函数值。
    • public static long tan(double x):传回x径度的正切函数值。
    • public static long asin(double x):传回x值的反正弦函数值。
    • public static long acos(double x):传回x值的反余弦函数值。
    • public static long atan(double x):传回x值的反正切函数值。
    • public static long atan2(double x, double y):传回极坐标的0值。
    • public static long floor(double x):传回不大于x的最大整数值。

8、随机数类

  • Random类用于产生随机数。
  • Random.nextlnt(int bound):随机生成[0,bound)之间的整数。注意是左开右闭区间,可能取到0,不能取到bound的值。

9、科学精确计算类

  • BigDecimal是一个不变的、任意精度的有符号的十进制数对象。
  • BigDecimal(double)是把一个double型十进制数构造为一个BigDecimal实例。
  • BigDecimal(String)是把一个以string表示的十进制数构造为BigDecimal实例。
  • BigDecimal(String)构造方法是被优先推荐使用的。

10、日期处理类

  • Date类和Calendar类都是关于日期的类,都在java.util包中。
  • java.util.Date类的对象用来表示时间和日期,用得最多的是获取系统当前日期和时间,精确到毫秒。
  • java.util.Calendar类是抽象类,无法实例化。
  • Java8新增java.time用于日期、时间处理。
  • Clock类:获取指定时区的日期时间。
  • Duration类:一段持续的时间。
  • lnstant类:具体时刻,精确到纳秒。
  • LocalDate类:不带时区的时间。

11、UUID类

  • UUID全称: Universally Unique ldentifier缩写,即通用唯一识别码。
  • UUID产生的目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定,每个人都可以创建不与其他人冲突的UUID。

12、Hutool类

  • Hutool是一个小而全的Java工具类库,使Java拥有函数式语言般的优雅,让Java语言也可以简单易用。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。