Java常用类

文章目录

    • 1、Object
    • 2、String
      • 1)构造方法
      • 2)成员方法
      • 3)编码表
      • 4)正则表达式
    • 3、StringBuilder类
      • 1)构造方法
      • 2)成员方法
      • 3)String、StringBuilder和StringBuffer的区别/li>
    • 4、Scanner
      • 1)构造方法
      • 2)成员方法
    • 5、Math类
      • 成员方法
    • 6、Random类
      • 1)构造方法
      • 2)成员方法
    • 7、Date类
      • 1)构造方法
      • 2)成员方法
    • 8、DateFormat
    • 9、SimpleDateFormat
      • 1)构造方法
      • 2)常成员方法
    • 10、Calendar类
    • 11、System类
      • 成员方法
    • 12、BigInteger类
      • 1)构造方法创建BigInteger对象
      • 2)静态方法创建BigInteger对象
      • 3)细节
      • 4)成员方法
    • 13、BigDecimal类
      • 1)构造方法创建BigDecimal对象
      • 2)静态方法创建BigDecimal对象
      • 3)细节
      • 4)成员方法
    • 14、包装类
      • Integer类的构造方法(已过时)
      • 经典题目:
      • 自动装箱和自动拆箱
    • 15、enum枚举类型

1、Object

Object类是所有类的父类,也就是说任何一个类在定义时如果没有明确地继承一个父类,那它就是Object类的子类,也就是说以下两种类定义的最终效果是完全相同的。

Object类提供无参构造方法 ,之所以提供这样的无参构造,是因为在子类对象实例化时都会默认调用父类中的无参构造方法,这样在定义类时即使没有明确定义父类为Object,读者也不会感觉代码的强制性要求。

方法 说明
Object clone() 创建与该对象的类相同的新对象
boolean equals(Object) 比较两个对象是否相等。默认比较的是地址值。
void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,对象的圾回收器调用该方法
Class getClass() 返回一个对象运行时的实例类(.class文件)
int hashCode() 返回该对象的散列码值
void notify() 激活等待在该对象的监视器上的一个线程
void notifyAll() 激活等待在该对象的监视器上的全部线程
String toString() 返回该对象的字符串表示,默认返回运行时类名+@+对象的hashCode的16进制数
void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待

注意:

  • 如果两个对象的哈希码值不同,那这两个对象一定不等;
  • 如果两个对象的哈希码值相同,不能确保这两个对象一定相等。
  • 克隆对象对应的类需要实现Cloneable接口,否则会 错:java.lang.CloneNotSupportedException

如何获取类的字节码文件对象/strong>

  1. 类名.class 说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象
  2. Class.forName(“类名字符串”) (注:类名字符串是包名+类名) 说明:装入类,并做类的静态初始化,返回Class的对象
  3. 实例对象.getClass() 说明:对类进行静态初始化、非静态初始化; 返回引用o运行时真正所指的对象(因为:子对象的引用可能会赋给父对象的引用变量中) 所属的类的Class的对象

常覆写Object类的3个方法:toString(),equals(Object obj),hashCode()

为什么notify(), wait()等函数定义在Object中,而不是Thread中/strong>

Object中的wait(), notify()等函数,和synchronized一样,会对“对象的同步锁”进行操作。

wait() 会使“当前线程”等待,因为线程进入等待状态,所以线程应该释放它锁持有的“同步锁”,否则其它线程获取不到该“同步锁”而无法运行!
OK,线程调用wait()之后,会释放它锁持有的“同步锁”;而且,根据前面的介绍,我们知道:等待线程可以被notify()或notifyAll()唤醒。现在,请思考一个问题:notify()是依据什么唤醒等待线程的者说,wait()等待线程和notify()之间是通过什么关联起来的案是:依据“对象的同步锁”。

负责唤醒等待线程的那个线程(我们称为“唤醒线程”),它只有在获取“该对象的同步锁”(这里的同步锁必须和等待线程的同步锁是同一个),并且调用notify()或notifyAll()方法之后,才能唤醒等待线程。虽然,等待线程被唤醒;但是,它不能立刻执行,因为唤醒线程还持有“该对象的同步锁”。必须等到唤醒线程释放了“对象的同步锁”之后,等待线程才能获取到“对象的同步锁”进而继续运行。

总之,notify(), wait()依赖于“同步锁”,而“同步锁”是对象锁持有,并且每个对象有且仅有一个!这就是为什么notify(), wait()等函数定义在Object类,而不是Thread类中的原因。

2、String

表示的是字符串,字符串是常量(值定义了之后,不可修改)

字符串可以看成是多个字符的连接

String 类是,也就是String对象声明后,将不可修改

1)构造方法

String(): 创建一个空的字符串

String(byte[] bys):通过字节数组创建字符串

String(char[] chs):通过字符数组创建字符串

String(byte[] bys,int offset,int length):通过字节数组一部分创建字符串

String(char[] chs,int offset,int length):通过字符数组一部分创建字符串

String(String original):通过字符串常量值创建字符串

2)成员方法

1》判断功能

equals(Object obj): 比较两个字符串是否相等

equalsIngnoreCase(Object obj):忽略大小写比较两个字符串是否相等

contains(String str): 是否包含指定字符串

startsWith(String str): 是否以指定的字符串开头

endWith(String str): 是否以指定的字符串结尾

isEmpty(): 是否为空,当且仅当length()为0时返回true

matches(String regex): 判断字符串是否匹配给定的正则表达式。

2》获取功能
length(): 获取长度

charAt(int index): 获取指定索引位置处的字符

indexOf(int ch): 获取指定字符第一次出现的索引值(从0开始)

indexOf(int ch,int fromIndex): 获取从指定索引位置开始,获取指定字符第一次出现的索引值
indexOf(String s): 获取指定字符串第一次出现的索引值

indexOf(String s,int fromIndex): 获取从指定索引位置开始,获取指定字符串第一次出现的索引值

lastIndexOf(int ch): 获取指定字符最后一次出现的索引值

substring(int start): 从指定位置开始一直截取到末尾

substring(int start,int end): 截取[start,end-1]范围

public class StringTest03 {    public static void main(String[] args) {// 1.char charAt(int index);String s1 = "我是王勇!";char c1 = s1.charAt(2);System.out.println(c1);   // 王// 2.int indexOf(String str);System.out.println("ahsjahdi".indexOf("ah"));   // 0// 3.int indexOf(String str,int f

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月16日
下一篇 2022年9月16日

相关推荐