java基础-第十章 常用类库

java基础

待补



前言

java中有众多封装好的包和类以供调用,这篇文章介绍一下一些常用的类。


1.包装类

包装类即把基本数据类型转换为对象进行管理,其内部提供了很多便捷的方法,以及常量(比如Integer中可使用MAX_VALUE获取int可表示的最大值)

1.1整形包装类

四大整形基础类型对应的包装类其内部的方法大致相同,区别只是封装不同类型的数据,所以这里仅用Integer举例即可。

1.1.1常用方法

转换方法

parseInt(String s)

将一个 String 转换为 int 类型的数值。

toString(int i)

将一个 int 值转换为 String。

toBinaryString(int i)

将一个 int 值转换为二进制的 String 表示。

toOctalString(int i)

将一个 int 值转换为八进制的 String 表示。

toHexString(int i)

将一个 int 值转换为十六进制的 String 表示。

比较方法

compare(int x, int y)

比较两个 int 值并返回它们的比较结果。

max(int a, int b)

返回两个 int 值中的最大值。

min(int a, int b)

返回两个 int 值中的最小值。

数值操作

sum(int a, int b)

返回两个 int 值的和。

reverse(int i)

将一个 int 值的位进行反转。

rotateLeft(int i, int distance)

将一个 int 值的位向左旋转。

rotateRight(int i, int distance)

将一个 int 值的位向右旋转。

bitCount(int i)

返回 int 值中设置的位数(即值为 1 的位)。

其他方法

valueOf(int i)

返回一个表示指定 int 值的 Integer 实例。

valueOf(String s)

返回一个表示指定 String 表示的 int 值的 Integer 实例。

parseInt(String s, int radix)

将一个 String 转换为 int 类型的数值,其中 radix 指定了基数。

1.2浮点数包装类

两种浮点数的包装类型方法大致相同,这里以Double为例。

1.2.1常用方法

转换方法

parseDouble(String s)

将一个 String 转换为 double 类型的数值。

toString(double d)

将一个 double 值转换为 String。

valueOf(double d)

返回一个表示指定 double 值的 Double 实例。

valueOf(String s)

返回一个表示指定 String 表示的 double 值的 Double 实例。

数值操作

isNaN(double v)

判断给定的 double 值是否为 NaN (Not-a-Number)。

isInfinite(double v)

判断给定的 double 值是否为无穷大。

doubleToLongBits(double value)

将 double 值转换为其 IEEE 754 浮点表示的位序列。

longBitsToDouble(long bits)

将 IEEE 754 浮点表示的位序列转换为 double 值。

compare(double d1, double d2)

比较两个 double 值并返回它们的比较结果。

sum(double a, double b)

返回两个 double 值的和。

max(double a, double b)

返回两个 double 值中的最大值。

min(double a, double b)

返回两个 double 值中的最小值。

常量

Double.MAX_VALUE

最大的有限的 double 值。

Double.MIN_VALUE

最小的正数 double 值。

Double.NEGATIVE_INFINITY

负无穷大。

Double.POSITIVE_INFINITY

正无穷大。

Double.NaN

不是一个数字(NaN)。

1.3Boolean类

1.3.1常用方法

转换方法

parseBoolean(String s)

将一个 String 转换为布尔类型的数值。

toString(boolean b)

将一个布尔值转换为 String。

valueOf(boolean b)

返回一个表示指定布尔值的 Boolean 实例。

valueOf(String s)

返回一个表示指定 String 表示的布尔值的 Boolean 实例。

比较方法

equals(Object obj)

比较两个 Boolean 对象是否相等。

compareTo(Boolean anotherBoolean)

将此 Boolean 实例与另一个 Boolean 实例进行比较。

其他方法

booleanValue()

将 Boolean 对象的值转换为基本类型的布尔值。

hashCode()

返回此 Boolean 对象的哈希码。

toString()

返回 Boolean 对象的字符串表示。

getBoolean(String name)

返回指定系统属性的布尔值,如果该属性不存在,则返回默认值 false。

1.4Character类

字符类型对应包装类。

1.5Number类

所有数字类型的封装类有一个共同的父类,即Number类

1.6包装类缓存机制

Java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存、提高性能的功能。
Java 基本类型的包装类的大部分都提供了对象的缓存,实现方式是在类初始化时提前创建好会频繁使用的包装类对象,当需要使用某个包装类的对象时,如果该对象包装的值在缓存的范围内,就返回缓存的对象,否则就创建新的对象并返回。
在这里插入图片描述

实验:

Integer a=100;  
Integer b=100;  
System.out.println(a==b);  
//输出true,即当值在缓存区间时,获取的是同一个包装类对象  
  
  
Integer a=130;  
Integer b=130;  
System.out.println(a==b);  
//输出False,即当值超出缓存范围时,会单独创建对象存储。

补充:如果是使用构造器来获取包装类对象,则一定是新建出来的对象(即使值在缓存范围内)

2.数字处理

2.1Math类

math类提供很多数学函数方法,比如三角函数,指数函数等,可根据需要使用。
常用方法:

求绝对值    Math.abs(-10) --> 10  
四舍五入取整    Math.round(2.6) --> 3  
求两个数最大值    Math.max(2,10) --> 10  
求两个数最小值    Math.min(2,10) --> 2  
随机数    Math.random() --> 0 ~ 1之间任意小数  
求平方根    Math.sqrt(16)> 4  
求幂    Math.pow(2,3)> 8

2.2Random类

该类用于生成各种类型的随机数
请添加图片描述

该类生成的随机数是伪随机数(使用一个公式来生成随机数字,公式是固定的,只是传入的值在改变所以生成的随机数改变,也就是说如果提前知道传入值,那最终生成的结果也是一定的),一般是以运行时当前时间为种子生成随机数,但也可用在创建Random对象时自行传入种子,传入相同的种子其生成的随机数是一致的,所以默认情况下该类使用当前时间作为种子,因为不会存在相同的时间值。(但运行速度太快也可能出现相同随机数)。

3.System类

该类提供系统层面的操作方法,这些方法都是静态方法,且该类被final修饰(无法被继承)

3.1常用方法

系统属性

getProperties()

返回一个包含当前系统属性的 Properties 对象。

getProperty(String key)

返回与指定键关联的系统属性的字符串值。

setProperty(String key, String value)

设置系统属性。

输入/输出流

in, out, err

分别提供对标准输入、标准输出和标准错误输出流的访问。

垃圾回收

gc()

请求 JVM 执行垃圾回收。

线程相关

currentTimeMillis()

返回当前时间的毫秒数,常用于计时。

nanoTime()

返回当前时间的纳秒数,用于高精度计时。

安全退出

exit(int status)

终止当前正在运行的 Java 虚拟机,status 参数表示退出状态码。

数组拷贝

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

将数组的一部分复制到另一个数组。

线程挂起

Thread.sleep(long millis)

让当前线程暂停执行指定的毫秒数。

环境变量

getenv(String name)

返回指定名称的环境变量的值。

线程堆栈跟踪

identityHashCode(Object obj)

返回对象的唯一标识符哈希码。

内存管理

totalMemory(), freeMemory(), maxMemory()

分别返回 JVM 的总内存、可用内存和最大可用内存。

线程本地随机数生成器

setSecurityManager(SecurityManager sm)

设置安全管理器,以控制对敏感系统操作的访问。

4.Scanner类

用于扫描用户输入

5.日期时间类

5.1Date类

可用用来表示日期时间,这里说的是java.util包下的Date类,不是java.sql下的。

5.1.1构造方法

要使用Date类,需要先使用构造器创建对象。

Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数

5.1.2常用方法

getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
setTime(long date):通过毫秒值设置时间
toString():转换为字符串,格式如:Mon Jun 20 18:31:56 CST 2022
toLocaleString():转换为字符串,格式如:2022年6月20日 下午6:32:44

    //今天的时间      
    Date date1 = new Date();  
    System.out.println(date1.toString());//打印日期  
        //输出结果:Mon Jun 20 18:31:56 CST 2022  
    System.out.println(date.toLocaleString());//打印日期,此方法虽已为过时的方法,但是比toString看起来更符合我们日常。  
        //输出结果:2022年6月20日 下午6:32:44  
    //昨天的时间  
    Date date2 = new Date(date1.getTime()-(60*60*24*1000)); //getTime() 返回从1970年1月1日到现在的毫秒数。  
    //after、before 方法  
    boolean b1 = date1.after(date2); //返回true 表示 date1 在 date2 后面  
    //compareTo方法  
    int d=date2.compareTo(date1);//返回-1表示date2比date小;1表示date2比date大;0表示date2和date一样大。  
    //equals方法  
    //比较是否相等  返回true  or  false。

5.2SimpleDateFormat类(Date与String之间的转换)

该类可以使Date对象转换为自定义时间格式的字符串,也可以反过来解析字符串为Date对象。

5.2.1构造方法

public SimpleDateFormat():普通空参构造器
public SimpleDateFormat(String pattern):可以在创建对象时就指定使用的日期格式

5.2.2常用方法

public final String format(Date date):将日期格式化成日期/时间字符串

public Date parse(String source):从给定字符串的开始解析文本以生成日期

public class SimpleDateFormatDemo {  
  
  public static void main(String[] args) throws ParseException {  
    //格式化:从 Date 到 String  
    Date d = new Date();  
    //        SimpleDateFormat sdf = new SimpleDateFormat();  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");  
    String s = sdf.format(d);  
    System.out.println(s);  
    System.out.println("--------");  
  
    //从 String 到 Date  
    String ss = "2048-08-09 11:11:11";  
    //ParseException  
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    Date dd = sdf2.parse(ss);  
    System.out.println(dd);  
  }  
}

5.2.3格式指定

SimpleDateFormat 的日期时间格式字符串是由一系列的模式字母组成的。这些模式字母代表日期时间的不同部分,如年、月、日、小时、分钟、秒等。下面是一些常见的模式字母:

y:年份(例如,“yy” 表示年份的后两位,“yyyy” 表示完整的年份)。

M:月份(1 到 12 或 01 到 12)。

d:日期(1 到 31 或 01 到 31)。

H:小时(0 到 23 或 00 到 23)。

h:小时(1 到 12 或 01 到 12)。

m:分钟(0 到 59或00到59)。

s:秒(0 到 59 或 00 到 59)。

S:毫秒。

你可以根据需要组合这些模式字母来创建自定义的日期时间格式。例如,“yyyy-MM-dd HH:mm:ss” 表示包含年、月、日、小时、分钟和秒的日期时间格式。

5.3Calendar类

是一个抽象类,作为上述Date类的替代方案(因为Date类在设计时没考虑国际化,所以很多方法现在来看过时了)。
常用方法:

    Calendar calendar = Calendar.getInstance(); //静态方法  
    System.out.println(calendar.getTime().toLocaleString());//输出现在的时间  
    System.out.println(calendar.getTimeInMillis()); //返回1970年1月1日到现在的毫秒数  
    //获取时间信息  
    int year = calendar.get(Calendar.YEAR); //月MONTH  天: DAY_OF_MONTH  小时: HOUR_OF_DAY(24)HOUR12(12) 分钟:MINUTE 秒:SECOND。  
    //其中MONTH 范围是0-11,所以用的时候MONTH+1。  
    //修改时间  
    Calendar calendar2 = Calendar.getInstance()  
    calendar2.set(Calendar.DAY_OF_MONTH,5);//表示将天数改为5.  
    //add方法修改时间  
    calendar2.add(Calendar.HOUR,1); // 加一个小时。  
    //获取当前月份中的最大天数和最小天数。  
    int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);   
    int min  = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);

5.4jdk8新增时间类

	LocalDate 表示日期(年月日)

	LocalTime 表示时间(时分秒)

	LocalDateTime 表示时间+ 日期 (年月日时分秒)

5.4.1LocalDateTime创建方法

public static LocalDateTime now():获取当前系统时间

public static LocalDateTime of (年, 月 , 日, 时, 分, 秒):使用指定年月日和时分秒初始化一个LocalDateTime对象

public class JDK8DateDemo2 {  
    public static void main(String[] args) {  
        LocalDateTime now = LocalDateTime.now();  
        System.out.println(now);  
  
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 11, 11, 11);  
        System.out.println(localDateTime);  
    }  
}

5.4.2LocalDateTime获取方法

在这里插入图片描述

5.4.3LocalDateTime转换方法

![[./_resources/11.第十一章常用类库.resources/unknown_filename.2.png]]

5.4.4LocalDateTime格式化和解析

![[./_resources/11.第十一章常用类库.resources/unknown_filename.3.png]]

5.4.5LocalDateTime增加或者减少时间的方法

![[./_resources/11.第十一章常用类库.resources/unknown_filename.4.png]]

5.4.6LocalDateTime修改方法

![[./_resources/11.第十一章常用类库.resources/unknown_filename.5.png]]

5.5计算时间间隔

5.5.1Period

常用方法
![[./_resources/11.第十一章常用类库.resources/unknown_filename.6.png]]

示例:

/**  
 *  计算两个时间的间隔  
 */  
public class JDK8DateDemo9 {  
    public static void main(String[] args) {  
        //public static Period between(开始时间,结束时间)  计算两个"时间"的间隔  
  
        LocalDate localDate1 = LocalDate.of(2020, 1, 1);  
        LocalDate localDate2 = LocalDate.of(2048, 12, 12);  
        Period period = Period.between(localDate1, localDate2);  
        System.out.println(period);//P28Y11M11D  
  
        //public int getYears()         获得这段时间的年数  
        System.out.println(period.getYears());//28  
        //public int getMonths()        获得此期间的月数  
        System.out.println(period.getMonths());//11  
        //public int getDays()          获得此期间的天数  
        System.out.println(period.getDays());//11  
  
        //public long toTotalMonths()   获取此期间的总月数  
        System.out.println(period.toTotalMonths());//347  
  
    }  
}

5.5.2Duration

常用方法
![[./_resources/11.第十一章常用类库.resources/unknown_filename.7.png]]

示例:

/**  
 *  计算两个时间的间隔  
 */  
public class JDK8DateDemo10 {  
    public static void main(String[] args) {  
        //public static Duration between(开始时间,结束时间)  计算两个“时间"的间隔  
  
        LocalDateTime localDateTime1 = LocalDateTime.of(2020, 1, 1, 13, 14, 15);  
        LocalDateTime localDateTime2 = LocalDateTime.of(2020, 1, 2, 11, 12, 13);  
        Duration duration = Duration.between(localDateTime1, localDateTime2);  
        System.out.println(duration);//PT21H57M58S  
        //public long toSeconds()           获得此时间间隔的秒  
        System.out.println(duration.toSeconds());//79078  
        //public int toMillis()               获得此时间间隔的毫秒  
        System.out.println(duration.toMillis());//79078000  
        //public int toNanos()             获得此时间间隔的纳秒  
        System.out.println(duration.toNanos());//79078000000000  
    }  
}

6.Runtime类型

该类可以用来对当前运行环境进行一些简单的操作,比如执行本地命令(在window上执行cmd命令,linux上执行shell命令),查看运行时的内存情况等。

6.1获取Runtime实例

Runtime实例无法使用new创建,只可以使用**getRuntime()**方法获取

6.2执行本地命令

内部提供**exec()**方法来执行操作系统命令,甚至可以使用java程序调用windows中的shutdown指令来关闭计算机

6.3查看内存

获取Runtime对象后可以使用totalMemory()方法查看总内存,使用freeMemory()方法查看空闲内存。


总结

本文章介绍了一些java中常用的类库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值