• Java 常用API (第二部分)


    常用api第二部分

    Date 类

    import java.util.Date;

    时间原点: 1970-01-01 00:00:00(英国格林威治)

    中国属于东八区, 会把时间增加 8 个小时: 1970-01-01 08:00:00

    unix 时间戳是指离时间原点的毫秒值

     

    使用 Date 类获取当前 unix 时间戳:

    // 获取当前unix时间戳
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args){
            Date d = new Date();
            long i = d.getTime();
            System.out.println(i);  // 1571926743797
        }
    }

    把时间戳转换为日期时间:

    // 把时间戳转换为日期时间
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args){
            Date d = new Date(1571926743797L);
            System.out.println(d); // Thu Oct 24 22:19:03 CST 2019
        }
    }

    DateFormat 类

    import java.text.DateFormat;

    DateFormat 是一个抽象类

    import java.text.SimpleDateFormat;

    SimpleDateFormat 是实现的非抽象子类

    将 Date 类型格式化为指定模式的字符串:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args) {
            SimpleDateFormat sd =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String dateStr = sd.format(new Date());
            System.out.println(dateStr);  // 2019-10-24 22:37:28
        }
    }

    将字符串解析为 Date 类型:

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args) throws ParseException {  // 解析可能会发生异常
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date d = sdf.parse("2019-10-24 22:37:28");
            System.out.println(d);  // Thu Oct 24 22:37:28 CST 2019
        }
    }

    小练习: 计算一个人活了多少天 ?

    步骤: 

    1. 使用 Scanner 获取出生日期
    2. 使用 SimpleDateFormat 解析成 Date 类型
    3. 转化为毫秒值
    4. 使用当前 Date 毫秒值减去出生日期毫秒值
    5. 把毫秒值转换为单位: 天
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) throws ParseException {
            // 获取出生日期字符串
            Scanner s = new Scanner(System.in);
            s.useDelimiter("
    ");   // 使用换行来判断用户输入完成
            String birthday = s.next();
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            // 求毫秒差
            long currentTimestamp = new Date().getTime();
            long birthdayTimestamp = sdf.parse(birthday).getTime();
            long difference =  currentTimestamp - birthdayTimestamp;
            // 转换为天
            int ret = (int) (difference / 1000 / 60 / 60 / 24);
            System.out.println(String.format("你活了多少天呢?  %d", ret));  // 8842
        }
    }

    Calendar 类

    import java.util.Calendar;

    Calendar 是抽象类

    常用成员方法:

    1. 返回当前的日期时间的Date对象

      • public Date getTime()

    2. 将给定的日期时间字段设置为给定值

      • public void set(int field, int value)

    3. 根据日历的规则, 为给定的日历字段添加或者减去指定的时间量(例如获取前N天的时间, 前N秒的日期时间, 非常方便) (正数为加, 负数为减)

      • public abstract void add(int field, int amount)

    4. 获取日历字段的值

      • public int get(int field)

    demo: 

    import java.util.Calendar;
    import java.util.Date;
    
    public class Main {
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();  // 直接获取对象, 多态写法
    
            // 获取当前时间
            Date currentTime = c.getTime();
    
            // 设置年份
            c.set(Calendar.YEAR, 9999);
    
            // 获取年份
            int year = c.get(Calendar.YEAR);
            System.out.println(year);  // 9999
    
            // 更改月份
            c.add(Calendar.MONTH, 2);
            // 查看更改的月份
            System.out.println(c.get(Calendar.MONTH));  // 西方月份是 0-11, 中国是 1-12
        }
    }

    System 类

    java.lang.System

    它提供了很多的静态方法, 使用类名直接调用

    1. 返回当前时间的unix时间戳 (可用于统计程序运行耗时)
    2. arraycopy
      public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);
      

        

    统计程序耗时:

    public class Main {
        public static void main(String[] args) throws InterruptedException {
            long startTime = System.currentTimeMillis();
            Thread.sleep(1000);
            long endTime = System.currentTimeMillis();
            System.out.println(endTime - startTime);  // 1001
        }
    }

    arraycopy:

    import java.util.Arrays;
    
    public class Main {
        public static void main(String[] args) {
            int[] src = {1,2,3,4};
            int[] dest = {5,6,7,8};
    
            System.arraycopy(src, 0, dest,0, 3);  //  替换3个, 元素少于3个报错
            System.out.println(Arrays.toString(dest)); // [1, 2, 3, 8]
        }
    }

    StringBuilder 类

    java.lang.StringBuilder

    StringBuilder 是一个字符串缓冲区; 在内存里边始终是一个 byte[] 数组, 占用空间少, 操作效率高

    StringBuilder 是可变对象, 用来高效拼接字符串

    StringBuilder 可以支持链式操作, 实现链式操作的关键是返回实例本身

    常用成员方法: 

    1. append (可添加任意类型数据的字符串形式)
    2. toString (StringBuilder 和 String 可以互相转换)

    字符串的高效拼接

    public class Main {
        public static void main(String[] args) {
            StringBuilder bu = new StringBuilder();
            // 链式调用
            bu.append("abc")
                    .append(123)
                    .append(true)
                    .append(0.999)
                    .append('a');
            System.out.println(bu.toString();
        }
    }

    StringBuilder 和 String 之间的相互转换

    // StringBuilder 和 String 之间的相互转换
    public class Main {
        public static void main(String[] args) {
            StringBuilder bu = new StringBuilder("abc");  // 使用不同的构造方法
            System.out.println(bu.getClass());  // class java.lang.StringBuilder
            //
            String str = bu.toString();
            System.out.println(str.getClass());  // class java.lang.String
        }
    }

    包装类

    用类来包装基本类型, 方便操作基本类型数据

    基本类型对应的包装类(java.lang)
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean

     

    成员方法:

    1. valueOf() 装箱

    2. intValue() 拆箱

    demo: 

    public class Main {
        public static void main(String[] args) {
            // 装箱
            // Integer ig = new Integer("123456");
            Integer ig = Integer.valueOf("123456");
            // 拆箱
            int i = ig.intValue();
            System.out.println(i);   // 123456
    
            // 自动装箱, 拆箱
            Integer ig2 = 123456;
            int i2 = ig2;
        }
    }

    ending ~

    每天都要遇到更好的自己.
  • 相关阅读:
    js输出
    mysql主从同步(4)-Slave延迟状态监控
    mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理
    【故障】MySQL主从同步故障-Slave_SQL_Running: No
    什么是bgp线路
    F5负载均衡虚拟服务器配置FTP端口访问不了
    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    东风本田/XR-V/2017款
    mysqldump导出数据库导入数据库
    .htaccess设置301跳转及常用技巧整理
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/11798217.html
Copyright © 2020-2023  润新知