【JAVA基础】API:Math、System、runtime、object、BigInteger 、BigDecima、爬虫、分组、时间类、包装类

本文主要是介绍【JAVA基础】API:Math、System、runtime、object、BigInteger 、BigDecima、爬虫、分组、时间类、包装类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.Math

2.System

public class Main {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};int[] arr1 = new int[8];System.arraycopy(arr,0,arr1,1,5);
//        从1970.1.1开始到现在的毫秒形式long l1= System.currentTimeMillis();//1710464757047System.out.println(l1);for (int i=0;i<arr.length;i++){System.out.println(arr1[i]);}
//        0:当前虚拟机是正常停止
//          1:当前虚拟机是异常停止System.exit(0);}
}

3.runtime

      Runtime r1=Runtime.getRuntime();
//       停止虚拟机
//       Runtime.getRuntime().exit(0);
//       获得CPU线程数System.out.println(Runtime.getRuntime().availableProcessors());//16
//        总内存大小,单位字节System.out.println(Runtime.getRuntime().maxMemory()/1024/1024);//3934
//        剩余内存大小System.out.println(Runtime.getRuntime().freeMemory()/1024/1024);//243
//        运行cmd
//        shutdown关机 ,加上参数才运行,-s:1min之后关机;-a取消关机Runtime.getRuntime().exec("shutdown -a");

4 object

所有类直接或间接继承object类

//toString:默认返回地址值
//打印一个对象,可以重写该方法返回属性值 public String toString() {return "Animal{a = " + a + ", b = " + b + "}";}
        //equals只能判断引用类型,看地址String s1="1";String s2="1";String s3="3";StringBuilder sb=new StringBuilder("1");System.out.println(s1==s2);//trueSystem.out.println(s1.equals(s2));//trueSystem.out.println(s1==s3);//falseSystem.out.println(s1.equals(s3));//false
//        equals被String调用,要看sb是不是字符串,此时sb不是字符串,而是StringBuilder对象System.out.println(s1.equals(sb));//false//        equals被StringBuilder调用,要看两个地址是否相等System.out.println(sb.equals(s1));//false

5 Clone

调用clone方法时,分配的内存和源对象一样

ctrl+n

ctrl+f12

 

protected native Object clone() throws CloneNotSupportedException;

所以要去重写

Animal.java

//Cloneable没有抽象方法,那么其是标记性接口
//Cloneable表示实现后当前类对象可以克隆,没有实现就不能
public class Animal implements Cloneable{public int a=1;public static  int b=2;@Overridepublic String toString() {return "KELONG";}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}

 Main.java

public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException {Animal an=new Animal();Animal an1=(Animal) an.clone();System.out.println(an);//KELONGSystem.out.println(an1);//KELONG}
}

浅克隆:默认,引用克隆指向同一地址,基本数据类型克隆直接拷贝过来

深克隆: 引用克隆指向不同地址,基本数据类型复用串池里面的,使用需要重写方法或使用第三方工具类

6 object工具类

    public static void main(String[] args) throws IOException, CloneNotSupportedException {Animal an=new Animal();Animal an1=(Animal) an.clone();
//     先an非空判断,an非空就用an.equals方法,如果重写比较地址,没有比较属性System.out.println(Objects.equals(an,an1));//falseSystem.out.println(Objects.isNull(an));//falseSystem.out.println(Objects.nonNull(an));//true}

7 BigInteger 

        Random r = new Random();
//        获取随机大整数,范围0-2^4-1BigInteger bgi = new BigInteger(4, r);System.out.println(bgi);//9
//        获取指定大整数BigInteger bgi1 = new BigInteger("10");System.out.println(bgi1);//10
//        获取指定进制大整数
//        2表示2进制BigInteger bgi2 = new BigInteger("10",2);System.out.println(bgi2);//2
//        提前把-16-16创建为BigInteger对象,多次获取不创建新的BigInteger bgi3 =BigInteger.valueOf(16);BigInteger bgi4 =BigInteger.valueOf(16);System.out.println(bgi3==bgi4);//true,表示同一个对象

8 BigDecima

 9 爬虫

package DEMO1;import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;//找出里面所有的javaxx
public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException {String str="网页Java 是一种流行的编程语言,可以用于开发桌面应用程序、网页应用程序和移动应用程序。Oracle 提供了 Java12 的最新版本,让您可以享受更多的功能和安全性。无论您是 Java16 的新手还是专家,都可以在 java2.com 上找到相关的下载、帮助和常见问题。";//method1();
//    获取正则表达式对象,\\d{0,2}表示Java出现0次-2次Pattern p=Pattern.compile("Java\\d{0,2}");
//        文本匹配器。m要在str找到符合p规则的小串Matcher m=p.matcher(str);while(m.find()){String s1=m.group();System.out.println(s1);}}}//    private static void method1() {
//获取正则表达式对象,\\d{0,2}表示Java出现0次-2次
//        Pattern p=Pattern.compile("Java\\d{0,2}");文本匹配器。m要在str找到符合p规则的小串
//        Matcher m=p.matcher(str);从头开始寻找满足条件字串,有返回true,底层记录起始索引和结束索引+1,java是0123,结束索引是4
//        boolean b=m.find();group方法会根据find的索引截取数据
//        String s1=m.group();
//        System.out.println(s1);第二次find会读取后面的内容
//        b=m.find();
//        String s2=m.group();
//        System.out.println(s2);
//    }
//}

 

        String str="网页JAva是一种流行的编程语言,可以用于开发桌面应用程序、网页应用程序和移动应用程序。Oracle 提供了 JAva11 的最新版本,让您可以享受更多的功能和安全性。无论您是 JAVA17 的新手还是专家,都可以在 java2.com 上找到相关的下载、帮助和常见问题。";//method1();
//    获取正则表达式对象,\\d{0,2}表示Java出现0次-2次String s="Java\\d{0,2}";//        ((?i)java)表示忽略大小写,后面?表示前面的数据是java,=是后面要跟随的数据
//        只要java,不要版本号String s5="((?i)java)(?=8|11|17)";//JAva JAVA
//        要java,要版本号String s2="((?i)java)(8|11|17)";//JAva11 JAVA17String s3="((?i)java)(?:8|11|17)";//JAva11 JAVA17
//        不要版本号为8,11,17 的String s4="((?i)java)(?!8|11|17)";//JAva java
        String str="网页JAva是abbbbbbbbbbbbb一种流行的编程语言,可以用于开发桌面应用程序、网页应用程序和移动应用程序。Oracle 提供了 JAva11 的最新版本,让您可以享受更多的功能和安全性。无论您是 JAVA17 的新手还是专家,都可以在 java2.com 上找到相关的下载、帮助和常见问题。";//        非贪婪爬取String s="ab+?";//ab//        贪婪爬取String s2="ab+";//abbbbbbbbbbbbbPattern p=Pattern.compile(s2);

 

10 捕获分组

 

//        判断字符串开始字符与结束字符是否一致
//        (.)表示第一个字符任意,.表示中间字符任意,+表示可以多个,\\1表示把第一组数据拿出来用一次String s1="(.).+\\1";String s2="(.+).+\\1";
//        *作用于\\2,表示0次或多次,外面括号的第一组,里面的是第二组,只看左括号分组String s3="((.+)\\2*).+\\1";System.out.println("a123a".matches(s1));//trueSystem.out.println("a123b".matches(s1));//falseSystem.out.println("abc123abc".matches(s2));//trueSystem.out.println("aaa123aaa".matches(s3));//true
        String s1="啊啊啊啊啵啵啵啵啵啵笑笑笑笑笑笑笑笑笑";
//        +表示1次或者多次String s2=s1.replaceAll("(.)\\1+","$1");System.out.println(s2);//啊啵笑

11 非捕获分组

分组之后不再用本组数据,括号只是括起来

//        ?: ?! ?=都是非捕获分组,\\1错误 String s1="[1-9]\\d{16}(?:\\d|X|x)\\1";//  \\d 第一个\:编译器将字符串转变为“正则表达式” ,\d匹配数字,|表示或//RegExp1(?=RegExp2)  匹配后面是RegExp2 的 RegExp1//RegExp1(?!RegExp2)  匹配后面不是RegExp2 的 RegExp1String s1="[1-9]\\d{16}(?:\\d|X|x)";System.out.println("15042919840709121x".matches(s1));

12 Date

//        表示当前时间Date d1=new Date();
//        从时间原点开始计算,0是long类型的Date d2=new Date(0L);System.out.println(d1);//Fri Mar 15 13:35:59 CST 2024System.out.println(d2);//Thu Jan 01 08:00:00 CST 1970
//        修改时间,1000msd2.setTime(1000L);System.out.println(d2);//Thu Jan 01 08:00:01 CST 1970//获取当前时间ms值long time= d1.getTime();System.out.println(time);//1710480959584

13 SimpleDateFormat

//        作用1:格式化:转变格式
//        从时间原点开始计算,0是long类型的Date d2=new Date(0L);SimpleDateFormat sd=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EE");System.out.println(sd.format(d2));
//        作用2:字符串表示的时间->Date对象SimpleDateFormat sd1=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//        要与字符串格式完全一致String str="1111年22月33日 44:55:66";Date date=sd1.parse(str);System.out.println(date);

14 Calendar

//        1.获取日历对象
//        Calendar是一个抽象类,不能直接newCalendar ca=Calendar.getInstance();Date d=new Date(0L);
//        修改日历的时间ca.setTime(d);
//        月份:范围0-11,星期:国外星期天=国内星期一 星期第一天
//       get():  1 年 2 月 3一年中第几周int year=ca.get(1);//ca.get(Calendar.YEAR)int month=ca.get(2)+1;//ca.get(Calendar.MONTH)int date=ca.get(5);//ca.get(Calendar.DAY_OF_MONTH)int week=ca.get(Calendar.DAY_OF_WEEK);System.out.println(year+","+month+","+date);//1970,1,1ca.set(Calendar.YEAR,2023);System.out.println(ca.get(1));//2023

15 JDK8 时间类:时区、时间、格式化

JDK7 多线程有数据安全问题

JDK8 时间对象不可变

//      获得所有时区名称Set<String> ZoneIds= ZoneId.getAvailableZoneIds();System.out.println(ZoneIds);//[Asia/Aden, America/Cuiaba, Etc/GMT+9, Etc/GMT+8...]
//        获取当前系统默认时区ZoneId zid=ZoneId.systemDefault();System.out.println(zid);//Asia/Shanghai
//        获取指定时区ZoneId zid1=ZoneId.of("Asia/Shanghai");System.out.println(zid1);//Asia/Shanghai
//        获取当前时间Instant now=Instant.now();System.out.println(now);//2024-03-15T06:15:20.784755300Z
//        根据ms获取对象Instant instant1=Instant.ofEpochMilli(1L);System.out.println(instant1);//1970-01-01T00:00:00.001Z
//        指定时区的时间ZonedDateTime timez=Instant.now().atZone(zid1);System.out.println(timez);//2024-03-15T14:18:42.601276100+08:00[Asia/Shanghai]
//        时间的判断,对象都是Instantboolean result=now.isBefore(instant1);System.out.println(result);//falseInstant instant2=instant1.minusMillis(1000l);System.out.println(instant2);//1969-12-31T23:59:59.001Z

 

 

16 包装类

用一个对象,把基本数据类型包起来

char包装类:Charracter

int包装类:Integer

        Integer i1=new Integer(1);Integer i2=Integer.valueOf(2);Integer i3=Integer.valueOf(2);System.out.println(i2);//2
//        -128-127使用最多,提前把这个范围内都创建了对象,如果用了不会创建新的System.out.println(i2==i3);//true
//        自动装箱Integer i4=3;
//        自动拆箱int i5=i4;
//        JDK5以后int和Integer可以看作一个东西,内部可以转化
//        把整数转为二进制String s1=Integer.toBinaryString(100);//把整数转为十六进制String s2=Integer.toHexString(100);//把整数转为八进制String s3=Integer.toOctalString(100);System.out.println(s1);//1100100System.out.println(s2);//64System.out.println(s3);//144
//        将字符串转换为整数int i=Integer.parseInt("123");System.out.println(i);//123

17 练习

17.1

输入1-100的整数,累积数值到200退出

public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException, ParseException {ArrayList<Integer> array=new ArrayList<>();Scanner sc=new Scanner(System.in);while(true){System.out.println("请输入:");String s1=sc.nextLine();int num=Integer.parseInt(s1);if(num<1||num>100){System.out.println("数值不符!");continue;}array.add(num);int sum=getSum(array);if(sum>200){System.out.println("达到200!");break;}}}private static int getSum(ArrayList<Integer> array) {int num=0;for(int i=0;i<array.size();i++){num+= array.get(i);}return num;}
}

 

 17.2 

 

public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException, ParseException {String str="150";if(!str.matches("[0-9]\\d{0,9}")){System.out.println("输入有误");}
//      定义一个变量表示最终结果int number=0;for(int i=0;i<str.length();i++){
//          '0'表示48int c=str.charAt(i)-'0';
//          第一次输入1,第二次输入2,但要变为12number=number*10+c;}System.out.println(number);//150}
}

 17.3 

public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException, ParseException {System.out.println(toBinaryString(6));}private static String toBinaryString(int number) {//     拼接余数StringBuilder sb=new StringBuilder();while (true){if(number==0){break;}int remain=number%2;sb.insert(0,remain);System.out.println(remain);number=number/2;}return sb.toString();}
}

 17.4

生日到现在是几天

public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException, ParseException {
//        JDK7
//       计算生日ms值String str="2010年01月08日";SimpleDateFormat sd=new SimpleDateFormat("yyyy年MM月dd日");Date date=sd.parse(str);long time1=date.getTime();
//        计算现在日期
//        第一种方法
//        long today=System.currentTimeMillis();Date date1=new Date();long time2=date1.getTime();//不要用这两行long time=time2-time1;System.out.println(time/1000/60/60/24);
//        JDK8
//        period侧重年月日,Duration分钟与ms,ChronoUnit全LocalDate l1=LocalDate.of(2010,1,8);LocalDate l2=LocalDate.now();System.out.println(ChronoUnit.DAYS.between(l1,l2));//5180}
}

17.5 

 

package DEMO1;import java.io.IOException;
import java.text.ParseException;
import java.time.LocalDate;
import java.util.Calendar;public class Main {public static void main(String[] args) throws IOException, CloneNotSupportedException, ParseException {Calendar c=Calendar.getInstance();c.set(2000,2,1);c.add(Calendar.DAY_OF_MONTH,-1);//1是往后加,月份范围0-11int day=c.get(Calendar.DAY_OF_MONTH);System.out.println(day);//29//        JDK8
//        设定时间LocalDate ld=LocalDate.of(2000,3,1);LocalDate date=ld.plusDays(-1);System.out.println(date);//2000-02-29int month=date.getDayOfMonth();System.out.println(month);//29//        是不是闰年方法,true就是闰年System.out.println(ld.isLeapYear());//true}
}

这篇关于【JAVA基础】API:Math、System、runtime、object、BigInteger 、BigDecima、爬虫、分组、时间类、包装类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812592

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2