一些工具类

代码1

/*
java 语言中线程共有六种状态,分别是:

NEW(初始化状态)
RUNNABLE(可运行 / 运行状态)
BLOCKED(阻塞状态)
WAITING(无时限等待)
TIMED_WAITING(有时限等待)
TERMINATED(终止状态)
*/
public class Demo1 {
    public static void main(String[] args) {
        System.out.println("Math.abs(-10) = " + Math.abs(-10));
        System.out.println("Math.ceil(3.14) = " + Math.ceil(3.14));
        System.out.println("Math.floor(9.8) = " + Math.floor(9.8));
        System.out.println("Math.random() = " + Math.random());
        System.out.println("Math.pow(2,4) = " + Math.pow(2, 4));
        System.out.println("Math.sqrt(9) = " + Math.sqrt(9));
        System.out.println("Math.round(3.14) = " + Math.round(3.14));
        System.out.println("Math.round(3.4) = " + Math.round(3.4));
        System.out.println("Math.round(3.5) = " + Math.round(3.5));
        System.out.println("Math.PI = " + Math.PI);
    }
}

输出结果

Math.abs(-10) = 10
Math.ceil(3.14) = 4.0
Math.floor(9.8) = 9.0
Math.random() = 0.8814462121707075
Math.pow(2,4) = 16.0
Math.sqrt(9) = 3.0
Math.round(3.14) = 3
Math.round(3.4) = 3
Math.round(3.5) = 4
Math.PI = 3.141592653589793

Process finished with exit code 0

代码2

import java.math.BigDecimal;
import java.math.BigInteger;

/*
java 语言中线程共有六种状态,分别是:

NEW(初始化状态)
RUNNABLE(可运行 / 运行状态)
BLOCKED(阻塞状态)
WAITING(无时限等待)
TIMED_WAITING(有时限等待)
TERMINATED(终止状态)
*/
public class Demo1 {
    public static void main(String[] args) {
//        BigInteger 存储大的整数
        System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE);
        BigInteger bigInteger1 = new BigInteger("9223372036854775807");
        System.out.println("bigInteger1 = " + bigInteger1);
        BigInteger b1 = new BigInteger("20");
        BigInteger b2 = new BigInteger("2");
        System.out.println("b1.add(b2) = " + b1.add(b2));
        System.out.println("b1.divide(b2) = " + b1.divide(b2));
        System.out.println("b1.multiply(b2) = " + b1.multiply(b2));
        System.out.println("b1.subtract(b2) = " + b1.subtract(b2));
        System.out.println("b1.remainder(b2) = " + b1.remainder(b2));
        System.out.println("---------------------------------");
//    BigDecimal
        BigDecimal bd1 = new BigDecimal(20);
        BigDecimal bd2 = new BigDecimal(10);
        System.out.println("bd1.add(bd2) = " + bd1.add(bd2));
        System.out.println("bd1.divide(bd2) = " + bd1.divide(bd2));
        System.out.println("bd1.multiply(bd2) = " + bd1.multiply(bd2));
        System.out.println("bd1.multiply(bd2) = " + bd1.subtract(bd2));
        System.out.println("bd1.remainder(bd2) = " + bd1.remainder(bd2));
        System.out.println("---------------------------------");

        BigDecimal db3 = new BigDecimal(3.0);
//这样会报错  System.out.println("bd1.divide(db3) = " + bd1.divide(db3));,所以要像下面才行
        System.out.println("bd1.divide(db3) = " + bd1.divide(db3,BigDecimal.ROUND_FLOOR));

        //也可以选择小数点的范围
        BigDecimal db4 = new BigDecimal(10.0);
        System.out.println("db4.divide(db3) = " + db4.divide(db3,10,BigDecimal.ROUND_FLOOR));
    }
}

输出

Long.MAX_VALUE = 9223372036854775807
bigInteger1 = 9223372036854775807
b1.add(b2) = 22
b1.divide(b2) = 10
b1.multiply(b2) = 40
b1.subtract(b2) = 18
b1.remainder(b2) = 0
---------------------------------
bd1.add(bd2) = 30
bd1.divide(bd2) = 2
bd1.multiply(bd2) = 200
bd1.multiply(bd2) = 10
bd1.remainder(bd2) = 0
---------------------------------
bd1.divide(db3) = 6
db4.divide(db3) = 3.3333333333

代码3

import java.util.Random;

public class Demo2 {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i <10 ; i++) {
            System.out.println(random.nextInt(10));
        }

        System.out.println("--------------");
        System.out.println("random.nextDouble() = " + random.nextDouble());
        System.out.println("random.nextBoolean() = " + random.nextBoolean());
        /*
        random.nextDouble() = 0.6696714377906926
        random.nextBoolean() = false
        * */

        System.out.println("--------------");
        Random random2 = new Random(1);
        for (int i = 0; i < 5; i++) {
            System.out.println(random2.nextInt(10));
        }
    }
}

代码4

        Date date = new Date();
        System.out.println("date = " + date);
        //日期
        System.out.println("date.getDate() = " + date.getDate());
        //0是第一个月
        System.out.println("date.getMonth() = " + date.getMonth());
        //一周的第几天
        System.out.println("date.getDay() = " + date.getDay());
        //加上1900是现在的年份
        System.out.println(date.getYear()+1900);

        long time=date.getTime();
        System.out.println("time = " + time);//time = 1640874836661

        Date date2 = new Date(time);
        System.out.println(date2); //Thu Dec 30 22:35:25 CST 2021

        String s1 = date2.toLocaleString();
        System.out.println("s1 = " + s1);//s1 = 2021-12-30 22:37:01

代码5

import java.text.*;
import java.time.*;
import java.util.Calendar;
import java.util.Date;

/*
Calendar抽象类不能直接创建对象
需要通过子类实现功能或者调用getInstance()创建Calendar对象
* */
public class Demo3 {
    public static void main(String[] args) throws ParseException {
        Calendar calendar = Calendar.getInstance();
        System.out.println("calendar.get(Calendar.YEAR) = " + calendar.get(Calendar.YEAR));//calendar.get(Calendar.YEAR) = 2021
        //月份从0开始
        System.out.println("calendar.get(Calendar.MONTH) = " + calendar.get(Calendar.MONTH));//calendar.get(Calendar.MONTH) = 11
        System.out.println("calendar.get(Calendar.HOUR) = " + calendar.get(Calendar.HOUR));//calendar.get(Calendar.HOUR) = 10

        calendar.add(Calendar.YEAR, 2);
        System.out.println("calendar.get(Calendar.YEAR) = " + calendar.get(Calendar.YEAR));//calendar.get(Calendar.YEAR) = 2023

        calendar.set(1988, 12, 12);
        System.out.println("calendar.getTime() = " + calendar.getTime());//calendar.getTime() = Thu Jan 12 22:19:23 CST 1989

        System.out.println(" -------------------- ");

        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss E");
        Date date= new Date();
        System.out.println("date = " + date);//date = Fri Dec 31 22:26:04 CST 2021
        String result=df.format(date);
        String result2=df2.format(date);
        System.out.println("result = " + result);//result = 2021-12-31 10:26:04
        System.out.println("result2 = " + result2);//result2 = 2021-12-31 10:26:36 星期五

        String dateStr="2021-12-31 10:26:39";
        Date date3=df.parse(dateStr);
        System.out.println("date3 = " + date3);//date3 = Fri Dec 31 10:26:39 CST 2021

        System.out.println(" -------------------- ");

        LocalDate now = LocalDate.now();
        System.out.println("now = " + now);//now = 2021-12-31
        int year= now.getYear();
        System.out.println("year = " + year);//year = 2021
        Month month = now.getMonth();
        System.out.println("month.getValue() = " + month.getValue());//month.getValue() = 12

        System.out.println(" -------------------- ");
        LocalDate localDate = now.minusDays(2);
        System.out.println("now = " + now);//now = 2021-12-31
        System.out.println("localDate = " + localDate);//localDate = 2021-12-29

        System.out.println(" -------------------- ");
        LocalDate localDate1=LocalDate.of(2020,1,1);
        System.out.println("localDate1 = " + localDate1);//localDate1 = 2020-01-01
        LocalDate localDate2=localDate1.plusDays(2);
        System.out.println("localDate2 = " + localDate2);//localDate2 = 2020-01-03
        Period period= Period.between(localDate,localDate2);
        System.out.println("period = " + period);//period = P-1Y-11M-26D
        System.out.println("period.getYears() = " + period.getYears());//getYears() = -1
        System.out.println("period.getMonths() = " + period.getMonths());//getMonths() = -11
        System.out.println("period.getDays() = " + period.getDays());//-26

        System.out.println(" -------------------- ");
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("localDateTime = " + localDateTime);//localDateTime = 2021-12-31T22:49:06.134
        LocalDateTime localDateTime1=LocalDateTime.of(2021,1,1,10,10,20);
        System.out.println("localDateTime1 = " + localDateTime1);//localDateTime1 = 2021-01-01T10:10:20

        Duration duration = Duration.between(localDateTime,localDateTime1);
        System.out.println("duration = " + duration);//PT-8748H-48M-40.025S
        System.out.println("duration.toDays() = " + duration.toDays());// -364
        System.out.println("duration.toHours() = " + duration.toHours());//-8748

        System.out.println(" -------------------- ");
        LocalTime localTime = LocalTime.now();
        System.out.println("localTime = " + localTime);
        LocalTime localTime1 = LocalTime.of(12,12,12);
        System.out.println("localTime1 = " + localTime1);






    }
}

代码6

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Demo4 {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
        LocalDateTime localDateTime1 = LocalDateTime.now();
        String format = formatter.format(localDateTime1);
        System.out.println("format = " + format);//format = 2022-01-01

        System.out.println("-----------DateTimeFormatter-----------");

        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss E");
        String format1 = formatter1.format(localDateTime1);
        System.out.println("format1 = " + format1);//format1 = 2022-01-01 11:37:37 星期六

        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format2 = formatter2.format(localDateTime1);
        System.out.println("format2 = " + format2);//format2 = 2022-01-01 11:40:34

        String date1 = "2022-01-01 11:40:00";
        LocalDateTime localDateTime2 = LocalDateTime.parse(date1,formatter2);
        System.out.println("localDateTime2 = " + localDateTime2);//localDateTime2 = 2022-01-01T11:40

        System.out.println("-----------System-----------");
        long long1 = System.currentTimeMillis();
        System.out.println("long1 = " + long1);//long1 = 1641009919887

        int[] arr ={10,22,33};
        int[] newAr =new int[arr.length];
        System.arraycopy(arr,0,newAr,0,3);
        for (int i = 0; i <newAr.length ; i++) {
            System.out.println(newAr[i]);
        }
        System.out.println("-----------Runtime-----------");
        Runtime runtime1 = Runtime.getRuntime();
        Runtime runtime2 = Runtime.getRuntime();
        System.out.println(runtime1 == runtime2);//true
        System.out.println("runtime1.totalMemory() = " + runtime1.totalMemory());//runtime1.totalMemory() = 128974848
        System.out.println("runtime2.freeMemory() = " + runtime2.freeMemory());//runtime2.freeMemory() = 122139384

        


    }
}

 代码7

System.out.println("-----------数组交换-----------");
        int[] arrTest ={10,12,20,30,40,50,60,70};
        System.out.println("数组交换前 = " + Arrays.toString(arrTest));
        int[] newArr = new int[arrTest.length];
        int index = 0;
        for (int i = arrTest.length-1; i >=0; i--) {
            newArr[index++]=arrTest[i];
        }
        arrTest=newArr;
        System.out.println("交换后 = " + Arrays.toString(arrTest));

        //或者
        for (int i = 0; i < arrTest.length/2; i++) {
            int temp = arrTest[i];
            arrTest[i]=arrTest[arrTest.length-1-i];
            arrTest[arrTest.length-1-i]=temp;
        }
        System.out.println("交换后 = " + Arrays.toString(arrTest));

代码8

//二分查找
public class Demo5 {
    public static void main(String[] args) {
        int[] arr2 = {10,12,20,23,30,34,45,50,55,60};

        int index =binarySearch(arr2,55);
        if (index==-1){
            System.out.println("没有找到");
        }else {
            System.out.println("位置是:"+index);
        }
    }

    private static int binarySearch(int[] arr2,int ele){
        int startIndex=0;
        int endIndex=arr2.length-1;
        while (startIndex<=endIndex){
            int midIndex=(startIndex+endIndex)/2;
            int midValue=arr2[midIndex];
            if (ele>midValue){
                startIndex=midIndex+1;
            }else if (ele<midValue){
                endIndex=midIndex-1;
            }else {
                return midIndex;
            }
        }
        return -1;
    }
}

 代码9:

import org.junit.Test;

import java.util.Arrays;

public class Demo6 {
    @Test
    public void test1(){
        //数组的扩容
        String[] arr1 = {"lin1","lin2","lin3"};
        String[] arr2 = new String[arr1.length*2];
        System.arraycopy(arr1,0,arr2,0,arr1.length);
        System.arraycopy(arr1,0,arr2,3,arr1.length);
        for(String s:arr2){
            System.out.println(s);
        }
    }

    @Test
    public void test2(){
        //数组的插入
        String[] arr1 = {"广坤","刘能","赵四","老徐","大拿"};
        int newIndex=2;
        String newValue="晓峰";
        String[] arr2 = new String[arr1.length+1];
        for (int i = 0; i < newIndex; i++) {
            arr2[i]=arr1[i];
        }
        arr2[newIndex]=newValue;
        System.arraycopy(arr1,newIndex,arr2,newIndex+1,arr1.length-newIndex);
        System.out.println(Arrays.toString(arr2));
    }

//数组排序 @Test
public void test3(){ int[] arr1 ={62,23,79,55,90,14,31,48,69,72,99,59}; System.out.println("排序前:"+Arrays.toString(arr1)); int temp; for (int i = 0; i <arr1.length ; i++) { for (int j = i+1; j <arr1.length ; j++) { if (arr1[i]>arr1[j]){ temp=arr1[i]; arr1[i]=arr1[j]; arr1[j]=temp; } System.out.println("排序中:"+Arrays.toString(arr1)); } } System.out.println("排序后:"+Arrays.toString(arr1)); } }

 代码10:

class Person implements Comparable{
    String name;
    int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Object o) {
        Person p = (Person)o;
        return this.age-p.age;
    }
}

class Student {

    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

class CompareTest implements Comparator{

    @Override
    public int compare(Object o1, Object o2) {
        Student s1 = (Student)o1;
        Student s2 = (Student)o2;
        return s1.age-s2.age;
    }
}


    @Test
    public void test4(){
        int[] arr1 = {82,23,62,78,92,41,69,88,};
        Arrays.sort(arr1);
        System.out.println(Arrays.toString(arr1));
        //[23, 41, 62, 69, 78, 82, 88, 92]

        int[] arr2 = {6,5,4,3,2,1};
        Arrays.sort(arr2,0,3);
        System.out.println(Arrays.toString(arr2));
        //[4, 5, 6, 3, 2, 1]
    }

    @Test
    public void test5(){
        Person p1 = new Person("张三",18);
        Person p2 = new Person("李四",17);
        Person p3 = new Person("王五",19);
        Person[] personArr ={p1,p2,p3};
        System.out.println("排序前:"+Arrays.toString(personArr));
        Arrays.sort(personArr);
        System.out.println("排序后:"+Arrays.toString(personArr));
        //排序前:[Person{name='张三', age=18}, Person{name='李四', age=17}, Person{name='王五', age=19}]
        //排序后:[Person{name='李四', age=17}, Person{name='张三', age=18}, Person{name='王五', age=19}]

        Student s1 = new Student("李白",23);
        Student s2 = new Student("白居易",30);
        Student s3 = new Student("苏东坡",12);
        Student[] studentArr = {s1,s2,s3};
        System.out.println("排序前:"+Arrays.toString(studentArr));
        CompareTest compareTest = new CompareTest();
        Arrays.sort(studentArr,compareTest);
        System.out.println("排序后:"+Arrays.toString(studentArr));
        //排序前:[Student{name='李白', age=23}, Student{name='白居易', age=30}, Student{name='苏东坡', age=12}]
        //排序后:[Student{name='苏东坡', age=12}, Student{name='李白', age=23}, Student{name='白居易', age=30}]

        int[] arr3 = new int[3];
        Arrays.fill(arr3,10);
        System.out.println(Arrays.toString(arr3));//[10, 10, 10]

        int[] arr4 = {1,2,3};
        Arrays.fill(arr4,10);
        System.out.println(Arrays.toString(arr4));//[10, 10, 10]

        int[] arr5 = new int[5];
        Arrays.fill(arr5,1,3,10);
        System.out.println(Arrays.toString(arr5));//[0, 10, 10, 0, 0]


        String[] s = {"赵匡胤","赵煦","赵祯","赵高"};
        String[] ss = Arrays.copyOf(s,2);
        ss[0]="赵构";
        System.out.println(Arrays.toString(ss));//[赵构, 赵煦]

        String[] sss = Arrays.copyOfRange(s,1,3);
        sss[0]="赵奢";
        System.out.println(Arrays.toString(sss));//[赵奢, 赵祯]

        int[][] arr6={{1,2},{2,3},{3,4}};
        System.out.println(Arrays.deepToString(arr6));//[[1, 2], [2, 3], [3, 4]]

        int[] arr7={1,2};
        int[] arr8={1,2};
        System.out.println(arr7==arr8);//false
        System.out.println(Arrays.equals(arr7,arr8));//true

        int[] arr9={82,34,55,12,48,99,78,51,82};
        Arrays.sort(arr9);
        System.out.println("arr9 = " + Arrays.toString(arr9));//arr9 = [12, 34, 48, 51, 55, 78, 82, 82, 99]
        int pos=Arrays.binarySearch(arr9,55);
        System.out.println("pos = " + pos);//4

    }

 代码11

    @Test
    public void test6(){
        String s1 ="hello";//字符串变量,指向"hello"在常量池中的位置
        String s2 ="world";//字符串变量,指向"hello"在常量池中的位置
        String s3 ="hello"+"world";//常量+常量=常量
        String s4 = "helloworld";//helloworld字符串常量
        String s5 = s1+s2;//变量+变量 在堆中
        String s6 = s1+"world";//变量+常量
        String s7 = new String("helloworld");

        System.out.println(s3==s4);//true
        System.out.println(s5==s4);//false
        System.out.println(s6==s5);//false
        System.out.println(s7==s4);//true
        //equals比较的是内容
        System.out.println(s7.equals(s4));//false

    }

    @Test
    public void test7(){
        final String s1 ="hello";//常量
        final String s2 ="world";//常量
        String s3 ="hello"+"world";//常量+常量=常量
        String s4 = "helloworld";//helloworld字符串常量
        String s5 = s1+s2;//常量+常量
        String s6 = s1+"world";//常量+常量
        String s8 = "hello";
        String s7 = new String("hello");

        System.out.println(s3 == s4);//true
        System.out.println(s4 == s5);//true
        System.out.println(s3 == s5);//true
        System.out.println(s6 == s5);//true
        System.out.println(s7 == s8);//false
        //intern()方法把数据直接存到常量池
        System.out.println(s7.intern() == s8);//true
    }

代码12

原文地址:https://www.cnblogs.com/hbxZJ/p/15746983.html