java常用api篇【完整版】

本文介绍了Java中常用的API,包括Math类的数学运算,System类的系统操作如退出和时间获取,Runtime的运行时环境控制,以及Object的方法如equals和clone。还涉及了大数据类型BigInteger和BigDecimal,正则表达式的使用,简单的网络爬虫示例,以及JDK7和JDK8中的日期和时间处理。
摘要由CSDN通过智能技术生成

13-常用api

Math

  • abs,绝对值
  • ceil,向上取整
  • floor,向下取整
  • round,四舍五入
  • max,获取两个int中的较大值
  • min,获取两个int中的较小值
  • random,返回值为double的随机数
  • sqrt,开平方根
  • cqrt,开立方根

System

  • exit,终止当前运行的java虚拟机,System.exit(0),0表示正常停止,非0表示异常停止
  • currentTimeMillis,返回当前系统的时间毫秒值形式,System.currentTimeMillis()返回long类型
  • arraycopy,数组拷贝, System.arraycopy(arr1, 0, arr2, 0, 10)
    • 参数一,数据源
    • 参数二,数据源第几个索引开始拷贝
    • 参数三,目的地
    • 参数四,目的地开始索引
    • 参数五,拷贝的个数

Runtime

  • Runtime表示当前虚拟机的运行环境
  • getRuntime(),当前运行环境对象
  • exit(),停止虚拟机
  • availableProcessors(),获取cpu线程数
  • maxMemory,JVM能从系统中获取的总内存大小
  • totalMemory,JVM已经从系统中获取的总内存大小
  • freeMemory,JVM剩余内存大小
  • exec,运行cmd命令
    • shutdowm,关机
    • -s,默认在一分钟之后关机
    • -s -t,指定时间关机
    • -a,取消关机操作
    • -r,关机并重启

Object

成员方法

  • toString(),打印对象的地址值,一般会重写
  • equals(),比较两个对象是否相等,底层先做非空判断再比较
  • isNull(),判断对象是否为null
  • nonNull(),与isNull返回值相反
  • clone(),对象克隆,浅克隆
  • 深克隆的第三方工具Gson,new Gson().toJson().FromJson()

BigInteger(最大值:42亿的21亿次方)

  • public BigInteger(int num, Random rnd),获取随机大整数,范围:[ 0~2的num次方 - 1 ]
  • 获取一个指定的大整数,例如:public BigInteger(“999999999999”),参数是字符串,字符串必须是整数
  • 静态方法valueOf,内部优化,如果多次获取不会重新创建,但是参数最大是long类型的最大值是

BigDecimal

  • 用来表示很大的小数
  • 通过传递字符串表示小数来出创建对象,精确的,public BigDecimal(“999999999999.99999”)

正则表达式

  • “String”.matchs(“regex”),判断是都与正则表达式匹配,匹配返回true

爬虫

  • Pattern,获取正则表达式的对象
    • pattern p = Partten.complie(“Java\\{0,2}”)
  • Matcher,获取文本匹配器的对象
    • Matcher m = p.matcher(str)
    • Boolean b = m.find()
    • String s1 = m.group(),根据find方法记录的索引进行字符串的截取
package io.xiaoduo.api;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Spider {
    public static void main(String[] args) throws IOException {
        URL url = new URL("http://www.sdcourt.gov.cn/jnanszqfy/389659/389660/389677/8831111/index.html");
        URLConnection coon = url.openConnection();
        BufferedReader br = new BufferedReader(new InputStreamReader(coon.getInputStream()));
        String line;
        String regex = "[1-9]\\d{17}";
        Pattern pattern = Pattern.compile(regex);
        while ((line = br.readLine()) != null) {
            System.out.println(line);
            Matcher matcher = pattern.matcher(line);
            while (matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }
}

带规则爬取

  • replaceAll(String regex, String newStr),按照正则表达式的规则进行替换
  • split(String regex),按照正则表达式的规则切割字符串

捕获分组和非捕获分组

  • 分组:以左括号为基准,为第一组,以此类推
  • 捕获分组
    • 后续还要继续使用本组的数据
    • 正则内部使用:\\组号
    • 正则外部使用:$组号
  • 非捕获分组:分组之后不需要再使用本组数据,仅仅是把数据括起来,不占组号,( ? : )( ? = )( ? ! )都是非捕获分组

JDK7时间-Date

  1. 如何创建日期对象
    • Date date = new Date()
    • Date date = new Date(指定毫秒值)
  2. 如何修改时间对象中的毫秒值
    • setTime(毫秒值)
  3. 如何获取时间对象中的毫秒值
    • getTime(毫秒值)

JDK7时间-SimpleDateFormat

  • 格式化:把时间变成我们喜欢的格式

  • 解析:把字符串表示的时间变成date对象

  • Date d = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateStr = sdf.format(d);
    sout(dateStr); // "2023-06-26 16:54:00"
    
  • String str = "2023-11-11 11:11:11";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = sdf,parse(str);
    sout(date); // Set Nov 11 11:11:11 CST 2023
    

JDK7时间-Calendar

  • Calender代表了系统当前时间的日历对象,可以单独修改,获取时间中的年,月,日

  • 细节:Calendar是一个抽象类,不能直接创建对象

  • 底层原理:会根据系统的不同时区,获取不同的日历对象,默认表示当前时间

  • Calendar c = Calendar.getInstance();
    sout(c);
    

JDK8日历-Calendar

  • LocalDate:年、月、日
  • LocalTime:时、分、秒
  • LocalDateTime:年、月、日、时、分、秒

JDK8工具类

  • chronoUnit,计算时间间隔(所有单位)

包装类

什么是包装类

  • 用一个对象,把基本数据类型包起来,在堆内存中开辟了一个空间

每一个基本数据类型对应的包装类

byteByte
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean

获取Interger对象的方式

  • Integer i1 = new Integer(1);
  • Integer i2 = new Integer(“1”);
  • Integer i3 = Integer . valueOf(1);

两种方式获取对象的区别

  • Integer . valueOf创建-128-127之间的数据,地址值相同
  • new Integer是重新开辟空间
  • 原理:在实际开发中,-128-127之间的数据,用的比较多,如果每次都是new出来的对象,太浪费内存,所以提前把这个范围的每一个数据都创建好对象,如果用到了不会创建新的,而是返回已经创建好的对象

如何计算

  • 在JDK5的时候提出了一个机制,自动装箱和自动拆箱
  • 自动装箱:把基本数据类型会自动的变成其对应的包装类
  • 自动拆箱:把包装类自动变成其对应的基本数据类型
  • Integer i = 10;
  • int i = new Integer(10);

Integer成员方法

方法名说明
public static String toBinaryString(int i)得到二进制
public static String toOctalString(int i)得到八进制
public static String toHexString(int i)得到十六进制
public static int parseInt(String s)将字符串类型的整数转成int类型的整数
  • 细节1:在类型转换的时候,括号中的参数只能是数字不能是其他,否则会报错
  • 细节2:8种包装类当中,除了Character都有对应的parseXxx的方法,进行类型转换,例如:boolean b = Boolean.parseBoolean(“true”);
  • 键盘录入补充:使用Scanner对象的nextLine()方法能接受一整行数据,不受空格限制,只有回车才停止

练习

package io.xiaoduo.api;

import java.util.ArrayList;
import java.util.Scanner;

public class Exercise1 {
    public static void main(String[] args) {
        ArrayList<Integer> intArr = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入");
            String val = sc.nextLine();
            Integer num = Integer.parseInt(val);
            intArr.add(num);
            int total = getTotal(intArr);
            if (total >= 200) break;
        }
        for (int i = 0; i < intArr.size(); i++) {
            System.out.println(intArr.get(i));
        }
    }

    private static int getTotal(ArrayList<Integer> intArr) {
        int t = 0;
        for (int i = 0; i < intArr.size(); i++) {
            t += intArr.get(i);
        }
        return t;
    }
}
package io.xiaoduo.api;

public class Exercise2 {
    public static void main(String[] args) {
        String str = "12345678";
        System.out.println(str);
        System.out.println(parseInt(str));
    }

    private static int parseInt(String str) {
        if (str.length() < 1 || str.length() > 10) {
            System.out.println("转换的字符长度在1-10之间");
            return 0;
        }
        if (str.substring(0, 1).equals("0")) {
            System.out.println("0不能开头");
            return 0;
        }
        int num = 0;
        for (int i = 0; i < str.length(); i++) {
            int item = str.charAt(i) - '0';
            num = num * 10 + item;
        }
        return num;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值