我是靠谱客的博主 鲤鱼外套,最近开发中收集的这篇文章主要介绍2022.0831学习Java 笔记之Java常用类库(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

日期处理类

   日期是一个重要的单位,在Java之中如果用户要想取得当前的系统日期时间,一个最简单的方式就是直接输出 java.util.Date类对象,而这个Date类的构造方法:

  • 无参构造:public Date();
  • 有参构造:public Date(long date)

范例:操作Dater 

package cn.mldn.demo;

import java.util.Date;

public class TextDemo {
    public static void main(String[] args) throws Exception {
        Date date = new Date();
        System.out.println(date);
    }
}

结果:Sat Sep 03 16:21:01 CST 202

  但是Data可以取的当前的日期时间,只不过感觉上别扭了一点,很难读出

提示:关于long和Data的相互转型

        long数据类型一直强调的是:可以保存文件大小或者是日期时间数据,而这一特性在Data类上是很好的体现:

  • 构造方法:public Data(long data);
  • 返回long数据:public long getTime();

范例:相互转换

package cn.mldn.demo;

import java.util.Date;

public class TextDemo {
    public static void main(String[] args) throws Exception {
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.getTime());
    }
}

结果:Sat Sep 03 16:26:55 CST 2022
           1662193615698

  那么为了得到良好的体验,必须要想办法格式化Date类的数据显示结果。(Oracle的TO_CHAR()函数可以将日期或数字格式化为字符串),Java为此提供了一个专门的处理类:java.text.SimpleDateFormat类。
那么在SimpleDateFormat类之中主要使用如下几个操作方法:

  • 构造方法:public SimpleDateF ormat(String pattern);
  • 将Date格式化为 String: public final String format(Date date);
  • 将String格式化为 Date: public Date parse(String source) throws ParseException

  但是在实例化 SimpleDateFormat类的时候需要传入一些日期时间的标记,而所有的标记字母都在SimpleDateFormat类中定义:年(yyyy)、月(MM)、日(dd)、时(HH)、分(mm)、秒(ss)、豪秒(SSS)。

范例:将Date格式化为String

package cn.mldn.demo;

import java.util.Date;
import java.text.SimpleDateFormat;

public class TextDemo {
    public static void main(String[] args) throws Exception {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String str = sdf.format(date);
        System.out.println(str);
    }
}

结果:2022-09-03 16:39:46.474

那么到此为止已经清楚了基本数据类型、包装类、String、Date之间的转换:

  • 基本数据类型→ 包装类:自动装箱和自动拆箱;
  • 基本数据类型 → String:使用valueOf()方法;
  • long→ Date: Date类的构造方法;
  • Date→long:getTime()方法;
  • String→基本类型:包装类;
  • String → Date:java.text.SimpleDateFormat类、format()、parse()。

对象克隆

  克隆指的就是对象的复制操作,在Object类里面提供有示clone ()方法:
clone()方法:protected Object clone() throws CloneNotSupportedException;
要被克隆的对象所在的类需要去实现一个Cloneable接口。但是此接口里面没有包含任何的方法,所以此接口属于一个标识接口,表示一种能力。 

package cn.mldn.demo;

import java.util.Random;

class Person implements Cloneable{
    private String name;
    private int age;
    public Person(String name , int age){
        this.name = name;
        this.age = age;
    }
    protected Object clone() throws CloneNotSupportedException{
        return super.clone();   //调用父类对象克隆方法
    }
    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public String toString(){
        return "姓名" + this.name + ", 年龄" + this.age;
    }
}
public class TextDemo {
    public static void main(String[] args) throws Exception {
        Person perA = new Person("张三" , 19);
        Person perB = (Person)perA.clone();
        perB.setAge(91);
        System.out.println(perA);
        System.out.println(perB);
    }
}

结果:姓名张三, 年龄19
           姓名张三, 年龄91

提示:这是一个表示接口,表示能力

大数字操作类

  如果说现在有两个非常大的数字(超过了double范围)要进行数学的加法计算,你该怎么做?可以使用字符串保存数字,而后按照每个字符进行手工的处理数学计算。但是这样的复杂度非常的高,为此,在Java里面专门提供了一个java.math包,此包之中提供有两个大数字操作类:BigInteger(大整数操作类)、BigDecimal(大小数操作类)。

  1、 大整数操作类:BigInteger-
BigInteger是Number的子类,但是在使用的时候肯定不用转为Number类型,在BigInteger类之中定义的构造方法:public BigInteger(String val),因为数据量一大,肯定使用String表示;

范例:完成四则运算。 

package cn.mldn.demo;

import java.math.BigInteger;

public class TextDemo {
    public static void main(String[] args) throws Exception {
        BigInteger bigA = new BigInteger("4238903289023809238097890");
        BigInteger bigB = new BigInteger("98765432982");
        System.out.println(bigA.add(bigB));
        System.out.println(bigA.subtract(bigB));
        System.out.println(bigA.multiply(bigB));
        System.out.println(bigA.divide(bigB));
        BigInteger result [] = bigA.divideAndRemainder(bigB);
        System.out.println("商:" + result[0] + "余数:" + result[1]);
    }
}

结果:4238903289023908003530872
          4238903289023710472664908
          418657118709260407507709635950607980
          42918895417553
          商:42918895417553余数:11510164844

2、大小操作类:BigDecimal.
  此类的操作与BigInteger类基本是相同的,也提供有基本的数学计算,但是与这些数学计算相比,BigDecimal类有一个非常重要的功能。
  Math类之中的round()方法进行四舍五入操作过程之中,采用的是所有小数点全部进位,不能保留小数位,但很多时候这样的做法是不可取,例如:如果某家公司的年收入是按照亿计算,今年收获了5.321亿果就成了5亿,所以Math.round()是一个不可能使用的操作,这个时候只能够利用BigDecimal类完成。

  在BigDecimal类里面提供了一个除法操作:public BigDecimal divide(BigDecimal divisor,int scale , int roundingMode)

  • 第一个参数:被除数,此处也应该是BigDecimal类型;
  • 第二个参数:保留的小数位数;
  • 第三个参数:进位模式(public static final int POUND_HALF_UP)

范例:实现准确的四舍五入操作

package cn.mldn.demo;

import java.math.BigDecimal;

class MyMath{
    /**
     * 四舍五入操作,将由用户输入需要四舍五入操作的数据,同时设置保留小数位
     * @param num 包含的是小数数据
     * @param scale 保留小数位
     * @return 处理后的四舍五入数据
     */
    public static double round(double num , int scale){
        BigDecimal bigNum = new BigDecimal(num);    //只有变为BigDecimal才可以调用
        BigDecimal result = bigNum.divide(new BigDecimal(1) , scale , BigDecimal.ROUND_HALF_UP);
        return result.doubleValue();
    }
}
public class TextDemo {
    public static void main(String[] args) throws Exception {
        System.out.println(MyMath.round(69898.177878 , 2));
    }
}

  结果:69898.18

Arrays类

  “java.util. Arrays.sort()”是一个数组排序操作,实际上这一个操作就是调用了java.util包中Arrays类中的sort()方法完成的,而Arrays是一个数组操作的工具类(数组一般使用较少,所以此工具类意义不大)。
范例:使用Arays类。 

package cn.mldn.demo;

import java.util.Arrays;

public class TextDemo {
    public static void main(String[] args) throws Exception {
        int dataA[] = new int[] {1,2,3,4};
        int dataB[] = new int[] {1,2,3,4};
        System.out.println(Arrays.equals(dataA,dataB));
        Arrays.fill(dataA , 9);
        System.out.println(Arrays.toString(dataA));
    }
}

 结果:false
            [9, 9, 9]

最后

以上就是鲤鱼外套为你收集整理的2022.0831学习Java 笔记之Java常用类库(二)的全部内容,希望文章能够帮你解决2022.0831学习Java 笔记之Java常用类库(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部