今天内容:
(1)Object类
(2)包装类和数学处理类
(3)String类
1.Object类
1.1 常用的包
java.lang包 - 该包是Java语言的核心包,该包中的类和接口由Java虚拟机自动导入。
- 如:String类、System类等。
java.util包 - 该包是Java语言的工具包,该包中提供了大量的工具类和集合类。
- 如:Scanner类、Random类、List接口等。
java.io包 - 该包是Java语言的输入输出包,该包中提供大量操作文件的类。
- 如:InputStream类、OutputStream类等。
java.net包 - 该包是Java语言的网络包,该包中提供大量网络通信的类。
- 如:ServerSocket类和Socket类等。
...
1.2 Object类
(1)基本概念
java.lang.Object类是所有类层次结构的根类,任何类都是Object类的直接/间接子类。
(2)常用的方法(重中之重)
Object() - 无参方式构造对象,通常用于子类使用super()方式调用。
boolean equals(Object obj) - 用于判断调用对象是否和参数对象相等。
- 该方法默认比较两个对象的地址,与==运算符的效果等价。
- 若希望该方法比较两个对象的内容,则需要重写该方法。 - 当该方法被重写时,通常有必要重写hashCode()方法。
int hashCode() - 用于获取调用对象的哈希码值(内存地址的编号)。
- 若equals()方法比较两个对象相等,则各自调用hashCode()结果必须相同。
- 若equals()方法比较两个对象不相等,则各自调用hashCode()结果应该不同。
- 若希望该方法与equals()结果保持一致,则需要重写该方法。
String toString() - 用于获取调用对象的字符串表示形式。
- 该方法默认返回:包名.类名@哈希码值的十六进制形式。
-若希望该方法返回更有意义的数据,则需要重写该方法。
- 当使用print/println打印引用时或+连接引用时,会自动调用该方法。
2.包装类和数学处理类
如:
Person p = new Person(); - 表示声明Person类型的引用指向Person类型的对象
int num = 10; - 表示声明int类型的变量num初始值为10,num不是对象
Java是一门纯面向对象的编程语言。
public class A{ private int num = 10; } A a = new A(); - 表示声明A类型的引用指向A类型的对象
2.1 包装类(理解)
(1)基本概念
在某些特殊场合(集合)中要求所有的数据内容都必须是对象,但对于num这样的变量来说不符合该要求,此时就需要对变量进行对象化处理包装成类,实现这样功能的类就叫做包装类。
(2)基本分类
int => java.lang.Integer类
char => java.lang.Character类
其它类型都是首字母变大写即可
2.2 Integer类(会用即可)
(1)基本概念
java.lang.Integer类是int类型的包装类,该类由final修饰表示不能被继承。
(2)常用的方法
Integer(int value) - 根据参数指定的整数来构造对象。
Integer(String s) - 根据参数指定的字符串来构造对象。
该类重写了equals()方法、hashCode()方法以及toString()方法。
int intValue() - 用于获取调用对象中包装的整数数据并返回。
static Integer valueOf(int i) - 根据参数指定的整数得到Integer类型对象并返回。
static int parseInt(String s) - 用于将String类型转换为int类型(掌握)。
(3)装箱和拆箱
装箱主要指从int类型向Integer类型的转换过程。
拆箱主要指从Integer类型向int类型的转换过程。
从jdk1.5开始支持自动装箱和自动拆箱机制。
(4)自动装箱池(笔试题)
为了提高效率在Integer类的内部提前将-128到127之间的所有整数装箱完毕并放入自动装箱池中,若程序中出现该范围的整数则直接从池中取出使用即可。
2.3 BigDecimal类(查手册会用即可)
(1)基本概念
由于double类型的数据在运算时可能会有误差,若希望实现精确的运算则使用java.math.BigDecimal类型加以描述。
(2)常用的方法
BigDecimal(String val) - 根据参数指定的字符串构造对象。
BigDecimal add(BigDecimal augend) - 计算调用对象和参数对象的和并返回。
BigDecimal subtract(BigDecimal subtrahend) - 计算调用对象和参数对象的差并返回。
BigDecimal multiply(BigDecimal multiplicand) - 计算调用对象和参数对象的积并返回。
BigDecimal divide(BigDecimal divisor) - 计算调用对象和参数对象的商并返回。
2.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)
- 用于计算调用对象和参数对象的商和余数并组成数组并返回。
3.String类(重中之重)
3.1 基本概念
java.lang.String类用于描述字符串,Java程序中的所有字符串字面值都可以使用该类的实例/对象加以描述,如: "hello"。
该类描述的字符串内容是个常量不可改变,因此可以被共享使用。
该类由final关键字修饰表示不能被继承。
如:
String s1 = "hello";
s1 = "world"; - 改变引用的指向而不是指向的内容。
3.2 常量池(原理、笔试题)
由于字符串内容是个常量不可改变,因此Java虚拟机将程序中每次出现的字符串字面值放入常量池中,若下次再出现重复的字符串内容则直接使用池中对象即可而无需创建新的对象,从而提高性能。
3.3 常用的方法(练熟、记住)
(1)常用的构造方法 String()
- 使用无参方式构造对象得到空字符序列,如:"" 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) - 根据参数指定的字符串内容来构造对象,新创建对象为参数对象的副本。
注意:
""和null之间的区别:
a.""表示有字符串对象,但里面没有存放数据内容;
b.null表示没有字符串对象,调用方法会引发空指针异常;
(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结尾的子字符串并返回。