常用类库

 java.util.Object

java.lang.Math

java.util.Arrays

java.util.Date

java.math.BigDecimal

java.text.DateFormat

java.util.Calendar

java.lang.System

java.lang.String



一、java.util.Objects

类Object是类层次结构的根。 每个类都有Object作为超类。 所有对象(包括数组)都实现此类的方法。

构造方法:Object()

其中包含了很多static静态⽅法⽤于在操作前检查某些条件 这些⽅法⽤于不同场景的需求:

    Objects.equals():判断某个其他对象是否“等于”此对象

    Objects.isNull() :如果提供的参数是null,返回 true,否则返回 fals

    Objects.nonNull() :如果提供的参数是非null,返回 true,否则返回 false

    Objects.requireNonNull():检查指定的对象引用是否不是null

    Objects.toString(Object o, String nullDefault):如果第一个参数不是 null ,则返回在第一个参数上调用 toString的结果,否则返回第二个参数。

    Objects.hashCode(Object o):返回对象o的哈希码

    适⽤于:⽅法需要外部传过来⼀个对象进⾏操作,为了限制传来的对象不为空,若为空则抛异常



二、java.lang.Math

类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数。

常用方法:

    Math.abs() :返回对应参数的绝对值

    Math.min() :返回两数中较小的一个

    Math.max() :返回两数中较大的一个

    Math.round() :返回参数的四舍五入数字

    Math.floor() :返回小于或等于参数的最大整数

    Math.ceil() :返回大于或等于参数的最小整数



三、java.util.Arrays

    常用方法

    Math.abs()对数组进⾏的⼀系列操作

    Arrays.toString(数组)

    ⽤于输出,遍历输出数组内容

    Arrays.sort(数组) 排序

    Arrays.binarySearch(数组, 下标) ⼆分查找

    Arrays.copyof(原数组,新⻓度) ⽤于进⾏数组动态扩容



四、java.util.Date

Date类表示特定的时刻,精度为毫秒。

    注意:很多API都已过时,不适合国际化

从JDK1.1开始可以⽤Calendar在⽇期和时间字段之间进⾏转换

DateFormat代替Date进⾏格式化和解析⽇期字符串

范例代码

import java.util.Date;

public class DateDemo {

public static void main(String[] args) {

    //创建当前时间的data

    Date date = new Date();

    //打印当前⽇期(默认打印toString⽅法,Data类已经将toString⽅法进⾏了重写)

    //打印格式 "EEE MMM dd HH:mm:ss zzz yyyy";

    System.out.println(date.toString());

    //根据当前时刻往前倒退⼀个⼩时

    long time=date.getTime()-(1*60*60*1000);

    Date date2 = new Date(time);

    System.out.println(date);//当前时间

    System.out.println(date2);//当前倒推⼀个⼩时

    }

}



五、java.math.BigDecimal

java在float和double类型的运算时可能会有误差,为了实现==精准运算==,需要使用BigDecimal类。在控制台输出0.1+0.2会发现float和double的运算误差

构造方法

public BigDecimal(String val){ }

常⽤⽅法

这些运算⽅法不会影响参与运算的数据本身,运算的结果会被封装为⼀个新的BigDecimal对象,这个 对象会通过return返回出去)

    public BigDecimal add(BigDecimal augend) //加法运算 

    public BigDecimal subtract(BigDecimal augend) //减法运算 

    public BigDecimal multiply(BigDecimal augend) //乘法运算 

    public BigDecimal divide(BigDecimal augend) //除法运算



六、java.text.DateFormat

⽤于格式化和解析⽇期字符串

范例代码

package test;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateFormatDemo {

    public static void main(String[] args) throws ParseException {

        //  DateFrormat

        /**

        * y:年

        * M:月

        * d:日

        * H:时

        * m:分

        * s:秒

        * 2020-07-26 12:08 47

        */

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");

        String text = format.format(new Date());//将Date对象转换为格式化的字符串

        System.out.println(text);

        //parse:将字符串转换为日期对

        Date mydate = format.parse("1998-02-14 06:00 00");

        System.out.println("date");

        //例如要计算一个人货了多少天,可以根据其生日创建一个时间戳,用当前时间减去它,将毫秒再做转换

        System.out.println((new Date().getTime()-mydate.getTime())/1000/60/60/24);

    }

}



七、java.util.Calendar

解决了Date不能国际化的问题

范例代码

package test;

import java.time.DayOfWeek;

import java.util.Calendar;

import java.util.Date;

public class CalendarDemo {

    public static void main(String[] args) {

        //Calendar

        //set get add比较常用

        Calendar c1 = Calendar.getInstance();//不能直接new

        c1.set(Calendar.YEAR,2021);//改变的是当前对象,不影响系统的日历

        int year = c1.get(Calendar.YEAR);//获取日历里的年

        System.out.println(year);

        //注意日历月份是从0-11;国外从星期日开始算第一天,星期一是2而不是1

        int dayOfWeek = c1.get(Calendar.DAY_OF_WEEK);

        System.out.println(dayOfWeek);

        //⼀些计算⽇历⽅法,通过操作常量来修改

        c1.add(Calendar.YEAR,10);

        System.out.println(c1.get(Calendar.YEAR));

        ///getTime 获取⽇历时间表示的Date对象,和Date的getTime()不同

        Date d = c1.getTime();

        //getActualMaxmun 快速获取各个字段最⼤的值

        int m =c1.getActualMaximum(Calendar.MONTH);

        System.out.println(m);

        int day = c1.get(Calendar.DAY_OF_YEAR);//当前年最大天数

        System.out.println(day);

    }

}


八、java.lang.System

    java.lang.System 提供很多类字段和类⽅法,它==⽆法实例化==。 包括标准输⼊,标准输出和错误输出流;

    访问外部定义的属性和环境变量;

    加载⽂件和库的⽅法;

    以及⽤于快速复制阵列的⼀部分的实⽤⽅法。

    since 1.0

    public static void ==exit==(int status) 

    终⽌当前运⾏的Java虚拟机

    此⽅法调⽤类```Runtime```的 exit ⽅法。

    此⽅法永远不会正常返回。

    呼叫 System.exit(n)实际上等同于呼叫: Runtime.getRuntime().exit

- 参数

        status  退出状态。该参数⽤作状态代码;按照惯例,⾮零状态代码表示异常终⽌。

    public static long currentTimeMillis() 

以毫秒为单位返回当前时间

    请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更⼤。 例如,许多操作系统以⼏⼗毫秒为单位测量时间。

    结果

        当前时间与UTC时间1970年1⽉1⽇午夜之间的差异,以毫秒为单位。

    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

    将指定源数组中的数组从指定位置开始复制到⽬标数组的指定位置。复制的组件数等于length参数。

- 参数

    - src源数组。 

    - srcPos源数组中的起始位置。

    -  dest⽬标数组。

    -  destPos⽬标数据中的起始位置。

    -  length要复制的数组元素的数量。


九、java.lang.String

    public final class String

- String类表示字符串。 Java程序中的所有字符串⽂字(例如 "abc" )都实现为此类的实例。

- 字符串是不变的; 它们的==值在创建后⽆法更改==。

- 字符串缓冲区⽀持可变字符串。 因为String对象是不可变的,所以可以共享它们。


字符串常量池

方法区(Method Area) ,又称永久代(Permanent Gener ation),又称非堆区(Non-Heap space)

方法区,又称永久代(Permanent Generation) ,常称为PermGen,位于非堆空间,又称非堆区( Non-Heap space)。

方法区是被所有线程共享。

- 所有字段和方法字节码,以及-些特殊方法如构造函数,接口代码也在此定义。

- 简单说,所有定义的方法的信息都保存在该区域,此区属于共享区间。

- 这些区域存储的是:静态变量+ 常量+类信息(构造方法/接口定义) +运行时常量池。

但是,实例变量存在堆内存中,和方法区无关。

以上,只是逻辑上的定义。在HotSpot中,方法区仅仅只是逻辑上的独立,实际上还是包含在Java堆中,也是就说,方式区

在物理上属于Java堆区中的一部分,而永久区(Permanent Generation)就是方法区的实现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。