Java常用的API(2)

简介: Java常用的API

Java常用的API(1)https://developer.aliyun.com/article/1540974

BigInteger类的成员方法

BigInteger类的存储方式

先将大整数转换成二进制补码,以32位为一组拆成若干段(如上图是拆成了3段)存入一个数组中。其中,第一位是无符号位。

BigDecimal类

小数在计算机中的存储模式

BigDecima的作用:①用于小数的精确计算;②用来表示很大的小数

如果是除不尽的小数,需要设置精确几位和舍入模式。

BigDecima的存储模式

把输入的字符参数拆开,存储对应的ASCII数值放到一个数组中。

可以使用debug功能分析Java的底层运算

正则表达式

正则表达式作用:①校验字符串是否满足规则;②在一段文本中查找满足要求的内容

[a-z&&[def]]  //a-z和def的交集。为:d,e,f
//细节:如果要求两个范围的交集,那么需要写符号8&
//如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号
System.out.println("a".matches("[a-z&&[d-f]]"));
System.out.println("&".matches("[a-z&&[d-f]]"));
System.out.println("a".matches("[a-z&[d-f]]"));
System.out.println("&".matches("[a-z&[d-f]]"));

“\”在Java中表示转义字符

//忽略大小写:(?i),会忽略在这之后的字母的大小写
String regex4="a((?i)b)c";
System. out. println("------------");
System.out.println("abc". matches(regex4));//true
System.out.println("WBC". matches(regex4));//false
System.out.println("aBc". matches(regex4));//true

正则表达式总结

正则表达式在字符串方法中的使用

分组

Q:正则表达式中的[]和()什么区别?

分组就是一个小括号

//需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
//举例:ai23a b456b 17891&abc&a123b(false)
String r1 = "(.).+\\1";
String str1 = "ai23a还是短发b456b的防护等级17891&abc&a123b";
extracted(r1,str1);
System.out.println("ai23a".matches(r1));
System.out.println("b456b".matches(r1));
System.out.println("17891&abc&a123b".matches(r1));
System.out.println("ai23a还是短发b456b的防护等级17891&abc&a123b".matches(r1));
System.out.println("-------------------");
//需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
//举例:abc123abc b456b123789123&l@abc&!@abc123abd(false)
String r2 = "(.+).+\\1";
System.out.println("abc123abc".matches(r2));
System.out.println("b456b".matches(r2));
System.out.println("123789123".matches(r2));
System.out.println("&!@abc&!@".matches(r2));
System.out.println("abc123abd".matches(r2));
System.out.println("-------------------");
//需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
//举例:aaa123aaabbb456bbb111789111&&abc&&
/*(.):把首字母看做一组
   \\2:把首字母拿出来再次使用
   +:作用于\\2,表示后面重复的内容出现1次或多次*/
String r3 = "((.)\\2+).+\\1";
System.out.println("aaa123aaa".matches(r3));
System.out.println("bbb456bbb".matches(r3));
System.out.println("111789111".matches(r3));
System.out.println("&&abc&&".matches(r3));
System.out.println("aaa123aad".matches(r3));
System.out.println("-------------------");

后续还要继续使用本组数据:

  • 正则内部使用:\\组号
  • 正则外部使用:$组号
/*需求:
  将字符串:我要学学编编编编程程程程程程
  替换为:我要学编程*/
String s = "我要学学编编编编程程程程程程";
//(.)表示把重复内容的第一个字符看做一组
//\\1表示第一字符再次出现
//+至少一次
//$1表示把正则表达式中第一组的内容,再拿出来用
String r = "(.)\\1*";
System.out.println(s.replaceAll(r,"$1"));

捕获分组和非捕获分组

非捕获分组:仅仅是把括号括起来,而不占用组号

/*
    需求1:爬取版本号为8,11,17的Java文本,但是只要Java,不显示版本号。
    需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11Java17 Java17
    需求3:爬取除了版本号为8,11,17的Java文本,*/
String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为"+
    "这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。"
String r1 = "((?i)Java)(?=8|11|17)";        //需求1
String r21 = "((?i)Java)(8|11|17)";        //需求2
String r22 = "((?i)Java)(?:8|11|17)";        //需求2
String r3 = "((?i)Java)(?!8|11|17)";        //需求3
Pattern p = Pattern.compile(r1);
Matcher m = p.matcher(str);
while (m.find()) {
    String g = m.group();
    System.out.println(g);
}

Q:正则表达式中?到底怎么用?

package api;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest4 {
    public static void main(String[] args) {
        String str = "Java自从95年问世以来,abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa" +
                "经历了很多版本,目前企业中用的最多的是JAva8和JaVa11," +
                "因为这两个是长期支持版本,下一个长期支持版本是JavA17,相信在未来不久JAvA17也会逐渐登上历史舞台";
        //extracted1(str);
        /*有如下文本,请按照要求爬取数据。”
        Java自从95年问世以来,abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa
        经历了很多版本,目前企业中用的最多的是Java8和Java11,
        因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
        需求1:按照ab+的方式爬取ab,b尽可能多获取
        需求2:按照ab+的方式爬取ab,b尽可能少获取
        贪婪爬取:在爬取数据时尽可能多获取数据
        非贪婪爬取:在爬取数据时尽可能少获取数据
        Java中默认是贪婪爬取*/
        String s1 = "ab+";        //需求1,贪婪爬取
        String s2 = "ab+?";        //需求2,非贪婪爬取
        Pattern p = Pattern.compile(s2);
        Matcher m = p.matcher(str);
        while (m.find()) {
            String g = m.group();
            System.out.println(g);
        }
    }
    private static void extracted1(String str) {
    /*有文本:Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
    因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
    需求1:爬取版本号为8,11,17的Java文本,但是只要Java,不显示版本号。
    需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11Java17 Java17
    需求3:爬取除了版本号为8,11,17的Java文本,*/
        String s1 = "((?i)Java)(?=8|11|17)";        //需求1
        String s21 = "((?i)Java)(8|11|17)";        //需求2
        String s22 = "((?i)Java)(?:8|11|17)";        //需求2
        String s3 = "((?i)Java)(?!8|11|17)";        //需求3
        Pattern p = Pattern.compile(s3);
        Matcher m = p.matcher(str);
        while (m.find()) {
            String g = m.group();
            System.out.println(g);
        }
    }
}

Java常用的API(3)https://developer.aliyun.com/article/1540976

目录
相关文章
|
1月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
23天前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
204 92
|
23天前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
144 68
|
3月前
|
缓存 安全 网络协议
借助Java,让Cloudflare API为你的网站管理加速
在数字化时代,网站与应用的稳定运行至关重要。Cloudflare API作为得力助手,可高效管理网站功能。本文深入探讨基于Java的Cloudflare API自动化操作,涵盖DNS管理、防火墙配置、缓存清理、SSL/TLS设置及Worker脚本部署等核心功能。同时,提供环境准备、认证配置、最佳实践(如请求重试与批量优化)、错误处理及安全增强措施的详细指导。通过这些步骤,构建稳定高效的自动化管理系统,助力网站稳健前行。
127 0
|
2月前
|
Oracle Java 关系型数据库
掌握Java Stream API:高效集合处理的利器
掌握Java Stream API:高效集合处理的利器
329 80
|
2月前
|
安全 Java API
Java 8 Stream API:高效集合处理的利器
Java 8 Stream API:高效集合处理的利器
221 83
|
6月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
1月前
|
JSON Java API
【干货满满】分享拼多多API接口到手价,用Java语言实现
本方案基于 Java 实现调用拼多多开放平台商品详情 API,通过联盟接口获取商品到手价(含拼团折扣与优惠券),包含签名生成、HTTP 请求及响应解析逻辑,适用于电商比价、导购系统集成。
|
1月前
|
Java API 网络架构
java调用api接口自动判断节假日信息
java调用api接口自动判断节假日信息
503 0
|
1月前
|
JSON Java API
【干货满满】分享淘宝API接口到手价,用Java语言实现
本文介绍了如何使用 Java 调用淘宝开放平台 API 获取商品到手价,涵盖依赖配置、签名生成、HTTP 请求与响应解析等核心实现步骤。