JAVA基础知识复习(十)-Java各种封装类
本文最后更新于:December 3, 2021 pm
JAVA基础知识复习(十)。
目录
1.Java类
1.1 Java 嵌套类
在任何类外部声明的类是顶级类。嵌套类是声明为其他类或作用域的成员的类。有四种嵌套类:静态成员类、非静态成员类、匿名类、局部类。
1.1.1 匿名类
匿名类是没有名称并同时声明的类。可以实例化一个匿名类,在其中指定一个表达式是合法的。一个匿名类实例只能访问局部最终变量和最终参数。
实例:定义匿名类。
1 |
|
实例:声明和实例化一个实现接口的匿名类。
1 |
|
1.1.2 局部类
本地类是在声明局部变量的任何地方声明的类。局部类与局部变量具有相同的范围。一个本地类有一个名称,可以重复使用。本地类实例可以访问周围范围的本地最终变量和最终参数。
实例:
1 |
|
实例:声明一个Iterator接口和Iter内部类。
1 |
|
1.1.3 成员类
成员类是封闭类的成员。成员类的每个实例都与封闭类的实例相关联。成员类的实例方法可以调用实例方法封闭类和访问封闭类实例的非静态字段。
实例:名为 EnclosingClass 的外部类和名为 EnclosedClass 的非静态成员类
1 |
|
实例:使用内部类ItemList来存储项目。
1 |
|
定义和使用内部类。
实例:
1 |
|
内部类成员只能在内部类中访问,并且可能不被外部类使用。
实例:以下实例编译时会产生错误。
1 |
|
1.1.4 静态成员类
静态成员类是封闭类的静态成员。静态成员类不能访问包含类的实例字段并调用其实例方法。静态成员可以访问包含类的静态字段并调用其静态方法,包括私有字段和方法。
实例:静态成员类声明。
1 |
|
静态成员类可以声明其封闭类的多个实现。
1.2 Java 抽象类
抽象类是抽象的想法或概念。Java语言中使用abstract class来定义抽象类。
实例:
1 |
|
抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
抽象类可以包含抽象方法和非抽象方法。
抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
抽象方法不能被声明成 final 和 static。
任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
抽象方法的声明以分号结尾,例如:public abstract sample();。
在 Java 中 abstract 即抽象,一般使用 abstract 关键字修饰的类或方法。
修饰的类时,一定有构造器(构造函数),便于子类实例化时调用。
1.不能被实例化,需要继承抽象类后才能实例化其子类。
2.访问权限可以使用public、private、protected,其表达形式为:(public)abstract class 类名{}
3.抽象类不能使用final关键字修饰,因为final修饰的类是无法被继承
4.可以定义构造方法、静态方法、普通方法;非抽象的普通成员变量、静态成员变量
修饰的方法时,只需要声明方法,不需要写方法体(大括号也不写)。
1.含有该抽象方法的类必须定义为抽象类,但抽象类可以没有抽象方法。
2.访问权限可以使用public、default、protected,不能为private,因为抽象方法必须被子类实现(覆写),而private权限对于子类来 说是不能访问的,所以就会产生矛盾,
3.不能用static修饰,因为没有主体
4.若子类没有重写父类中的所有抽象方法,则此子类必须也是一个抽象类,用abstract修饰;否则必须全部重写父类中的抽象类方法。
例如:
1 |
|
1.2.1 抽象方法
一个类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么可以在父类中声明该方法为抽象方法。
Abstract关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
实例:
1 |
|
声明抽象方法会造成以下两个结果:
- 如果一个类包含抽象方法,那么该类必须是抽象类。
- 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。
如果Salary类继承了Employee类,那么它必须实现 computePay() 方法。
实例:
1 |
|
2.Java Number类
一般情况下会使用的8种数据的基本数据类型:byte、int、short、long、double、float、boolean、char;
对应的包装类型也有八种:Byte、Integer、Short、Long、Double、Float、Character、Boolean;
包装类型都是用 final 声明了,不可以被继承重写;在实际情况中编译器会自动的将基本数据类型装箱成对象类型,或者将对象类型拆箱成基本数据类型。具体可以看《JAVA基础知识复习(八)-包装类、装箱拆箱》。
实例:
1 |
|
Number 类是 java.lang 包下的一个抽象类,提供了将包装类型拆箱成基本类型的方法,所有基本类型(数据类型)的包装类型都继承了该抽象类,并且是final声明不可继承改变。
包装类 | 基本数据类型 |
---|---|
Boolean | boolean |
Byte | byte |
Short | short |
Integer | int |
Long | long |
Character | char |
Float | float |
Double | double |
这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。
3.Java Math类
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
实例:
1 |
|
Number & Math 类方法
常用的 Number 类和 Math 类的方法。
方法 | 描述 | 用法 |
---|---|---|
xxxValue() | 将number对象转换为xxx数据类型的值并返回。 | x.doubleValue() |
compareTo() | 将number对象与参数比较。 | x.compareTo(y) |
equals() | 判断number对象是否与参数相等。 | x.equals(y) |
valueOf() | 返回一个Integer对象指定的内置数据类型 | Integer.valueOf(“x”,y) |
toString() | 以字符串形式返回值。 | x.toString() |
parseInt() | 将字符串解析为int类型。 | Integer.parseInt(“x”,y) |
abs() | 返回参数的绝对值。 | |
ceil() | 返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。 | |
floor() | 返回小于等于(<=)给定参数的最大整数 。 | |
rint() | 返回与参数最接近的整数。返回类型为double。 | |
round() | 返回一个最接近的int、long型值。 | |
min() | 返回两个参数中的最小值。 | |
max() | 返回两个参数中的最大值。 | |
exp() | 返回自然数底数e的参数次方。 | |
log() | 返回参数的自然数底数的对数值。 | |
pow() | 返回第一个参数的第二个参数次方。 | |
sqrt() | 求参数的算术平方根。 | |
sin() | 求指定double类型参数的正弦值。 | |
cos() | 求指定double类型参数的余弦值。 | |
tan() | 求指定double类型参数的正切值。 | |
asin() | 求指定double类型参数的反正弦值。 | |
acos() | 求指定double类型参数的反余弦值。 | |
atan() | 求指定double类型参数的反正切值。 | |
atan2() | 将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。 | |
toDegrees() | 将参数转化为角度。 | |
toRadians() | 将角度转换为弧度。 | |
random() | 返回一个随机数。 |
1. parseInt() 用法
parseInt() 方法用于将字符串参数作为有符号的十进制整数进行解析。如果方法有两个参数, 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。简单说就是,把字符串转换成十进制数。如果只有一个参数(即字符串),那么结果就是这个字符串;如果有两个参数(一个字符串s,一个整数x),那么把字符串的数字当成x进制的数,然后转化为十进制输出。
用法:
1 |
|
s – 十进制表示的字符串。radix – 指定的基数(即把字符串s当成几进制数)。
实例:
1 |
|
4.Java Character类
使用字符时,我们通常使用的是内置数据类型 char。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。
Java 语言为内置数据类型 char 提供了包装类 Character 类。Character类的用法:Character 类提供了一系列方法来操纵字符,可以使用 Character 的构造方法创建一个 Character 类对象。
实例:
1 |
|
在某些情况下,Java 编译器会自动创建一个 Character 对象。例如,将一个 char 类型的参数传递给需要一个 Character 类型参数时,那么编译器会自动地将 char 类型参数转换为 Character 对象。 这种特征称为装箱,反过来称为拆箱。
4.1 转义序列
前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的。
Java 的转义序列。
转义序列 | 描述 |
---|---|
\t | 在文中该处插入一个tab键 |
\b | 在文中该处插入一个后退键 |
\n | 在文中该处换行 |
\r | 在文中该处插入回车 |
\f | 在文中该处插入换页符 |
\‘ | 在文中该处插入单引号 |
\“ | 在文中该处插入双引号 |
\\ | 在文中该处插入反斜杠 |
实例:
1 |
|
4.2 Character 方法
方法 | 描述 |
---|---|
isLetter() | 是否是一个字母 |
isDigit() | 是否是一个数字字符 |
isWhitespace() | 是否一个空格 |
isUpperCase() | 是否是大写字母 |
isLowerCase() | 是否是小写字母 |
toUpperCase() | 指定字母的大写形式 |
toLowerCase() | 指定字母的小写形式 |
toString() | 返回字符的字符串形式,字符串的长度仅为1 |
4.3 初学常用方法
- public static boolean isUpperCase(char ch): 判断给定的字符是否是大写字符;
- public static boolean isLowerCase(char ch): 判断给定的字符是否是小写字符;
- public static boolean isDigit(char ch): 判断给定的字符是否是数字字符;
这三个方法的返回值是 boolean 型。
实例:
1 |
|
5.Java String类
字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。
5.1 创建字符串
在代码中遇到字符串常量时,编译器会使用该值创建一个 String 对象。和其它对象一样,可以使用关键字和构造方法来创建String对象。
实例:
1 |
|
String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串。
使用实例:以一个字符数组为参数
1 |
|
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。 如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
5.2 字符串长度
用于获取有关对象的信息的方法称为访问器方法。String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
实例:
1 |
|
5.3 连接字符串
String 类提供了连接两个字符串的方法。
5.3.1 concat() 方法
实例:返回 string2 连接 string1 的新字符串。
1 |
|
也可以对字符串常量使用 concat() 方法。
实例:
1 |
|
5.3.2 加号(+)连接
更加常用的一种方法。
实例:
1 |
|
实例:
1 |
|
5.4 创建格式化字符串
输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个 String 对象而不是 PrintStream 对象。String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
实例:
1 |
|
或者:
1 |
|
5.5 String 方法
方法 | 方法描述 |
---|---|
char charAt(int index) | 返回指定索引处的 char 值。 |
int compareTo(Object o) | 把这个字符串和另一个对象比较。 |
int compareTo(String anotherString) | 按字典顺序比较两个字符串。 |
int compareToIgnoreCase(String str) | 按字典顺序比较两个字符串,不考虑大小写。 |
String concat(String str) | 将指定字符串连接到此字符串的结尾。 |
boolean contentEquals(StringBuffer sb) | 当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真。 |
static String copyValueOf(char[] data) | 返回指定数组中表示该字符序列的 String。 |
static String copyValueOf(char[] data, int offset, int count) | 返回指定数组中表示该字符序列的 String。 |
boolean endsWith(String suffix) | 测试此字符串是否以指定的后缀结束。 |
boolean equals(Object anObject) | 将此字符串与指定的对象比较。 |
boolean equalsIgnoreCase(String anotherString) | 将此 String 与另一个 String 比较,不考虑大小写。 |
byte[] getBytes() | 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
[byte] getBytes(String charsetName) | 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 将字符从此字符串复制到目标字符数组。 |
int hashCode() | 返回此字符串的哈希码。 |
int indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引。 |
int indexOf(int ch, int fromIndex) | 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引。 |
int indexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
String intern() | 返回字符串对象的规范化表示形式。 |
int lastIndexOf(int ch) | 返回指定字符在此字符串中最后一次出现处的索引。 |
int lastIndexOf(int ch, int fromIndex) | 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
int lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引。 |
int lastIndexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
int length() | 返回此字符串的长度。 |
boolean matches(String regex) | 告知此字符串是否匹配给定的正则表达式。 |
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) | 测试两个字符串区域是否相等。 |
boolean regionMatches(int toffset, String other, int ooffset, int len) | 测试两个字符串区域是否相等。 |
String replace(char oldChar, char newChar) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
String replaceAll(String regex, String replacement) | 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
String replaceFirst(String regex, String replacement) | 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
[String] split(String regex) | 根据给定正则表达式的匹配拆分此字符串。 |
[String] split(String regex, int limit) | 根据匹配给定的正则表达式来拆分此字符串。 |
boolean startsWith(String prefix) | 测试此字符串是否以指定的前缀开始。 |
boolean startsWith(String prefix, int toffset) | 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
CharSequence subSequence(int beginIndex, int endIndex) | 返回一个新的字符序列,它是此序列的一个子序列。 |
String substring(int beginIndex) | 返回一个新的字符串,它是此字符串的一个子字符串。 |
String substring(int beginIndex, int endIndex) | 返回一个新字符串,它是此字符串的一个子字符串。 |
[char] toCharArray() | 将此字符串转换为一个新的字符数组。 |
String toLowerCase() | 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
String toLowerCase(Locale locale) | 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
String toString() | 返回此对象本身(它已经是一个字符串!)。 |
String toUpperCase() | 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
String toUpperCase(Locale locale) | 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
String trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
static String valueOf(primitive data type x) | 返回给定data type类型x参数的字符串表示形式。 |
本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/2999728930.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!