Java Learn(九)
包装类、数学处理类、String类
包装类和数学处理类
包装类的由来
java语言是一门纯面向对象的编程语言;
Person p = new Person(); — Person是引用数据类型,p是对象
int num = 10; — int是基本数据类型,num是变量
在某些特殊场合中(集合),要求所有数据都必须是对象,但对于八种基本数据类型来说不满足此需求,此时就需要对基本数据类型声明的变量进行对象化处理,因此需要借助包装类进行包装。
Integer类
基本概念
- java.lang.Integer类实现对int类型的包装,也就是让int类型的变量作为该类成员。
- 该类由final修饰表示不能被继承。
- 该类重写了
equals()
、hashCode()
、toString()
方法
常用的方法:
方法函数 | 描述 |
---|---|
integer(int value) | 根据参数指定的整数来构造对象 |
Integer(String value) | 根据参数指定的字符串来构造对象 |
int intValue() | 用于将Integer类型的数据转换为int类型并返回 |
static Integer valueOf(int i) | 用于将int类型转换为Integer类型并返回 |
static int parseInt(String s) | 用于将String类型转换为int类型并返回 |
装箱和拆箱
- 从int类型向Integer类型的转换叫装箱
- 从Integer类型向int类型的转换叫拆箱
- 从JDk1.5开始支持自动装箱和自动拆箱的机制。
自动装箱池(底层原理)
由于开发中可能会经常涉及装箱的实现,因此在Integer类的内部提供了一个自动装箱池,将-128 ~ 127 之间的整数提前装箱完毕,若程序中使用该范围的数据则可以直接从池中获取,从而提高了效率。
BigDecimal类
基本概念
- 由于float和double类型在运算时有误差,因此可以使用 java.math.BigDecimal 类型,实现精确运算。
常用方法:
方法函数 | 描述 |
---|---|
BigDecimal(String val) | 根据参数指定的字符串来构造对象 |
BigDecimal add(BigDecimal augend) | 用于计算调用对象和参数对象的和并返回 |
BigDecimal subtract(BigDecimal augend) | 用于计算调用对象和参数对象的差并返回 |
BigDecimal multiply(BigDecimal multiply) | 用于计算调用对象和参数对象的积并返回 |
BigDecimal divide(BigDecimal divide) | 用于计算调用对象和参数对象的商并返回 |
注意:当使用divide()
计算除不尽的时候,可以使用divide(BigDecimal divide,BigDecimal.ROUND_HALF_UP)
进行精度确认,精度确认的方式一共有十一种,详细参考该类的手册内容。
BigInteger类
基本概念
- 由于long类型表示的整数范围依然有限,若希望表示更大的整数则需要借助 java.math.BigInteger 类。
常用方法
方法函数 | 描述 |
---|---|
BigInteger(String val) | 根据参数指定的字符串来构造对象 |
BigInteger add(BigInteger val) | 用于实现调用对象和参数对象的和并返回 |
BigInteger subtract(BigInteger val) | 用于实现调用对象和参数对象的差并返回 |
BigInteger multiply(BigInteger val) | 用于实现调用对象和参数对象的积并返回 |
BigInteger divide(BigInteger val) | 用于实现调用对象和参数对象的商并返回 |
BigInteger[] divideAndRemainder(BigInteger val) | 用于实现调用对象和参数对象的商和余数组成的数组并返回 |
以后的编程中若希望在方法体中返回多个数据时,可以采用组成数组并返回的手法
String类
基本概念
- java.lang.String 类用于描述字符串数据。java程序中所有字符串字面值都可以使用该类的对象加以描述和处理。如:“ab”等,双引号描述。
- 该类描述的字符创数据是常量,不可更改,因此可以共享使用 public final。
- 该类由 final 关键字修饰表示不能继承。
如:
String s1 = “hello”; — 其中“hello”是个常量,不可更改
s1 = “world”; — 使得引用变量 s1 由指向 “hello” 更改为指向 “world” ,改变指向。
注意
String s1 = null; 和String s1 = “”;
其中前者的s1表示没有明确的指向,也就是没有String字符串对象。容易引发空指针异常。
其中后者的s1有明确的指向,只是该字符串对象中没有内容而已。
常用方法
1.常用的构造方法:
方法函数 | 描述 |
---|---|
String() | 使用无参的形式创建空对象,该对象中没有字符串内容 |
String(byte[] bytes) | 根据参数指定的数组内容来构造字符串对象 |
String(byte[] , int offset , int length) | 根据参数指定的数组中从offset位置开始供length字节的数据来构造对象 |
String(char[] value) | 根据参数指定的字符数组构造对象 |
String(char[] , int offset , int count) | 使用数组中的一部分构造对象 |
String(String original) | 根据字符串内容来构造对象 |
String(StringBuffer buffer) | 可以将StringBuffer类型转换成String类型 |
String(StringBuilder builder) | 可以将StringBuilder类型转换成String类型 |
2.常用的构造方法
重写了toString()、equals()、hashCode()方法。
方法函数 | 描述 |
---|---|
char charAt(int index) | 用于获取当前字符串中下标为index位置的单个字符并返回 |
int length() | 用于返回当前字符串的长度,也就是个数 |