java的常用API

1.说明

​ API(应用程序接口):

​ 数据接口:获取数据(前后端分离),数据可视化

​ 功能接口:手机短信接口,邮箱发送接口,支付接口

​ java中的常用API指常用的一些类的方法。

2.API

1-object

​ 是Java中所有类的直接或间接父类。

常用方法:

​ //是一个本地方法(native),将当前对象进行克隆,被克隆对象所在的类必须实现Cloneable接口。
​ 克隆,相当于复制。基于已经存在的对象克隆出一个属性相同的对象来。

​ object clone( );

​ 当前类所创建的对象,如果没有引用时,被判定为垃圾对象,但是该对象不是被立即回收。
​ 而是达到了垃圾回收器的条件时触发,在触发对象回收时,会调用该方法,完成资源的清理。
​ 这个概念有点类似于析构(当对象没有引用时,会自动调用方法,完成对象所持有资源的释放,并清理对象)但是java中的finalize,不等同于析构。java没有析构的概念。
​ System.gc(); 唤醒垃圾回收器,清理垃圾对象。但是垃圾回收器不一定会立即执行。
​ 如果在对象不被使用时,释放对象所占用资源,应该自己编写相应的代码实现。

​ void finalize( );

​ class<?> getClass( ); //获取对象的实际类型

​ 可以认为是唯一的—同一个对象的哈希码一致,不同对象的哈希码不同。
​ —取值大概是43亿个;哈希码的取值是散列的—随机分布在这43亿个取值范围中

​ hashCode( )

​ //用于比较两个对象的地址是否相同,通常情况下,equals方法需要重写
​ 实现当两个引用地址不同,但是属性相同时,也可以判定为相等。

​ boolean equals(object obj);

​ instanceof 关键字,用于判断某个对象是否为指定的类型:

​ obj instanceof ClassName

​ null 关键字:表示当前的引用地址为空,也作为对象中引用类型属性的默认值。

​ null可以用于比较是否相等,但不能做其他任何操作否则会抛空指针异常

​ 如果将一个对象作为字符串打印输出,则该方法的返回值就作为要打印的内容,一般作为代码调试。
​ String toString()

​ 其他方法:与线程通信相关方法

​ notify( ) //唤醒线程池中的任意一个线程

​ notifyAll( ) //唤醒所有线程

​ wait (long timeout) //线程等待(挂起),并设置超时时间

​ wait( )

2-String

定义:

​ 表示字符串,并且是一个最终(final)类。

​ 字符串拼接问题:
​ 在使用“+”对字符串拼接时,实际上使用的是new StringBuilder().append().
​ 如果遇到需要循环拼接字符串的场景,则应该使用StringBuilder(),节约内存空间.

​ 在字符串拼接的应用中有两个类都可以处理:
​ StringBuilder:(默认),存在多线程并发安全问题,线程不安全类。并发效率高
​ StringBuffer: 加入了关键字synchronized,保证线程安全。并发效率相比StringBuilder较低。

​ 字符串String实际上是char value[](字符数组)

常用方法:
​ charAt(int index)—获取指定位置上的字符;如果指定的下标不存在,则会出现StringIndexOutOfBoundsException

String  str = "  helloworld    ";
        /**
         * char
         * 返回指定索引处的char值
         * 从0处开始
         */
        char ch = str.charAt(11);
        System.out.println(ch);

​ length()—获取字符串的长度

 String str = "hello,world";
System.out.println(str.length());

​ toCharArray()—将字符串转化为一个字符数组

​ compareTo(String str)—按字典顺序(实际上就是按照从小到大的顺序)来比较两个字符串
​ concat(String str)—拼接两个字符串,返回一个新字符串

 /**
         * concat
         * 将指定字符串链接到此字符串结尾
         * 不会修改原始字符串
         * 也可以用于连接字符串和其他基本类型(int、double)
         */
        String str = "hello,world";
        String str1 = "离开";
        String str2 = str.concat(str1);
        System.out.println(str2);

​ getBytes(String charsetName)—将字符串按照指定的编码转化为字节数组

/**
         * getBytes
         * 
         */
        String tep = "hello 世界";
        //使用UTF-8字符编码方式进行转换
           byte[] bytesUTF8 = tep.getBytes();
            System.out.println(bytesUTF8);

​ equals(Object o)—比较两个字符串是否一致。比较的是两个字符串的实际值

​ endsWith(String suffix)—判断是否是指定的结尾

​ startsWith(String suffix)—判断是否是指定的开头
​ contains(String str) —判断字符串中是否包含str。
​ hashCode()—获取对象的哈希码—注意,同一个字符串的哈希码在任何条件下都是一样的。
​ String(char[] cs, int index, int offset)—表示从字符数组cs的第index位开始,将offset个元素转化为字符串
​ indexOf(int ch, int index)—表示从字符串的第index位开始,向后寻找字符ch第一次出现的位置;如果找不到,则返回-1

3-正则表达式

​ 定义:

​ 案列:

​ 常用元字符:

​ . //表示匹配除换行符以外的任意字符

​ * //匹配前一个字符出现0次或多次

​ + //匹配前一个字符出现至少一次

​ {n} //匹配前一个字符出现n次

​ {n,m} //匹配前一个字符出现>=n次且 <=m次 {8,16}

​ {n,} //匹配前一个字符至少出现n次

​ ^ //匹配开始位置,例如:匹配以abc为开始 “^abc”
​ $ //匹配结束位置,例如:匹配以jpeg为结束 “jpeg$”
​ [] //匹配其中的任意一个字符, “f[ao]t” fat, fot
​ [-] //如果连字符“-”在选择匹配中出现,可以表示区间范围 [a-zA-Z_], [0-9]
​ [^] //排除选择匹配中出现的所有字符, “f[^ao]t”
​ () //分组捕获,出现在括号中的内容会被添加到一个数组中,并且从1开始编号。
​ //被分组后的内容可以根据编号进行反向引用 \1(从捕获的数组中提取下标为1的单元)
​ | //表示或者 “ab|cd” ,匹配ab或者cd

​ \d //匹配0-9之间任意一个数

​ \s //匹配特殊的控制符,空格,字符表

​ \w

​ 方法说明

​ group([int i]) //从捕获的分组中提取指定下标的单元,但是在调用之前一定要确认是否匹配成功,即先调用matches()为true时再提取
​ 如果group参数为0表示提取数组中第一个元素也就是完全匹配的所有内容。

​ 爬虫案例:
​ //爬虫
String content = “<a href=“https://www.baidu.com?abc=354sdfsdf”>百度”;
//从a标签上提取url地址 - 正则
Pattern pattern = Pattern.compile(“<a href=”(.*)“>百度”);
Matcher matcher = pattern.matcher(content);
​ //System.out.println(matcher.matches());
if(matcher.matches()){
//提取url
String group = matcher.group(1);
System.out.println(group);
}

​ 练习:
​ 1、匹配手机号是否符合规范
​ 2、匹配邮箱地址是否符合规范

4-数学相关类

​ (1)Math
​ addExact(5, 19); //加法运算
​ subtractExact(25, 9); //减法运算
​ multiplyExact(2, 8); //乘法运算
​ floorDiv(3, 2); //除法运算
​ abs(-9); //绝对值
​ pow(2, 3); //次幂
​ max(8, 9); //最大值
​ min(2, 7); //最小值
​ random(); //返回一个0-1之间的随机数,返回double类型
​ ceil(double a); //向上取整
​ floor(double a);//向下取整

​ 注意:对于浮点数而言,在计算机底层做换算时会被转为无限循环的小数。
​ 1.3 - 1.333333333;因此在处理精度要求更高的场景推荐使用下面的类。

​ (2)BigDecimal
​ 在BigDecimal中,数值会被作为字符串进行处理。

​ //将数值封装为BigDecimal对象
​ BigDecimal num1 = new BigDecimal(“数字”)
​ BigDecimal num2 = new BigDecimal(“数字”)

​ 常用方法:

​ num1.add(num2); //加法运算
​ num1.subtract(num2); //减法运算
​ num1.multiply(num2); //乘法运算
​ num1.divide(num2); //除法运算
​ num1.abs(); //绝对值
​ num1.pow(3); //次幂
​ num1.max(num2); //最大值
​ num1.min(num2); //最小值

​ 案例:
​ BigDecimal n1 = new BigDecimal(“3”);
​ BigDecimal n2 = new BigDecimal(“2”);

​ BigDecimal divide = n1.divide(n2);
​ System.out.println(divide.doubleValue());

5-包装类

​ 针对java中的基本数据类型(基本类型变量上没有属性&方法)。而java称为纯面向对象语言,因此对基本类型做了相应的包装类型。

​ 基础 byte short char int long float double boolean
​ 包装 Byte Short Character Integer Long Float Double Boolean

​ 注意:自jdk1.5开始,java支持将基础类型的值直接赋值给包装类型,反之也可以。
​ 包装类型 = 基础类型 //封箱
​ 基础类型 = 包装类型 //拆箱

​ 封箱的过程实际上调用的是包装类身上的valueOf()方法实现。
​ Integer valueOf(int i)

​ 拆箱的过程中实际调用的是包装类身上的*Value()方法。

6-日期类

​ 在方法身上添加了@Deprecated注解的,表示官方即将在以后的版本不再支持,即将被废弃。

​ jdk1.8之前:

​ Date //表示日期类

​ - getTime ( ) //返回从1970-1-1 0:0:0 到当前时间的秒数(时间戳)

​ Calendar //日历

​ - getInstance( ) //返回当前日期的Calendar

​ - set ( ) //设置时间

​ SimpleDateFormat 日期格式化

​ - SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

​ - format(Date date) //将日期对象根据格式转为对应的字符串

​ jdk1.8开始:
​ LocalDateTime 日期时间
​ LocalDate 日期
​ LocalTime 时间

​ Duration 时间
​ Period 日期

​ LocalDateTime:

​ - now() //返回当前日期的LocalDateTime对象

​ - of(…) //将指定的日期时间转为LocalDateTime对象

​ 案例:
​ LocalDateTime now = LocalDateTime.now();
​ String format = now.format(DateTimeFormatter.ofPattern(“YYYY-MM-dd HH:mm:ss”));
​ System.out.println(format);

7-异常

1)定义
异常是java中用于问题反馈的机制。(ERROR 错误, Exception异常)
ERROR: 不应该尝试捕获,是程序正常运行过程中出现的不可避免的严重问题。
Exception:异常对于程序员来说是可控的。

​ 错误和异常都是直接继承java.lang.Throwable 。

2)异常处理
1-在方法上可以抛出异常
throws 异常类型

​ 2-捕获
​ try{
​ //可能会存在异常的代码
​ }catch(异常类型 变量){
​ //异常处理
​ }catch(异常类型 变量){
​ //异常处理
​ }
​ …
​ finally {
​ //无论是否有异常产生都会被调用
​ }

3)异常的分类
编译时异常:
在编译阶段抛出的异常,这种异常是必须要解决的。

​ 运行时异常:
​ 在运行时有可能会出现的异常,这种异常可以处理也可以不处理。
​ 如果该异常类型是RuntimeException的子类都属于运行时异常。

4)如何通过抛异常进行问题反馈
可以通过throw 配合异常实现
在方法中:
throw new 异常类(“”);

​ 注意:如果抛出的是编译时异常,则需要在方法参数列表后使用throws 抛出,如果是运行时异常,可以不用在方法上抛。

5)异常捕获处理办法
a、如果捕获的每个异常都有自己的处理办法,就需要分别捕获
b、如果所有异常处理都相同,则可以直接找这些异常的共同父类。
c、如果多个异常需要进行分组处理,那么同一组的异常之间可以用 | 隔开 — JDK1.7
(不能出现有直接继承关系的异常类)

6)自定义异常
类继承Exception–相当于自定义了一个编译时异常类。
类继承RuntimeException–相当于自定义了一个运行时异常类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值