Java自学笔记—其他类

Java自学笔记—其他类

Arrays

/**
 * @author Lspero
 * @version 1.0
 */
public class ArraysMethod {
    public static void main(String[] args) {
        Integer[] integers = {1, 10, 7, 8, 2, 11};
        
//        for (int i = 0; i < integers.length; i++) {
//            System.out.println(integers[i]);
//        }
        // 输出数组
        System.out.println(Arrays.toString(integers));
        
        //排序, 可以通过传入一个Comparator接口实现定制排序
        //Arrays.sort(integers);
        Arrays.sort(integers, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                Integer i1 = (Integer) o1;
                Integer i2 = (Integer) o2;
                return i1 - i2;
            }
        });
        System.out.println("排序后 = " + Arrays.toString(integers));
        
        // 二分查找,要有序数组(升序),如果不存在,则返回 -(low +1),low为该值在序列中排序对应的索引
        int i = Arrays.binarySearch(integers,7);
        System.out.println(i);
        //copyOf(arr, a) 数组元素复制,从arr中复制a个元素,若a > arr.length就在某尾加null
        // 小于0抛异常NegativeArraySizeException
        Integer[] newintergers = Arrays.copyOf(integers, integers.length);
        
        //fill(str, a ) 数组填充用a替换所有元素
        Integer[] num = {1, 2, 3};
        Arrays.fill(num, 99);
        System.out.println(Arrays.toString(num));
        // equals判断是否相等
        Integer[]  num2 = {1, 2, 3};
        System.out.println(num.equals(num2));
        
        //asList 转换为list
        List<Integer> aslist = Arrays.asList(1, 2, 3);
        System.out.println("aslist= " + aslist);
        //运行类型、方法返回类型 Arrays的静态内部类ArrayList
        System.out.println(aslist.getClass());
    }
}

sort()方法可以通过传入一个匿名内部类实现定制排序

        //Arrays.sort(integers);
        Arrays.sort(integers, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                Integer i1 = (Integer) o1;
                Integer i2 = (Integer) o2;
                return i1 - i2;
            }
        });

System

/**
 * @author Lspero
 * @version 1.0
 */
public class System_ {
    public static void main(String[] args) {
    
        System.out.println("ok1");
        int[] src = {1, 2, 3};
        int[] dest = new int[3];
        
        //arraycopy(源数组 src, 源数组初始索引0, 目标数组dest, 目标数组存放初始1, 目标数组拷贝长度2);
        System.arraycopy(src, 0, dest, 1, 2);
        System.out.println(Arrays.toString(dest));
        
        // 返回时间
        System.out.println(System.currentTimeMillis());
        System.exit(0);
        
        System.out.println("ok2");
    }
}

大数

BigInteger

/**
 * @author Lspero
 * @version 1.0
 */
public class BigInteger_ {
    public static void main(String[] args) {
        // long l = 99999999999999999999; // too large
        BigInteger biginteger = new BigInteger("99999999999999999999999");
        BigInteger biginteger2 = new BigInteger("7");
        System.out.println(biginteger);
        
        // 加减乘除需要使用对应的方法
        System.out.println(biginteger.add(biginteger2));
        System.out.println(biginteger.subtract(biginteger2));
        System.out.println(biginteger.multiply(biginteger2));
        System.out.println(biginteger.divide(biginteger2));
    }
}

BigDecimal

/**
 * @author Lspero
 * @version 1.0
 */
public class BigDecimal_ {
    public static void main(String[] args) {
        double d = 1.11111122222222222222222222;//精度不够
        BigDecimal bigDecimal = new BigDecimal("1.11111122222222222222222222");
        BigDecimal bigDecimal2 = new BigDecimal("1.2222222222333333333");
        System.out.println(d);

        // 加减乘除
        System.out.println(bigDecimal.add(bigDecimal2));
        System.out.println(bigDecimal.subtract(bigDecimal2));
        System.out.println(bigDecimal.multiply(bigDecimal2));
        
        //可能除不尽,会抛异常
        //System.out.println(bigDecimal.divide(bigDecimal2));
        //在调用时指定精度即可,BigDecimal.ROUND_CEILING会保留分子精度
        System.out.println(bigDecimal.divide(bigDecimal2, BigDecimal.ROUND_CEILING));
    }
}

日期类

Date

/**
 * @author Lspero
 * @version 1.0
 */
public class Date_ {
    public static void main(String[] args) throws Exception {
        // Date 获取当前时间,输出为国外格式,因此常常需要转化
        Date date = new Date();
        System.out.println(date);
        
        //格式化
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
        String d = sdf.format(date);
        System.out.println(d);

        Date date2 = new Date(8956856);
        System.out.println(date2);

        // 把一个格式化的字符串,转成Date
        Date parse = sdf.parse("2021年10月31日 10:47:31 星期日");
        System.out.println(parse);
    }
}

Calendar

/**
 * @author Lspero
 * @version 1.0
 */
public class Calendar_ {
    public static void main(String[] args) {
         // Calendar 是一个抽象类 构造器私有,getInstance获取
        Calendar c = Calendar.getInstance();
        System.out.println(c);
        
        // 没有提供格式,要自己组合
        System.out.println("年 = " + c.get(Calendar.YEAR));
        // 月份从0开始,因此要加1
        System.out.println("月 = " + (c.get(Calendar.MONTH) + 1) );
        // 默认12小时
        System.out.println("12小时制 = " + c.get(Calendar.HOUR));
        // 24小时
        System.out.println("24小时制 = " + c.get(Calendar.HOUR_OF_DAY));

        /*缺点
        * 可变性
        * 偏移性
        * 格式化
        * 线程不安全
        * 不能处理闰秒,每个2天多1秒
        * */
    }
}

Instant

 * @author Lspero
 * @version 1.0
 */
public class Instant_ {
    public static void main(String[] args) {
        // 时间戳 Instant
        Instant now = Instant.now();
        System.out.println(now);
        // 转成Date
        Date date = Date.from(now);
        // 转成Instant
        Instant instant = date.toInstant();
    }
}

LocalDateTime

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * @author Lspero
 * @version 1.0
 */
public class LocalDateTime_ {
    public static void main(String[] args) {
        // JDK8加入
        //LocalDate
        //LocalTime
        //LocalDateTime
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);
        
        System.out.println("年 = " + ldt.getYear());
        System.out.println("月 = " + ldt.getMonth());
        System.out.println("月 = " + ldt.getMonthValue());
        System.out.println("日 = " + ldt.getDayOfMonth());
        System.out.println("时 = " + ldt.getHour());
        System.out.println("分 = " + ldt.getMinute());
        System.out.println("秒 = " + ldt.getSecond());

        // 定制输出
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss E");
        String format = dtf.format(ldt);
        System.out.println(format);

        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();

        // 提供plus 和 minus 方法 可以加减
        LocalDateTime localDateTime = ldt.plusDays(890);
        System.out.println("890天后是 " + dtf.format(localDateTime));

        LocalDateTime localDateTime02 = ldt.minusMinutes(89465);
        System.out.println("89465分钟前是 " + dtf.format(localDateTime02));


    }
}

总结

Java 提供很多类,并不用将每个方法记住,可以通过API或者类图的方式查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值