zoukankan      html  css  js  c++  java
  • Date、DateFormat类、Calendar类、基本类型包装类、System类、Math类、Arrays类、大数据运算类

    1、Date

    (1)概述:

    时间的原点:公元1970年 一月一日,午夜00000 对应的毫秒值就是0

    注意:时间和日期的计算,必须依赖毫秒值

    ----------------Date()获取当前时间

    import java.util.Date;
    
    public class Demo06boke {
    
        public static void main(String[] args) {
            Date sdf=new Date();
            System.out.println(sdf);
    
        }
    
    }

    Date(long   date)将毫秒值换算成当前时间

    import java.util.Date;
    
    public class Demo06boke {
    
        public static void main(String[] args) {
            Date sdf=new Date(10000000000L);
            System.out.println(sdf);
    //System.out.println(sdf.toString());默认调用的toString方法
        }
    
    }

    格式:星期,月份,日,小时,分钟,秒,中国标准时间,年

    Date 的getTime方法: 把日期对象转换成对应的时间毫秒值

    import java.util.Date;
    
    public class Demo06boke {
    
        public static void main(String[] args) {
            Date sdf1=new Date();
            System.out.println(sdf1);
            long times=sdf1.getTime();
            System.out.println(times);    
        }
    }

    2、DateFormat类:完成日期和文本之间的转换。

    DateFormat 是日期/时间格式化子类的抽象类,日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。

    要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象。

     格式:

    SimpleDateFormat(String  pattern)

    DateFormat类方法:format将Date转换成日期,parse将字符串改成Date

     创建日期格式化对象,在获取格式化对象时可以指定风格:DateFormat类的作用:即可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。

     

    指定格式的具体规则我们可参照SimpleDateFormat类的说明,这里做简单介绍,规则是在一个字符串中,会将以下字母替换成对应时间组成部分,剩余内容原样输出:

    l 当出现y时,会将y替换成年

    l 当出现M时,会将M替换成月

    l 当出现d时,会将d替换成日

    l 当出现H时,会将H替换成时

    l 当出现m时,会将m替换成分

    l 当出现s时,会将s替换成秒

     DateFormat类的常用方法:format()和parse()

    format(   )将Date转换成日期时间字符串;如下:

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Demo06boke {
    
        public static void main(String[] args) {//定义日期格式
        DateFormat sdf2=new SimpleDateFormat("yyyy月MM月dd日");
        //将1900000l转换成具体时间,格式如上
        Date sdf3=new Date(19000000000000l);
        //定义一个aa,调用format,将date转换为时间字符串
        String aa=sdf2.format(sdf3);
        }
    }

     parse()将String转换成Date(转换时,该String要符合指定格式,否则不能转换)。

    public class Demo06boke {
    
        public static void main(String[] args) throws ParseException {
            String str = "2020年12月11日";
            DateFormat df=new SimpleDateFormat("yyyy年MM月dd日");
            Date ss=df.parse(str);
            System.out.println(ss);
        }
    
    }

     3、Calendar类

     (1)概念:

    Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。

    Calendar为抽象类,Calendar在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象

     Calendar类静态方法:getInstance():获取一个日历

    格式:

    Calendar  sdf=Clendar.getInstance();

    import java.util.Calendar;
    public class Demo06boke {
    public static void main(String[] args) throws ParseException {

          Calendar sdf=Calendar.getInstance();
          int year1=sdf.get(Calendar.YEAR);
          int mouth1=sdf.get(Calendar.MONTH);
          int day1=sdf.get(Calendar.DATE);
          System.out.println(year1+" "+mouth1+" "+day1);

        }
    }

     

     Calendar类的常用方法:

     add(int field ,int  amount)给指定的的日历字段添加或减去指定的时间量

    get(int  field)返回给定日历字段的值

    getInstance()使用默认时区和语言环境获取一个日历

    getTime()返回一个表示此Calendar时间值的Date对象

    set(int  fiels ,int  value)将给定的日历字段设置成给定值

    import java.util.Calendar;
    
    public class Demo03 {
    
        public static void main(String[] args) {
            //日历类
            Calendar c=Calendar.getInstance();
            //一天以后
            c.add(Calendar.DATE,1);//减去指定的时间量
            System.out.println(c.getTime());
            //一天前
            c.add(Calendar.DATE,-1);//减去指定的时间量
            System.out.println(c.getTime());
            c.set(Calendar.YEAR,2088);//将年换成2088年
            System.out.println(c.get(Calendar.YEAR));
            System.out.println(c.get(Calendar.MONTH));
        }
    
    }

    4、求自己出生多少天              求距2020年1月1日还有多少天

     (1)求自己出生多少天

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Demo04 {
    
        public static void main(String[] args) throws ParseException {
            /*SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
            String birth="1991年03月04日";
            Date date=sdf.parse(birth);
            long time1=date.getTime();
            long time2=new Date().getTime();
            long time=(time2-time1)/1000/60/60/24;
            System.out.println("我活了"+time+"天了");*/
            
         Date sdf
    =new Date(); long time1=sdf.getTime(); String birth="1991年3月4日"; SimpleDateFormat aa= new SimpleDateFormat("yyyy年MM月dd日"); Date date=aa.parse(birth); long time2=date.getTime(); System.out.println((time1-time2)/1000/60/60/24
    ); } }

    (2)求距2020年1月1日还有多少天?

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.xml.crypto.Data;
    
    public class Demo02 {
    
        public static void main(String[] args) throws ParseException  {
            Date sdf=new Date();
            long time1=sdf.getTime();
            String str="2020-01-01";
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date1 = df.parse(str);
            long time2=date1.getTime();
            System.out.println(time2);
            System.out.println((time2-time1)/1000/60/60/24);
        }
    
    }

    5、基本类型包装类

    (1)字符串与基本数据之间转换

      

    基本数据类型对象包装类特点:用于在基本数据和字符串之间进行转换。

    将字符串转成基本类型

     parseByte():字符串转成byte类型

    parseShort():字符串转成short类型

    parseInt()转成int

    parseLong()转成long

    parseFloat()转成float类型

    parseDouble()转成double类型

    parseBoolean()转成波尔类型

     将基本数值转成字符串有3种方式:

     基本类型直接与””相连接即可;34+""

     调用String的valueOf方法;String.valueOf(34) 

    调用包装类中的toString方法;Integer.toString(34) 

    package demo02;
    
    public class Demo01 {
    
        public static void main(String[] args) {
            //将字符串转成整型(基本数据类型)
            String s1="123";
            int n1=Integer.parseInt(s1);
            System.out.println(n1);
            //将字符串转换为double类型
            String s2="12.1";
            double n2=Double.parseDouble(s2);
            System.out.println(n2);
            //将基本数据类型转为字符串:与双引号连接
            System.out.println(12+""+1);
            //将基本数据类型转为字符串:String类中的valueof方法
            System.out.println(String.valueOf(12)+6);
            //将基本数据类型转为字符串:toString方法
            System.out.println(Integer.toString(11)+3); 
        }
    
    }

     基本类型和对象的转换

    基本数值---->包装对象

    Integer i = new Integer(4);//使用构造函数函数

    Integer ii = new Integer("4");//构造函数中可以传递一个数字字符串

    包装对象---->基本数值

     intValue()

    public static void main(String[] args) {
            Integer i = new Integer(5);//使用构造函数函数
            Integer ii = new Integer("4");//构造函数中可以传递一个数字字符串
            System.out.println(ii);
            System.out.println(i);
            Integer iii = Integer.valueOf(6);//使用包装类中的valueOf方法
            Integer iiii = Integer.valueOf("7");//使用包装类中的valueOf方法
            System.out.println(iii);
            System.out.println(iiii);
            int num = i.intValue();//包装对象转换成基本数值
            System.out.println(num);
        }
    
    }

     自动拆箱装箱:

     自动拆箱:对象自动直接转成基本数值

    自动装箱:基本数值自动直接转成对象

    Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
    i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5; 加法运算完成后,再次装箱,把基本数值转成对象。

    6、 System类

     (1)

    System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象。System类中的都是static方法,类名访问即可

     (2)常用方法

      currentTimeMillis() 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值

     exit(int status) 用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态

     gc() 用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。

     getProperty(String key) 用来获取指定(字符串名称)中所记录的系统属性信息

     System类的方法练习:

     练习一:验证for循环打印数字1-9999所需要使用的时间(毫秒)

    public class Demo02 {
    
        public static void main(String[] args) {
            // 验证for循环打印数字1-9999所需要使用的时间(毫秒)
            long time1=System.currentTimeMillis();
            for(int i=1;i<9999;i++){
                System.out.println(i);
            }
            long time2=System.currentTimeMillis();
            System.out.println("共耗时:"+(time2-time1));
        }
    
    }

     练习二:将src数组中前3个元素,复制到dest数组的前3个位置上

    复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]

    复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]

    public class Demo03 {
    
        public static void main(String[] args) {
            int[] src={1,2,3,4,5};
            int[] dest={6,7,8,9,10};
            System.arraycopy(src,0,dest,0,3);
            for(int i=0;i<dest.length;i++){
                System.out.print(dest[i]+" ");
            }
            
        }
    
    }

     练习三:循环生成100-999之间的的三位数并进行打印该数,当该数能被10整除时,结束运行的程序

    import java.util.Random;
    public class demo01 {
        public static void main(String[] args) {
             Random random = new Random();
                while(true){
                int number = random.nextInt(900)+100; //0-899 + 100
                if (number % 10 == 0) {
                    System.exit(0);            
                }
                System.out.println(number);
            }
    
        }
    }

    7、Math类 

     

     

     abs方法,结果都为正数、、绝对值
    
    double d1 = Math.abs(-5); // d1的值为5
    
    double d2 = Math.abs(5); // d2的值为5
    
     ceil方法,结果为比参数值大的最小整数的double值、、向上取整
    
    double d1 = Math.ceil(3.3); //d1的值为 4.0
    
    double d2 = Math.ceil(-3.3); //d2的值为 -3.0
    
    double d3 = Math.ceil(5.1); // d3的值为 6.0
    

    floor方法,结果为比参数值小的最大整数的double值、、向下取整 double d1 = Math.floor(3.3); //d1的值为3.0 double d2 = Math.floor(-3.3); //d2的值为-4.0 double d3 = Math.floor(5.1); //d3的值为 5.0 max方法,返回两个参数值中较大的值 double d1 = Math.max(3.3, 5.5); //d1的值为5.5 double d2 = Math.max(-3.3, -5.5); //d2的值为-3.3 min方法,返回两个参数值中较小的值 double d1 = Math.min(3.3, 5.5); //d1的值为3.3 double d2 = Math.max(-3.3, -5.5); //d2的值为-5.5 pow方法,返回第一个参数的第二个参数次幂的值,次方值 double d1 = Math.pow(2.0, 3.0); //d1的值为 8.0 double d2 = Math.pow(3.0, 3.0); //d2的值为27.0 round方法,返回参数值四舍五入的结果 double d1 = Math.round(5.5); //d1的值为6.0 double d2 = Math.round(5.4); //d2的值为5.0 random方法,产生一个大于等于0.0且小于1.0的double小数 double d1 = Math.random();

     8、Array类

     

    sort方法,用来对指定数组中的元素进行排序(元素值从小到大进行排序)
    //源arr数组元素{1,5,9,3,7}, 进行排序后arr数组元素为{1,3,5,7,9}
    int[] arr = {1,5,9,3,7};
    Arrays.sort( arr );
    
    toString方法,用来返回指定数组元素内容的字符串形式
    int[] arr = {1,5,9,3,7}; String str = Arrays.toString(arr); // str的值为[1, 3, 5, 7, 9]
    binarySearch方法,在指定数组中,查找给定元素值出现的位置。若没有查询到,返回位置为-1。要求该数组必须是个有序的数组。 int[] arr = {1,3,4,5,6}; int index = Arrays.binarySearch(arr, 4); //index的值为2 int index2= Arrasy.binarySearch(arr, 2); //index2的值为-1
    import java.util.Arrays;
    
    public class Demo01 {
    
        public static void main(String[] args) {
            /*int[] arr=null;
            int[] arr1={};
            System.out.println(arr.length);//空,会报错
            System.out.println(arr1.length);*/
            int[] arr={3,6,9,11,33,66};
            int index=Arrays.binarySearch(arr, 6);//前提是:数组是升序排列
            System.out.println(index);//返回的是下标
            int index2=Arrays.binarySearch(arr, 20);
            System.out.println(index2);//20在数组中不存在,返回的是该值在数组中应该在的负-下标-1
            int[] arr1={5,9,1,2,77,66,33,22,11,77};
            Arrays.sort(arr1);//生序排序
            for(int i=0;i<arr1.length;i++){
                System.out.print(arr1[i]+" ");
            }
            System.out.println(Arrays.toString(arr1));
        }
    }

    9、大数据运算

     BigInteger: javalong型为最大整数类型,对于超过long型的数据如何去表示呢.Java的世界中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符

    import java.math.BigInteger;
    
    public class Demo02 {
    
        public static void main(String[] args) {
            String str="10000000000000000000000000000000000000000000";
            String str1="20000000000000000000000000000000000000000000";
            BigInteger in1=new BigInteger(str);
            BigInteger in2=new BigInteger(str1);
            System.out.println(in1.add(in2));
            System.out.println(in1.subtract(in2));
            System.out.println(in1.multiply(in2));
            System.out.println(in1.divide(in2));
        }
    
    }

     BigDecimal:doublefloat类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算

    package demo01;
    
    import java.math.BigDecimal;
    
    public class Demo03 {
    
        public static void main(String[] args) {
             System.out.println(0.09 + 0.01);
             System.out.println(1.0 - 0.32);
             System.out.println(1.015 * 100);
             System.out.println(1.301 / 100);
             
             BigDecimal b1=new BigDecimal("0.09");
             BigDecimal b2=new BigDecimal("0.01");
             System.out.println(b1.add(b2));
             
             BigDecimal b3=new BigDecimal("1.0");
             BigDecimal b4=new BigDecimal("0.32");
             System.out.println(b3.add(b4));
             
             BigDecimal b5=new BigDecimal("1.015");
             BigDecimal b6=new BigDecimal("100");
             System.out.println(b5.multiply(b6));//
            
             BigDecimal b7=new BigDecimal("1.301");
             BigDecimal b8=new BigDecimal("100");
             System.out.println(b7.divide(b8));//
             
             
        }
    
    }

  • 相关阅读:
    vs15
    Areas(区域)
    池编程技术
    MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
    MyBatis学习总结(五)——实现关联表查询
    Mapper映射语句高阶应用——ResultMap
    mysql中的null字段值的处理及大小写问题
    spring-boot支持双数据源mysql+mongo
    No resource identifier found for attribute 'showAsAction' in package 'android'
    No resource found that matches the given name 'Theme.AppCompat.Light'.
  • 原文地址:https://www.cnblogs.com/yang1182/p/9723020.html
Copyright © 2011-2022 走看看