Bootstrap

Java常用类库学习总结

常用类库

在这里插入图片描述

包装类

Java中不能定义基本数据类型的对象,为了能将基本数据类型当作对象处理,包装类由此诞生!
概念:
将基本数据类型封装在包装类中,以便把这些基本数据类型转换为对象进行处理
包装类以及所对应的基本数据类型:

包装类对应基本数据类型
Bytebyte
Integerint
Floatfloat
Characterchar
Shortshort
Longlong
Doubledouble
Booleanboolean

1.Integer类
属于Number类的子类
常用方法:

方法功能
valueOf(String str)返回保存指定的String值的Integer对象
parseInt(String str)返回包含在由str指定的字符串中的数字的等价整数值
toString()返回一个表示该 Integer 值的String对象(可以指定进制基数)
toBinaryString(int i)以二进制无符号整数形式返回一个整数参数的字符串表示形式
toHexString(int i)以十六进制无符号整数形式返回一个整数参数的字符串表示形式
toOctalString(int i)以八进制无符号整数形式返回一个整数参数的字符串表示形式
equals(Object IntegerObj)比较此对象与指定的对象是否相等
intValue()以int型返回此Integer对象
shortValue()以short型返回此Integer对象
byteValue()以 byte型返回此Integer对象
compareTo(Integer anotherInteger)在数字上比较两个 Integer对象。如果这两个值相等,则返回0;如果调用对象的数值小于anotherInteger的数值,则返回负值;如果调用对象的数值大于anotherInteger的数值,则返回正值

Integer类提供的四个常量:

  • MAX_VALUE:表示int类型可取的最大值(2^31-1)
  • MIN_VALUE: 表示int类型可取的最大值(-2^31)
  • SIZE:以二进制补码的形式表示int值的位数
  • TYPE:表示基本类型int的Class实例

2.Double类
常用方法:

方法功能
valueOf(String str)返回保存用参数字符串 str表示的double值的Double对象
parseDouble(String s)返回一个新的double值,该值被初始化为用指定String 表示的值,这与Double类的 valueOf方法一样
doubleValue()以double形式返回此Double对象
isNaN()如果此double值是非数字(NaN)值,则返回 true;否则返回false
intValue()以 int形式返回double值
byteValue()以 byte形式返回Double对象值(通过强制转换)
longValue()以long形式返回此 double的值(通过强制转换为long 类型)
compareTo(Double d)对两个Double对象进行数值比较。如果两个值相等,则返回0;如果调用对象的数值小于d的数值,则返回负值;如果调用对象的数值大于d的值,则返回正值
equals(Object obj)将此对象与指定的对象相比较
toString()返回此Double对象的字符串表示形式
toHexString(double d)返回double参数的十六进制字符串表示形式

Double类提供的四个常量:

  • MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数
  • MIN_EXPONENT: 返回int值,表示有限double变量可能具有的最小指数
  • NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量
  • POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值的常量

3.Boolean类
常用方法:

方法功能
booleanValue()将 Boolean对象的值以对应的boolean值返回
equals(Object obj)判断调用该方法的对象与obj 是否相等。当且仅当参数不是null,而且与调用该方法的对象一样都表示同一个boolean值的 Boolean对象时,才返回 true
parseBoolean(String s)将字符串参数解析为boolean值
toString()返回表示该boolean值的String对象
valueOf(String s)返回一个用指定的字符串表示的boolean值

4.Character类
常用方法:

方法功能
valueOf(char a)返回保存指定char值的Character对象
compareTo(Character anotherCharacter)根据数字比较两个 Character对象,若这两个对象相等则返回0
equals(Object obj)将调用该方法的对象与指定的对象相比较
toUpperCase(char ch)将字符参数转换为大写
toLowerCase(char ch)将字符参数转换为小写
toString()返回一个表示指定char值的String对象
charValue()返回此Character对象的值
isUpperCase(char ch)判断指定字符是否为大写字符
isLowerCase(char ch)判断指定字符是否为小写字符
isLetter(char ch)判断指定字符是否为字母
isDigit(char ch)判断指定字符是否为数字

Character类中表示特定字符的常量:

  • CONNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”
  • UNASSIGNED:返回byte型值,表示Unicode规范中的常规类别“Cn”
  • TITLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类别“Lt”

5.Number类
是所有数值型的父类(抽象类)
数值型包装类的共有方法:

方法功能
byteValue()以 byte形式返回指定的数值
intValue()以int形式返回指定的数值
floatValue()以float形式返回指定的数值
shortValue()以short形式返回指定的数值
longValue()以long形式返回指定的数值
doubleValue()以double 形式返回指定的数值

数字处理

Java中执行数学基本运算的Math类等
1.数字格式化
未格式化的数据遵循原则:

  1. 0.001 < |n| < 10000000,以常规小数形式表示
  2. (|n| < 0.001)&&(|n| > 10000000),使用科学记数法表示

格式化使用DecimalFormat类进行操作,它是NumberFormat类的子类
用处:
格式化十进制数字
DecimalFormat类中的特殊字符和说明:

字符说明
0表示阿拉伯数字,若该位无数字,显示0
#表示阿拉伯数字,若该位无数字,就不显示,若有,则显示字符
.小数或货币小数分隔符
-负号
分组分隔符
E分隔科学记数法的尾数和指数
%放在数字的前缀或后缀,将数字乘100显示百分数
\u2030放在数字的前缀或后缀,将数字乘1000显示千分数
\u00A4放在数字的前缀或后缀,作为货币记号
单引号,当上面特殊字符出现在数字中时应为特殊字符添加单引号,系统就会将此符号视为普通符号处理

2.Math类
语法:

Math.数学方法

1.三角函数方法:

  • public static double sin(double num):返回角的三角正弦
  • public static double cos(double num):返回角的三角余弦
  • public static double tan(double num):返回角的三角正切
  • public static double asin(double num):返回角的三角反正弦
  • public static double acos(double num):返回角的三角反余弦
  • public static double atan(double num):返回角的三角反正切
  • public static double toRadians(double angdeg):将角度转换为弧度
  • public static double toDegrees(double angrad):将弧度转换为角度

2.指数函数方法:

  • public static double exp(double num):用于获取e的num次方
  • public static double log(double num):用于取自然对数(ln num的值)
  • public static double log10(double num):用于取底数为10的num的对数
  • public static double sqrt(double num):用于取num的平方根
  • public static double cbrt(double num):用于取num的立方根
  • public static double pow(double num1,double num2):用于取num1的num2次方

3.取整函数方法:

  • public static double ceil(double num):返回大于等于参数的最小整数
  • public static double floor(double num):返回小于等于参数的最大整数
  • public static double rint(double num):返回与参数最接近的整数,如果存在两个相同接近的整数,则结果取偶数
  • public static int round(float num):将参数加上0.5后返回与参数最近的整数
  • public static long round(double num):将参数加上0.5后返回与参数最近的整数,然后强制转换为长整型

4.取最大值,最小值,绝对值函数方法

  • public static double max(double a,double b):取a,b中的最大值
  • public static int min(int a,int b):取a,b中的最小值
  • public static long min(long a,long b):取a,b中的最小值
  • public static float min(float a,float b):取a,b中的最小值
  • public static double min(double a,double b):取a,b中的最小值
  • public static int abs(int a):取a的绝对值
  • public static long abs(long a):取a的绝对值
  • public static float abs(float a):取a的绝对值
  • public static double abs(double a):取a的绝对值

Random类

语法:

Random r = new Random(seedvalue);

常见方法:

  • public int nextInt():返回一个随机整数
  • public int nextInt(int num):返回大于等于0且小于num的随机整数
  • public long nextLong():返回一个随机长整数值
  • public boolean nextBoolean():返回一个随机的布尔值
  • public float nextFloat():返回一个随机单精度浮点型值
  • public double nextDouble():返回一个随机双精度浮点型值
  • public double nextGaussian():返回一个概率密度为高斯分布的双精度浮点型值

BigInteger类

Java中用BigInteger类来处理更大的数字,支持任意精度的整数,它可以准确地表示任何大小的整数值而不会丢失信息。
语法:

BigInteger num = new BigInteger("2");

例子:

public class biginteger_use {
    public static void main(String[] args) {
        BigInteger num1  = new BigInteger("37243827493278");
        BigInteger num2  = new BigInteger("281618816626");
        System.out.println(num1.add(num2));
    }
}

常用方法:

  • public BigInteger add(BigInteger val):加法运算
  • public BigInteger subtract(BigInteger val):减法运算
  • public BigInteger multiply(BigInteger val):乘法运算
  • public BigInteger divide(BigInteger val):除法运算
  • public BigInteger remainder(BigInteger val):取余操作
  • public BigInteger[] divideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数
  • public BigInteger pow(int n):进行取参数的n次方操作
  • public BigInteger negate():取相反数
  • public BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作
  • public BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作
  • public BigInteger and(BigInteger val):做与操作
  • public BigInteger or(BigInteger val):做或操作
  • public int compareTo(BigInteger val):做数字比较操作
  • public boolean equals(Object x):当参数x是BigInteger类型的数字并且数值与对象实例的数值相等时,返回true
  • public BigInteger min(BigInteger val):返回较小的数值
  • public BigInteger max(BigInteger val):返回较大的数值

BigDecimal类

与BigInteger类都能进行大数字运算不同的是加入了小数的概念,它支持商业计算,任何精度的定点数,用来精确计算货币值。
构造方法:

  1. BigDecimal(double val):实例化时将双精度浮点型转换为BigDecimal类型
  2. BigDecimal(String val):实例化时将字符串形式转换为BigDecimal类型

常用方法:

  • public BigDecimal add(BigDecimal val):加法运算
  • public BigDecimal subtract(BigDecimal val):减法运算
  • public BigDecimal multiply(BigDecimal val):乘法运算
  • public BigDecimal divide(BigDecimal val,int scale,RoundingMode roundingMode):除法运算,方法中3个参数分别代表除数,商的小数点后的位数,近似处理模式

System类

属于JDk提供的系统类,被final修饰,不允许被继承,所有方法属于静态。
常用方法:

  • currentTimeMills():返回以毫秒为单位的当前时间
  • exit(int status):通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟子,该方法从不正常返回,可以将变量作为一个状态码,非零表示非正常终止,零表示正常
  • Map<String,String> getenv():返回一个不能修改的当前系统环境的字符串映射视图
  • getenv(String name):获取指定的环境变量值
  • getProperties():确定当前的系统属性
  • getProperty(String key):获取用指定键描述的系统属性
  • setIn(InputStream in):重新分配标准输入流

1.控制台输出字符

  1. 不会换行的输出:
System.out.print("输出内容");
  1. 可以自动换行的输出:
System.out.println("输出内容");

快捷输入:sout+回车

2.计时
System.currentTimeMills()方法可以获取1970年1月1日零点至今的毫秒数,是最常见的方法,可以利用该方法来记录程序的运行时间。
语法(例子):

long start = System.currentTimeMillis();
     ……
long end = System.currentTimeMillis();
System.out.println("所用时间为"+(end-start)+"毫秒");
import java.math.BigInteger;

public class biginteger_use {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        BigInteger num1  = new BigInteger("37243827493278");
        BigInteger num2  = new BigInteger("281618816626");
        System.out.println(num1.add(num2));
        System.out.println(num1.max(num2));
        long end = System.currentTimeMillis();
        System.out.println("所用时间为"+(end-start)+"毫秒");
    }
}

程序展示:
在这里插入图片描述

Scanner类

使用Scanner类可以达到程序输入的目的。
常用方法:

  • next():获取String输入并返回
  • nextBoolean():获取Boolean输入并返回
  • nextByte():获取值输入并返回Byte型
  • nextDouble():获取值输入并返回double型
  • nextFloat():获取值输入并返回float型
  • nextInt():获取值输入并返回int型
  • nextLine():获取值输入并返回String型
  • nextLong():获取值输入并返回Long型
  • nextShort():获取值输入并返回Short型
  • close():关闭扫描器

语法:

 Scanner sc = new Scanner(System.in);
        System.out.println("请你输入成绩:");
        int score = sc.nextInt();

例子:

import java.util.Scanner;

public class java_1 {
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入成绩:");
        int score = sc.nextInt();
        if (score >= 90)
        {
            System.out.println("A");
        }
        else if (score >= 80)
        {
            System.out.println("B");
        }
        else if (score >= 70)
        {
            System.out.println("C");
        }
        else if (score >= 60)
        {
            System.out.println("D");
        }
        else
        {
            System.out.println("你挂科了准备重考吧");
        }
    }
}

程序展示:
在这里插入图片描述

日期时间类

1.Data类
构造方法:

  1. Date():分配Date对象并初始化对象,以表示分配时间(精确到毫秒)
    语法:
Date time = new Date();
  1. Date(long date):分配Date对象并初始化对象,以表示自标准基准时间(即1970年1月1日 00:00:00GMT)起经过指定毫秒数date后的时间
    语法:
long time = System.currentTimeMills();
Date date = new Date(time);

常用方法:

  • after(Date when):测试当前日期是否在指定的日期之后
  • before(date when):测试当前日期是否在指定的日期之前
  • getTime():获得1970年1月1日 00:00:00GMT开始到现在所经过的毫秒数
  • setTime(long time):设置当前Date对象所表示的日期时间值,该值用来表示1970年1月1日 00:00:00GMT以后time毫秒的时间点

2.日期时间格式化
使用DateFormat类实现日期时间的输出
格式化风格:

  • SHORT:完全为数字
  • MEDIUM:较长
  • LONG:更长
  • FULL:完全指定

使用DateFormat可以自定义日期时间格式
语法:

import java.text.DateFormat;
DateFormat df = DateFormat.getDateInstance();

getDateInstance()方法获取所在国家或地区的标准日期格式
常用方法:

  • format(Date date):将一个Date对象实例格式化为日期/时间字符串
  • getCalendar():获取与此日期/时间格式器关联的日历
  • getDateInstance():获取日期格式器,该格式器具有默认语言环境的默认格式化风格
  • getDateTimeInstance():获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格
  • getInstance():获取为日期和时间使用SHORT风格的默认日期/时间格式器
  • getTimeInstance():获取时间格式器,该格式器具有默认语言环境的默认格式化风格
  • parse(String source):将字符串解析成一个日期,并返回这个日期的Date对象

例子:

import java.text.DateFormat;
import java.util.Date;

public class get_date_use {
    public static void main(String[] args) {
        DateFormat date = DateFormat.getInstance();
        System.out.println(date.format(new Date()));
        DateFormat date2 = DateFormat.getDateInstance(DateFormat.LONG);
        System.out.println(date2.format(new Date()));
        DateFormat date3 = DateFormat.getTimeInstance(DateFormat.LONG);
        System.out.println(date3.format(new Date()));
        DateFormat date4 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.SHORT);
        System.out.println(date4.format(new Date()));
    }
}

程序展示:
在这里插入图片描述
SimpleDateFormat类提供了19个格式化字符,让开发者自由编写
SimpleDateFormat的格式化字符:

字母日期或时间元素类型
GEra 标识符Text
yYear
M年中的月份Month
w年中的周数Number
W月中的周数Number
D年中的天数Number
d月份中的天数Number
F月份中的星期Number
E星期中的天数Text
aAM,PM标记Text
H一天中的小时数(0~23)Number
hAM,PM中的小时数(1~12)Number
k一天中的小时数(1~24)Number
KAM,PM中的小时数 (0~11)Number
m小时中的分钟数Number
s分钟中的秒数Number
S毫秒数Number
z时区General time zone
Z时区RFC 822 time zone

常用时间格式:

日期时间对应的格式
2021/01/01yyyy/MM/dd
2021.01.01yyyy.MM.dd
2021-01-01 01:01:01yyyy-MM-dd HH:mm:ss
2021年01月01日 01时01分01秒 星期一yyyy年MM月dd日 HH时mm分ss秒 EEEE
下午3时ah时
今年已过去了1天今年已过去了D天

例子:

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

public class get_date_use {
    public static void main(String[] args) {
        DateFormat date = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 EEEE");
        System.out.println(date.format(new Date()));
    }
}

程序展示:
在这里插入图片描述

Calendar类

由于在Date类的设计没有考虑到国际化,所以大部分方法都不被使用,而且很多方法也无法满足用户需求,因此JDK提供了Calendar日历类
其操作日历字段,这些字段和方法都被定义为protected
语法:

Calendar now = Calendar.getInstance();

Calendar类提供的常用字段及说明

字段名说明
DATEget和set的字段数字,指示一个月中的某天
DAY_OF_MONTHget和set的字段数字,指示一个月中的某天
DAY_OF_WEEKget和set的字段数字,指示一个星期中的某天
DAY_OF_WEEK_IN_MONTHget和set的字段数字,指示当前月中的第几个星期
DAY_OF_YEARget和set的字段数字,指示当前年中的天数
HOURget和set的字段数字,指示上午或下午的小时
HOUR_OF_DAYget和set的字段数字,指示一天中的小时
MILLISECONDget和set的字段数字,指示一秒中的毫秒
MINUTEget和set的字段数字,指示一小时中的分钟
MONTH指示月份的get和set的字段数字
SECONDget和set的字段数字,指示一分钟中的秒
time日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间1970年1月1日 00:00:00后经过的时间
WEEK_OF_MONTHget和set的字段数字,指示当前月中的星期数
WEEK_OF_YEARget和set的字段数字,指示当前年中的星期数
YEAR指示年的get和set的字段数字

Calendar类的常用方法:

  • add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • after(Objecrt when):判断此Calendar对象表示的时间是否在指定Object表示的时间之后,返回判断结果
  • before(Object when):判断此Calendar对象表示的时间是否在指定Object表示的时间之前,返回判断结果
  • get(int field):返回给定日历字段的值
  • getInstance():使用默认时区和语言环境获得的一个日历
  • getTime():返回一个表示此Calendar对象时间值(从历元至现在的毫秒偏移量)的Date对象
  • getTimeInMills():返回此Calendar对象的时间值,以毫秒为单位
  • roll(int field,boolean up):在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段
  • set(int field,int value):将给定的日历字段设置为给定值
  • set(int year,int month,int date):设置日历字段YEAR,MONTH,DAY_OF_MONTH的值
  • set(int year,int month,int date,int hourofday,int minute):设置日历字段YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE的值
  • set(int year,int month,int date,int hourofday,int minute,int second):设置日历字段YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE,SECOND的值
  • setTime(Date date):使用给定的Date对象设置此Calendar对象的时间
  • setTimeInMills(long mills):使用给定的long值设置此Calendar对象的当前时间值
    例子:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class get_date_use {
    public static void main(String[] args) {
        System.out.println("\t-----中华人民共和国成立72周年倒计时-----\t");
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        String today = sdf.format(date);
        System.out.println("今天是:"+today);
        long time_1970 = date.getTime();
        Calendar c = Calendar.getInstance();
        //月是从0开始算的
        c.set(2021,10-1,1);
        long time_use = c.getTimeInMillis();
        //计算相差的天数
        long day = (time_use-time_1970)/(1000*60*60*24);
        System.out.println("距离2021年10月1日还有:"+day+"天");
    }
}

程序展示:
在这里插入图片描述

Runtime类

Runtime是JDK提供的运行时类,可以用来获取运行时间。
常用方法:

  • getRuntime():返回与当前Java应用程序相关的运行时对象
  • exec(String command):在单独的进程中执行指定的字符串命令
  • exec(String[] cmdarray):在单独的进程中执行指定命令和指令参数
  • totalMemory():返回Java虚拟机中的内存总量
  • freeMemory():返回Java虚拟机中的空闲内存量
  • load(String filename):加载作为动态库的指定文件名
  • loadLibrary(String libname):加载具有指定库名的动态库

执行本地命令
本地命令指操作系统的命令
Runtime类的exec()方法重载形式:

  1. exec(String command)
  2. exec(String[] cmdarray)

command:要执行的系统命令
cmdarray:要执行的命令和相应的命令参数
第一种重载方式的代码:

Runtime.getRuntime().exec("java hello.java");

第二种重载方式的代码:

String command[] = {"javac","hello.java"};
Runtime.getRuntime().exec(command);

开发可以使用getInputStream()方法获取进程返回的信息
Process类常用方法:

  • destroy():结束进程
  • getErrorStream():获取进程的错误流
  • getInputStream():获取进程的输入流
  • getOutputStream():获取进程的输入流

例子(让windows系统执行help命令):
P205页例子

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class work5 {
    public static void main(String[] args) {
        Runtime r = Runtime.getRuntime();
        try {
            Process p = r.exec("help");
            InputStream is = p.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = null;
            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

程序展示:
在这里插入图片描述
可能是我的输出流有问题,和书上输出结果不一样,试了网上的几个方法还是没解决。

;