11.1 包装类
Java是一种面向对象语言,但在Java中不能定义基本数据类型的对象,为了能将基本数据类型视为对象进行处理,Java提供了包装类的概念,他主要是将基本数据类型封装在包装类中,如int类型的包装类Integer、boolean型的包装类Boolean等,这样便可以把这些基本数据类型转换为对象进行处理。Java中的包装类及其对应的基本数据类型如表所示:
11.1.1 Integer类
Integer类是Java中表示整数的类。它是基本数据类型int的封装类,提供了许多操作整数的方法。可以使用Integer类的构造函数将字符串转换为整数,也可以使用Integer类的静态方法进行进制转换、最大最小值的比较等操作。
以下是Integer类的一些常用方法:
1.parseInt(String s): 将字符串转换为整数。
2.toString(int i): 将整数转换为字符串。
3.valueOf(int i): 返回一个表示指定整数值的Integer对象。
4.intValue(): 返回Integer对象的整数值。
5.compareTo(Integer anotherInteger): 比较两个整数的大小。
6.equals(Object obj): 比较两个整数是否相等。
7.max(int a, int b): 返回两个整数中较大的值。
8.min(int a, int b): 返回两个整数中较小的值。
9.toBinaryString(int i): 以二进制无符号整数形式返回一个整数参数的字符串表示形式10.toHexString(int i) 方法:以十六进制无符号整数形式返回一个整数参数的字符串表示形式。11.toOctalString(int i) 方法:以八进制无符号整数形式返回一个整数参数的字符串表示形式。
例题11.1:Integer类的常用方法
Integer 类提供了以下四个常量:
MAX_VALUE:表示 int 类型的最大值,即 2147483647。
MIN_VALUE:表示 int 类型的最小值,即 -2147483648。
SIZE:用来以二进制补码形式表示int值的位数TYPE:表示基本类型int的Class实例
例题11.2:查看Integer类的常量值
11.1.2 Double类
Double 类是 Java 中用于表示双精度浮点数的包装类。它提供了一系列方法来进行浮点数的操作和计算。下面是 Double 类的一些常用方法和特点:
1.parseDouble(String s):将字符串参数解析为双精度浮点数并返回。如果字符串无法解析为有效的浮点数,则抛出 NumberFormatException 异常。
2.valueOf(double d):返回一个包含指定的 double 值的 Double 对象。
3.doubleValue():返回此 Double 对象的原始 double 值。
4.toString():将 Double 对象转换为字符串表示形式。
5.isNaN(double d):判断给定的 double 值是否为 NaN (Not-a-Number)。
6.isInfinite(double d):判断给定的 double 值是否为无穷大。
7.compareTo(Double anotherDouble):将此 Double 对象与另一个 Double 对象进行比较。
例题11.3:double类的常用方法
Double 类还提供了一些静态方法和常量,用于执行数学运算、获取特殊值(如正无穷大、负无穷大和 NaN)等。通过使用 Double 类,可以方便地进行浮点数的计算和操作。
Double 类主要提供以下常量:
MAX_VALUE:表示 double 类型的最大正值,约为 1.7976931348623157e+308。
MIN_VALUE:表示 double 类型的最小正非零值,约为 4.9e-324。
POSITIVE_INFINITY:表示正无穷大,用于表示超过 Double.MAX_VALUE 的值。
NEGATIVE_INFINITY:表示负无穷大,用于表示小于 Double.MIN_VALUE 的值。
11.1.3 Boolean类
Boolean类是Java中的一个包装类,用于表示布尔类型的数据。它提供了一些方法来处理和操作布尔值。
以下是Boolean类的一些常用方法:
1.booleanValue():将Boolean对象转换为对应的布尔值。
2.equals(Object obj):判断当前Boolean对象是否与指定对象相等。
3.parseBoolean(String s):将字符串转换为对应的布尔值。
4.toString():将Boolean对象转换为字符串。
5.valueOf(String s):返回一个用指定的字符串表示的boolean值。
例题11.4:Boolean类的常用方法
11.1.4 Character类
Character类是Java中的一个包装类,用于表示字符类型的数据。它提供了一些方法来处理和操作字符。
例题11.5:Character类的常用方法
![](https://i-blog.csdnimg.cn/blog_migrate/650656d9954d8fa35aa2a9fc6976eec7.png)
11.1.5 Number类
在Java中,没有直接称为"Number"的类。但是Java提供了一组包装类(Wrapper classes),用于封装基本数据类型,其中包括与数字相关的类。以下是与数字相关的包装类:
11.2 数字处理
数字处理是指在计算机编程中对数字数据进行操作、计算和转换的过程。它涉及到对各种类型的数字进行处理,包括整数、浮点数、小数等。数字处理的目的是为了实现各种数学运算、数据分析和逻辑判断等功能。
11.2.1 数字格式化
数字格式化是一种将数字按照特定的格式进行显示或输出的过程。通过数字格式化,我们可以控制数字的小数位数、千位分隔符、货币符号等,以使其更易于阅读和理解。
在编程中,数字格式化通常涉及到将数值转换为字符串,并应用一定的格式规则。不同编程语言和框架提供了不同的方式来进行数字格式化,常见的方法包括使用格式化字符串、使用内置函数或方法,以及使用专门的数字格式化库。
DecimalFormat 类是 Java 中用于数字格式化的类,它提供了一种方便的方式来将数字格式化为特定的模式。通过 DecimalFormat 类,我们可以控制数字的小数位数、千位分隔符、货币符号等。
例题11.6:DecimalFormat 类的常用方法
11.2.2 Math类
Math 类是 Java 中的一个数学工具类,它提供了各种数学相关的静态方法,用于执行常见的数学运算和计算数学函数。
Math 类的数学方法可以大致分为以下四大类别:分别为三角函数方法,指数函数方法,取整函数方法,以及最大值、最小值和绝对值函数方法。
三角函数方法:
public static double sin(double a):返回给定角度的正弦值。
public static double cos(double a):返回给定角度的余弦值。
public static double tan(double a):返回给定角度的正切值。
public static double asin(double a):返回给定值的反正弦值。
public static double acos(double a):返回给定值的反余弦值。
public static double atan(double a):返回给定值的反正切值。
例题11.7:在Java代码中进行三角函数运算
2.指数函数方法
public static double exp(double a):返回指定数的指数值。
public static double log(double a):返回指定数的自然对数值(以 e 为底)。
public static double log10(double a):返回指定数的以 10 为底的对数值。public static double sqrt(double a):用于取a的平方根,其中a的值不能为负数。
public static double cbrt(double a):用于取a的立方根。
public static double pow(double a,double b):用于取a的b次方。
取整函数方法:
public static double ceil(double a):向上取整,返回大于或等于指定数的最小整数。
public static double floor(double a):向下取整,返回小于或等于指定数的最大整数。
public static long round(double a):四舍五入取整,返回最接近指定数的整数。
最大值、最小值和绝对值函数方法:
public static double max(double a, double b):返回给定两个数中较大的那个数。
public static double min(double a, double b):返回给定两个数中较小的那个数。
public static double abs(double a):返回给定数的绝对值。
例题:Math类的方法的运用
11.2.3 Random类
Random 类是 Java 中用于生成伪随机数的工具类。它提供了各种方法来生成不同类型的随机数。下面是 Random 类的一些常用方法:
public Random():构造一个新的 Random 对象。
public int nextInt():生成一个随机的 int 类型的整数。
public int nextInt(int bound):生成一个介于 0(包含)和指定边界值(不包含)之间的随机整数。
public long nextLong():生成一个随机的 long 类型的整数。
public boolean nextBoolean():生成一个随机的 boolean 类型的值,即 true 或 false。
public float nextFloat():生成一个随机的 float 类型的浮点数,范围在 0.0(包含)到 1.0(不包含)之间。
public double nextDouble():生成一个随机的 double 类型的浮点数,范围在 0.0(包含)到 1.0(不包含)之间。
public void nextBytes(byte[] bytes):生成随机的字节数组。
Random 类使用了一个种子(seed)值作为生成随机数的起点。如果不指定种子值,则默认使用系统当前时间作为种子,每次运行程序生成的随机数序列都会不同。如果指定相同的种子值,则每次生成的随机数序列都是相同的。
例题11.11:获取不同取值范围不同类型的随机数
11.2.4 Biglnteger类
BigInteger 类是 Java 中用于处理大整数(任意精度整数)的类。它提供了对大整数的操作和运算,可以进行加减乘除、取模、幂运算等操作,而不会受到整数范围的限制。
BigInteger 类一些常用的运算方法:
加法运算:public BigInteger add(BigInteger val)
该方法将当前的 BigInteger 对象与参数 val 相加,并返回一个新的 BigInteger 对象作为结果。减法运算:public BigInteger subtract(BigInteger val)
该方法将当前的 BigInteger 对象减去参数 val,并返回一个新的 BigInteger 对象作为结果。乘法运算:public BigInteger multiply(BigInteger val)
该方法将当前的 BigInteger 对象与参数 val 相乘,并返回一个新的 BigInteger 对象作为结果。除法运算:public BigInteger divide(BigInteger val)
该方法将当前的 BigInteger 对象除以参数 val,并返回一个新的 BigInteger 对象作为结果。取模运算:public BigInteger remainder(BigInteger val)
该方法返回当前的 BigInteger 对象除以参数 val 的余数,作为一个新的 BigInteger 对象。求幂运算:public BigInteger pow(int exponent)
该方法将当前的 BigInteger 对象的值提升到指定的指数 exponent 次方,并返回一个新的 BigInteger 对象作为结果。比较运算:public int compareTo(BigInteger val)
该方法将当前的 BigInteger 对象与参数 val 进行比较,并返回一个表示比较结果的整数值。如果当前对象小于 val,则返回负数;如果当前对象等于 val,则返回零;如果当前对象大于 val,则返回正数。
以上只是 BigInteger 类中的一些常用的运算方法,还有其他更多方法可以用于位操作、取反、求绝对值等操作。可以根据具体需求选择合适的方法来执行相应的运算。
例题11.12:使用BigInteger类进行数学运算
11.2.5 BigDecimal类
BigDecimal 类是 Java 中用于高精度的十进制数运算的类,它可以处理任意精度的数值计算。它提供了一系列用于执行基本数学运算和数值操作的方法。下面是 BigDecimal 类的一些常用方法的介绍:
构造方法:
public BigDecimal(int val): 根据整数值创建一个 BigDecimal 对象。
public BigDecimal(double val): 根据双精度浮点数值创建一个 BigDecimal 对象。
public BigDecimal(String val): 根据字符串形式的数值创建一个 BigDecimal 对象。加法运算:
public BigDecimal add(BigDecimal val): 将当前的 BigDecimal 对象与参数 val 相加,并返回一个新的 BigDecimal 对象作为结果。
减法运算:public BigDecimal subtract(BigDecimal val): 将当前的 BigDecimal 对象减去参数 val,并返回一个新的 BigDecimal 对象作为结果。
乘法运算:public BigDecimal multiply(BigDecimal val): 将当前的 BigDecimal 对象与参数 val 相乘,并返回一个新的 BigDecimal 对象作为结果。
除法运算:public BigDecimal divide(BigDecimal val): 将当前的 BigDecimal 对象除以参数 val,并返回一个新的 BigDecimal 对象作为结果。
取模运算:public BigDecimal remainder(BigDecimal val): 返回当前的 BigDecimal 对象除以参数 val 的余数,作为一个新的 BigDecimal 对象。
幂运算:public BigDecimal pow(int exponent): 将当前的 BigDecimal 对象的值提升到指定的指数 exponent 次方,并返回一个新的 BigDecimal 对象作为结果。
比较运算:public int compareTo(BigDecimal val): 将当前的 BigDecimal 对象与参数 val 进行比较,并返回一个表示比较结果的整数值。如果当前对象小于 val,则返回负数;如果当前对象等于 val,则返回零;如果当前对象大于 val,则返回正数。
数值操作:public BigDecimal abs(): 返回当前 BigDecimal 对象的绝对值。
public BigDecimal negate(): 返回当前 BigDecimal 对象的相反数。
public BigDecimal round(MathContext mc): 根据指定的 MathContext 对象进行四舍五入操作,并返回一个新的 BigDecimal 对象。
以上是 BigDecimal 类的一些常用方法,通过这些方法,可以进行高精度的数值计算,并且可以控制精度、舍入方式等。在处理需要保持高精度的数值计算时,使用 BigDecimal 类可以避免由于浮点数精度问题导致的计算结果不准确。
例题11.13:使用BigDecimal 类进行数学运算
11.3 System类
System 类是 Java 中的一个系统级类,提供了许多与系统操作相关的方法和属性。它是一个包含静态成员的 final 类,因此无法实例化该类,我们只能通过调用其静态成员来使用它的功能。
下面是 System 类的一些常用方法和属性的介绍:
11.3.1 控制台输出字符
要在控制台输出字符,可以使用 System.out.println() 方法或 System.out.print() 方法。以下是它们的简单介绍:
System.out.println():用于打印字符串并换行。它将在控制台上输出指定的字符串,并在字符串的末尾添加一个换行符,使下一个输出位于新的一行。
System.out.print():用于打印字符串,不会自动换行。它将在控制台上输出指定的字符串,但不会在字符串的末尾添加换行符。
这些方法还可以用于打印变量、表达式和其他数据类型的值。你可以根据需要选择使用 println 或 print 来输出字符或其他内容,并根据需要进行换行。
11.3.2 记时
要在Java中进行计时,可以使用System.currentTimeMillis()方法来获取当前时间的毫秒数。通过记录开始时间和结束时间,可以计算出经过的时间。
例题11.14:查看执行一万次字符串拼接所消耗的时间
11.4 Scanner类
Scanner类是Java中用于读取用户输入的工具类。它提供了一些方法来读取不同类型的输入,如整数、浮点数、字符串等。
要使用Scanner类,首先需要创建Scanner对象,并将输入源传递给它。输入源可以是标准输入(System.in)、文件、字符串等。
需要注意的是,使用Scanner类读取输入时,它会按照特定的分隔符(默认是空格)将输入分割成多个部分,并依次读取这些部分。通过不同的方法选择合适的类型来读取对应的输入。
读取完输入后,应该调用scanner.close()方法关闭Scanner对象,以释放资源。
Scanner类提供了几种常用的方法,通过这些方法可以获取控制台中输入的不同类型的值:
例题11.15:猜数字游戏
11.5 日期时间类
11.5.1 Date类
Date类是Java中用于表示日期和时间的类。它位于java.util
包中,可以用于获取当前日期和时间,以及进行日期和时间的计算和操作。
例如,使用Date类的第二种构造方法创建一个Date对象,代码如下:
long timeMilils = System.currentTimeMilils(); //当前系统时间所经历的毫秒数
Date date = new Date(timeMilils);
例题11.16:获取当前时期和日期
11.5.2 日期时间格式化
Java中的DateFormat并不是一个具体的类,而是一个抽象类,用于格式化和解析日期和时间。DateFormat位于java.text包中,是一个用于处理日期和时间的基类。
DateFormat类提供了以下常用方法:
format(Date date): 将Date对象格式化为字符串。
parse(String source): 将字符串解析为Date对象。
getTimeZone(): 获取当前时区。
setTimeZone(TimeZone zone): 设置时区。
getDateTimeInstance(): 返回默认的日期时间格式器。
getDateTimeInstance(int dateStyle, int timeStyle): 返回指定日期和时间样式的格式器。
getDateInstance(): 返回默认的日期格式器。
getDateInstance(int style): 返回指定日期样式的格式器。
getTimeInstance(): 返回默认的时间格式器。
getTimeInstance(int style): 返回指定时间样式的格式器。
需要注意的是,DateFormat类是一个抽象类,不能直接实例化,而是通过其子类实现具体的日期和时间格式化。常用的子类包括:
SimpleDateFormat:用于格式化和解析日期和时间的具体实现类。
DateFormatSymbols:用于定义日期和时间格式的符号。
例题11.17:以中文形式打印当前的日期和时间
11.5.3 Calendar类
Calendar类是Java中用于处理日期和时间的类,位于java.util包中。它提供了对日期和时间的操作、计算和格式化等功能。
Calendar类提供的常用字段及其说明:
例题11.18:今天离中华人民共和国成立100周年查多少天?
11.6 Runtime类
Runtime类表示应用程序运行时的环境,它提供了访问和控制应用程序运行时的一些方法。下面是Runtime类的一些常用方法:
exec(String command): 执行系统命令,并返回一个Process对象,用于控制执行的进程。
getRuntime(): 返回当前应用程序的Runtime对象的实例。
totalMemory(): 返回Java虚拟机的总内存量。
freeMemory(): 返回Java虚拟机的空闲内存量。
maxMemory(): 返回Java虚拟机能够使用的最大内存量。
gc(): 运行垃圾回收器。
availableProcessors(): 返回可用的处理器数量。
这些方法可以帮助您在运行时获取系统信息,执行系统命令,控制内存使用等。请注意,Runtime类的构造函数是私有的,因此不能直接实例化Runtime对象,而是通过getRuntime()方法获取当前应用程序的Runtime对象实例。
11.6.1 执行本地命令
本地命令指的是操作系统的命令。例如在Linux系统下表示shell命令,windows系统下表示cmd命令。
Runtime类提供的exec()方法让Java代码可以执行系统命令,exec()方法有很多重载的形式,例题:
Process exec(String command)
Process exec(String[] cmdarray)
Process类是Java中的进程类,该类是抽象类,不能使用new关键字创建实例。Process的常用方法如图所示:
例题11.19:让Java程序执行Windows系统的help命令
编码不同所以出现乱码。
11.6.2 查看内存
Runtime类可以通过 freeMemory()方法查看当前Java 虚拟机可用内存的剩余量。如果程序能够实时监控内存剩余量,就可以尽量控制程序对内存的占用,从而避免出现“内存溢出”的情况。同样,也可以用来对测试程序性能,检验程序算法是否导致内存紧张。
例题11.20:监控虚拟机内存使用情况
结束力结束力