Day12
---------------------------------------------------------------------------------
今天内容:
(1)包装类和数学处理类
(2)String类
1.包装类和数学处理类
1.1 包装类的概念和分类(理解)
如:
Person p = new Person(); - 声明Person类型的引用指向Person类型的对象
int num = 10; - 声明int类型的变量num初始值为10
Java语言是一门纯面向对象的编程语言。
(1)基本概念
在某些特殊场合(集合)中要求所有的元素必须是类类型的对象,而对于基本数据类型的变量来说不满足该要求,为了使得这些变量能够使用则需要对变量进行打包封装的对象化处理,此时就需要借助包装类。
如:
public class A{
private int num = 10;
}
A a = new A();
(2)基本分类
int => java.lang.Integer类(重点、理解)
double => java.lang.Double类
byte => java.lang.Byte类
short => java.lang.Short类
long => java.lang.Long类
float => java.lang.Float类
boolean=> java.lang.Boolean类
char => java.lang.Character类
1.2 Integer类(重点、理解)
(1)基本概念
java.lang.Integer类是int类型的包装类,该类由final修饰表示不能被继承。
(2)常用的方法
Integer(int value) - 根据参数指定的整数构造对象。
Integer(String s) - 根据参数指定的字符串构造对象。
该类重写了equals()、hashCode()以及toString()方法。
int intValue() - 用于返回调用对象中的int类型数值。
static Integer valueOf(int i) - 用于根据参数指定的int数值得到Integer类型的对象。
static int parseInt(String s) - 用于将字符串转换为int类型(记住)。
(3)装箱和拆箱
从int类型向Integer类型的转换过程叫做装箱;
从Integer类型向int类型的转换过程叫做拆箱;
从jdk1.5开始Java中提供了自动装箱和自动拆箱的机制;
(4)自动装箱池(笔试题)
为了提高程序的执行效率,Integer类的内部已经提前将-128到127之间的所有整数数据装箱完毕并放入自动装箱池中,若程序中出现该范围的数据则直接从池中获取并使用,否则才需要装箱处理。
1.3 BigDecimal类(查手册会用即可)
(1)基本概念
由于float类型和double类型在运算时会有误差,因此为了实现精确运算则需要借助java.math.BigDecimal类型加以描述。
(2)常用的方法
BigDecimal(String val) - 根据参数指定的字符串内容来构造对象。
BigDecimal add(BigDecimal augend)
- 用于计算调用对象和参数对象的和并返回。
BigDecimal subtract(BigDecimal subtrahend)
- 用于计算调用对象和参数对象的差并返回。
BigDecimal multiply(BigDecimal multiplicand)
- 用于计算调用对象和参数对象的积并返回。
BigDecimal divide(BigDecimal divisor)
- 用于计算调用对象和参数对象的商并返回。
1.4 BigInteger类(查询手册会用即可)
(1)基本概念
在以后的开发中若希望表达比long类型还大的数据,则使用java.math.BigInteger类型
加以描述。
(2)常用的方法
BigInteger(String val) - 根据参数指定的字符串来构造对象。
BigInteger add(BigInteger val)
- 用于计算调用对象和参数对象的和并返回。
BigInteger subtract(BigInteger val)
- 用于计算调用对象和参数对象的差并返回。
BigInteger multiply(BigInteger val)
- 用于计算调用对象和参数对象的积并返回。
BigInteger divide(BigInteger val)
- 用于计算调用对象和参数对象的商并返回。
BigInteger remainder(BigInteger val)
- 用于计算调用对象和参数对象的余数并返回。
BigInteger[] divideAndRemainder(BigInteger val)
- 用于计算调用对象和参数对象的商和余数并返回。
2.String类(重中之重)
2.1 基本概念
java.lang.String类用于描述字符串,可以表示Java程序中的所有字符串字面值,如:"abc"
该类由final关键字,表示不能被继承。
该类描述的字符串内容是个常量,创建后内容不可以改变,因此可以被共享。
如:
String s1 = "abc";
s1 = "123"; - 表示改变变量s1的指向而不是指向的内容。
2.2 常量池(笔试题)
由于字符串字面值的内容不可以发生改变,因此Java虚拟机会将出现的字符串字面值放入常量池中,若下次出现同样的字符串字面值则直接使用池中已有的元素即可,从而提高了程序的执行效率,节省了内存空间。
2.3 常用的方法(练熟、记住)
(1)常用的构造方法
String() - 使用无参的方式创建空字符串对象,如: "" 和 null不一样的。
String(byte[] bytes, int offset, int length)
- 使用数组bytes中从下标offset位置开始的length个字节来构造对象。
String(byte[] bytes) - 使用参数指定bytes数组中所有内容构造字符串对象。
String(char[] value, int offset, int count)
- 使用数组value中从下标offset位置开始的count个字符来构造对象。
String(char[] value) - 使用参数指定value数组中所有内容构造字符串对象。
String(String original)
- 根据参数指定的字符串来构造对象。
笔试题:
请问String s1 = "" 和 String s2 = null; 有区别吗?
解析:
有区别,s1指向明确字符串对象,只是里面没有内容而已;s2没有指向的字符串对象。
(2)常用的成员方法
该类重写了equals()、hashCode()以及toString()方法。
char charAt(int index) - 根据参数指定的下标返回对应的单个字符。
int length() - 用于返回当前字符串的长度。
int compareTo(String anotherString) - 用于比较调用对象和参数对象的大小关系。
- 使用调用对象和参数对象中第一个字符起依次做减法运算
- 若第一个字符能确定大小,则后续字符不用比较
- 若第一个字符不能确定大小,则使用下一个对应位置的字符比较大小。
- 直到其中一个字符串的所有字符比较完毕后也没有确定大小,则由长度来决定大小。
- 若当前字符串大则返回正数;若当前字符串小则返回负数;若相等则返回零;
int compareToIgnoreCase(String str) - 不考虑大小写,也就是'a'和'A'是相等的关系。
boolean contains(CharSequence s) - 用于判断当前字符串是否包含参数指定的内容。
- 其中参数是接口类型,因此实参需要传递实现类的对象,而String类就实现了该接口
boolean endsWith(String suffix)
- 判断当前字符串是否以参数指定的内容为结尾。
boolean startsWith(String prefix)
- 判断当前字符串中是否以参数指定的内容为开头。
String toLowerCase()
- 用于将当前字符串中所有字符转换为小写。
String toUpperCase()
- 用于将当前字符串中所有字符转换为大写。
String trim()
- 用于去除当前字符串中两端的空白字符。
boolean equals(Object anObject)
- 用于比较字符串内容是否相等并返回;
boolean equalsIgnoreCase(String anotherString)
- 用于比较字符串内容是否相等并返回,不考虑大小写,如:'A'和'a'是相等。
byte[] getBytes() - 用于将当前字符串内容转换为byte数组并返回。
char[] toCharArray() - 用于将当前字符串内容转换为char数组并返回。
int indexOf(int ch) - 用于返回当前字符串中参数ch指定的字符第一次出现的下标。
int indexOf(int ch, int fromIndex) - 用于从fromIndex位置开始查找ch指定的字符。
- 上述方法若查找失败,则返回-1.
int indexOf(String str) - 用于查找参数str指定的字符串并返回下标。
int indexOf(String str, int fromIndex) - 用于从fromIndex位置开始查找。
int lastIndexOf(int ch) - 用于返回参数ch指定的字符最后一次出现的下标。
int lastIndexOf(int ch, int fromIndex)
- 用于从fromIndex位置开始查找ch指定字符出现的下标,反向搜索的第一次。
int lastIndexOf(String str) - 用于返回str指定字符串最后一次出现的下标。
int lastIndexOf(String str, int fromIndex)
- 用于从fromIndex位置开始反向搜索的第一次。
String substring(int beginIndex)
- 用于获取当前字符串中从beginIndex位置开始的子字符串并返回。
String substring(int beginIndex, int endIndex)
- 用于获取当前字符串中从beginIndex位置开始到endIndex结尾的子字符串并返回。
作业:
1.练习和掌握上述所有String类的常用方法。
2.自定义Person类实现封装,属性有:姓名和年龄,要求采用姓名作为标准来重写equals()方法、hashCode()方法以及toString()方法。
3.编程统计字符串"ABCD123!@#$%ab"中大写字母、小写字母、数字、其它字符的个数并打印出来