1、Object

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

class Book{                                           class Book extends 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

如何获取类的字节码文件对象?

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

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

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

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

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

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

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

2、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():是否为空
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]范围

3》转换功能
byte[] getBytes():将字符串转成字节数组
char[] toCharArray():将字符串转成字符数组
static valueOf(char[] chs):将char[]转成字符串
static valueOf(int num):将int类型转成字符串
static valueOf(Object obj):将任意类型转成字符串
toLowerCase():转成小写
toUpcase():转成大写
concat(String str):字符连接

4》其他功能
replace(char old,char new):将old字符替换成new字符
replace(String old,String new):将old字符串替换成new字符串
trim():去除两边空格
int compareTo(String s):字典比较,如果前面值小于后面值返回负数,否则返回正数,先比较第一个元素,如果相等再比较第二个元素...返回元素之间的差值;如果比较字符串有包含关系,返回的值是它们长度的差值
int compareToIgnoreCase(String s):忽略大小写字典比较

String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
String[] split(String regex):  根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit): 根据匹配给定的正则表达式来拆分此字符串。

/** 字符串做连接操作* 如果是两个变量进行连接,先开辟空间,再连接* 如果是两个常量进行连接,先连接,获取连接结构值。然后在常量池里面查找有没有这个结果值,如果有,直接给地址值;没有,开辟空间*/public class StringTest02 {public static void main(String[] args) {String s1 = "hello";String s2 = "world";String s3 = "helloworld";System.out.println(s3 == s1+s2);                  //falseSystem.out.println(s3.equals(s1+s2));             //trueSystem.out.println(s3 == "hello"+"world");        //trueSystem.out.println(s3.equals("hello"+"world"));   //true}
}

编码表
编码表:由现实世界的字符和对应的数值组成的一张表
常见的有:
1)ASCII码:最高为是符号为,其他是数值位
2)ISO-8859-1:拉丁码表
3)BG2312:中文编码表
4)GBK:GB2312的升级版,1个汉字对应2个字节
5)GB18030:GBK的升级版
6)BIG-5:中文繁体编码表,俗称"大5码"
7)Unicode:国际标注码。所有字符都有两个字节表示
    Java默认使用该编码表
8)UTF-8:万国码,一个汉字对应3个字节
tips:所有编码表都兼容ASCII码表

String中与字符集相关的方法
String(byte[] by,String charset):通过指定的字符集,将指定的字节数组转成字符串(解码)
byte[] getBytes(String charset):通过指定的字符集,将字符串转成字节数组(编码)

正则表达式
负责字符串的匹配处理(一般用于校验字符串格式)
规则
1)字符
    x:x字符,a表a字符
    \\:反斜线字符
    \n:换行符
    \r:回车符
2)字符类
    [abc]:表示a、b、c中的一个字符
    [^abc]:表示除了a、b、c之外的任意一个字符
    [a-zA-Z]:表示a~z或A~Z中的一个字符
    [0-9]:表示数字
3)预定义字符类
    .:表示任意字符
     \.:表示'.'字符
    \d:表示数字字符,[0-9]
    \w:表示单词字符,[a-zA-Z_0-9]
4)边界匹配器
    ^:表示行的开头
    $:表示行的结尾
    \b:表示单词的边界
5)数量词
    ?:表示0次或者1次
    *:表示0次或者多次
    +:表示1次或者多次
    {n}:表示n次
    {n,}:表示至少n次
    {n,m}:n~m次

3、StringBuilder类

线程不安全的可变字符序列
1)构造方法
    StringBuilder():以默认容量创建空的StringBuilder对象
    StringBuilder(int capacity):以指定容量创建空的StringBuilder对象
    StringBuilder(String str):以指定的字符串创建StringBuilder对象
2)成员方法
获取功能
int capacity():获取容量
int length():获取长度
添加功能
append(int value):追加。可以追加多种类型
insert(int offset,String s):在指定的位置插入指定数据
删除功能
deleteCharAt(int index):删除指定索引处的元素
delete(int start,int end):删除[start,start-1]范围内的元素
替换功能
replace(int start,int end,String s):将[start,end-1]范围内的元素替换成指定字符串
反转功能
reverse():元素反转
截取功能
String subString(int start):截取指定位置一直到末尾
String subString(int start,int end):截取[start,end-1]范围

String、StringBuilder和StringBuffer的区别?
String内容不可改变
StringBuilder和StringBuffer内容可变
StringBuilder是线程不安全的,不同步,效率高
StringBuffer是线程安全的,同步,效率低

4、Scanner

1)构造方法
      Scanner(InputStream is)
      构造一个文本扫描器,它生成的值是从指定的值输入流扫描的
      System.in 是一个标准的输入流,属于InputStream
2)成员方法
      boolean hasNext():是否有下一个数,有true,没有false
      String next():获取下个数
      int nextInt():获取下个int数据
      String nextLine():获取一行数据

5、Math类

成员方法
abs(int a):绝对值
ceil(double d):向上取整
floor(double d):向下取整
max(int a,int b):最大值
pow(double a,double b):a的b次幂
random():随机数[0.0,1.0]
round(float f):四舍五入
sqrt(double d):算术平方根

6、Random类

1)构造方法
Random():以当前时间毫秒值作为种子,创建Random对象
Random(long seed):以指定种子创建Random对象
2)成员方法
nextInt():生成1个int类型范围的随机数
nextInt(int n):产生1个[0,n-1]范围内的随机数

生成0~n之间的数
①(int)Math.random()*(n+1)
②Random r  = new Random();
r.nextInt(m)表示生成[0,m-1]之间的随机数,也就是说random.nextInt(m+1),将生成[0,m]之间的随机整数。
r.nextInt(n+1)
生成n~m之间的随机数
①n+(int)(Math.random()*(m+1-n));
②Random r = new Random();
r.nextInt(m+1-n)+n;

7、Date类

表示特定的瞬间,精确到毫秒值
1)构造方法
Date():以当前时间毫秒值创建Date对象
Date(long time):以指定的毫秒值创建Date对象
2)成员方法
long getTime():获取Date对象的毫秒值
setTime(long time):设置Data对象的毫秒值

8、DateFormat

它是一个抽象类,用来格式化或者解析日期
格式化:Date————》String
解析:String————》Date

getDateInstance(int style,Locale loc):获取日期格式器,该格式器具有给定的语言环境和给定的格式化风格
String format(Date date):格式化
Date parse(String time):解析

9、SimpleDateFormat

它是DateFormat的子类
1)构造方法
SimpleDateFormat():以默认模式创建对象
SimpleDateFormat(String pattern):以指定模式创建对象

常用模式
yyyy:年     MM:月    dd:日
HH:时    mm:分    ss:秒

2)常成员方法
String format(Date date):格式化
Date parse(String time):解析

10、Calendar类

日历类,用于获取或者操作日历字段(年月日)
该类是一个抽象类,不可以实例化
成员方法
static Calender getInstance():以默认时区和语言创建日历
int get(int field):获取指定字段的日历值
set(int field,int value):给指定的日历字段设置指定的值
set(int year,int month,int date):设置年月日
Date getTime():获取日历对象的日期
setTime(Date d):设置日历对象的日期
add(int field,int amount):对指定的日历字段添加指定的值

11、System类

没有构造方法
成员方法
gc():运行垃圾回收处理机制(系统会在某个不确定的时间调用该方法)
会调用finalize(),进行垃圾回收

exit(int status):退出JVM,0表示非异常退出
currentTimeMills():获取当前时间毫秒值
arrayCopy(Object[] srcArr,int srcPos,Object[] desArr,int destPos,int len):数组复制

12、BigInteger类

1)构造方法
BigInteger(String s):通过字符串创建BigInteger对象
2)成员方法
add(BigInteger bi):+
subtract(BigInteger bi):-
multiply(BigInteger bi):*
divide(BigInteger bi):/

13、BigDecimal类

用于解决浮点型运算精度损失的问题
1)构造方法
BigDecimal(String s):通过字符创建BigDecimal对象
2)成员方法
add(BigDecimal bi):+
subtract(BigDecimal bi):-
multiply(BigDecimal bi):*
divide(BigDecimal bi):/

Java中常见常用的类相关推荐

  1. java中常见的包类接口_Java中一些常用的类,包,接口

    类:1.java.lang.Object 2.java.lang.String 3.java.lang.System 4.java.io.file 5.java.io.FileInputStream ...

  2. java中常见的异常类

    1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...

  3. 【Java】Java中的常用工具类(排名前 16)

    文章目录 前言 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache.commons.lang. ...

  4. Java中常见的final类

    final为Java中常用的关键字,被final修饰的类不可被继承 下面列举几个Java包中的final类(): 1.java.lang包(列举所有final类) 包装类:Boolean,Charac ...

  5. java中的常用日期类_Java中的常用日期类说明

    日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...

  6. 谷歌的json解析器Gson在Android/Java中的常用工具类

    gson解析器,可实现子类和json字符串之间互转 package com.hulk.ues.core;import android.text.TextUtils; import android.ut ...

  7. Java中Cookie常用操作类(Spring中操作Cookie)

    说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...

  8. final class java_Java 中常见的 final 类

    Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Com ...

  9. JAVA基础(12.Java中的常用类String)

    目录 1.前言 2.日期(时间)相关类 2.1 日期类的应用场景 2.1.1Java中的日期相关的几个类 3. Java中的常用类学习方式 3.1 什么是常用类?为什么要学习? 3.2 怎么使用Jav ...

  10. java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...

    [单选题]在Word 2010的编辑状态,对当前文档中的文字进行"字数统计"操作,应当使用的菜单是( ) [单选题]客运员领带统一,领带夹夹在衬衣的( )钮扣之间. [单选题]文件 ...

最新文章

  1. SAP 创建启用了ARM功能的采购订单,报错 -Shipping processing is not selected to supplier 100057 in purchase org. 0002
  2. css less 不要作用到子对象_CSS-预处理语言Sass、Less简述
  3. 《在你身边,为你设计》-哪位知道下载、在线阅读地址啊?
  4. 转载 Spark性能优化指南——基础篇
  5. 用shell查看关键数据
  6. java future_Java并发编程之异步Future机制的原理和实现
  7. spring3.0 aop 获取 ibatis 执行的语句_Mybatis 源码分析:执行器
  8. 配置项setOption -- title
  9. Android AlertDialog 实现对话框 警告对话框、列表对话框、自定义对话框
  10. HDFS中的NameNode和DataNode
  11. arduino串口绘图_写了一个串口实时曲线绘制软件,分享给大家。不好轻拍
  12. 共享办公室租赁,突出市场重围
  13. ROSE HA,想说爱你不容易——为ROSE HA配置IP资源的LocalFailover
  14. unity资源商店出现“抱歉,此链接不再有效”怎么办
  15. (一)数字图像处理基础知识点
  16. 如何将 CHM 文件翻译成中文
  17. 苹果摄像头黑屏_报道称苹果已将折叠 iPhone 送往测试/苹果官网上线送份好礼,送到心里页面/iPhone 12 mini 拆解报告公布...
  18. 使用 LinuxGSM 搭建饥荒联机服务器(带洞穴)
  19. java 页眉页脚_Java 添加Excel页眉页脚
  20. 寄存器、缓存、内存、硬盘、存储器的理解

热门文章

  1. 如何提高射频信号发生器的性能
  2. Java小白-9.Java多线程
  3. 【Quartz】 JobListener、Triggerlistener、SchedulerListener介绍与使用
  4. 真假蜘蛛识别php,真假百度蜘蛛IP识别终极技巧:一学就会!
  5. Unity 将3D物体的世界坐标转换为对应的屏幕坐标
  6. 计算机组成原理常见英文缩写
  7. UE4中文汉字字体制作
  8. Android 开发 DNK开发将.c文件打包成os
  9. 系统操作手册_2020年辽宁高考志愿填报空表及系统操作手册!考生及家长请收好...
  10. 【分析】云硬盘的Burst功能