那年学过的Java笔记三核心类库一


核心类库一:

抽象类

抽象方法的概念
抽象方法就是指不能具体实现的方法,也就是该方法没有方法体,使用abstract关键字修饰
具体语法格式如下:
访问控制符 abstract 返回值类型 方法名称(形参列表);

如:
public abstract void cry();

抽象类的概念
抽象类就是指不能具体实现的类,也就是该类不能实例化对象,使用abstract关键字修饰

注意事项

  • 抽象类中可以有成员变量、成员方法以及构造方法等。
  • 抽象类中可以没有抽象方法,也可以有抽象方法。
  • 拥有抽象方法的类必须是抽象类,否则编译报错,因此很多资料上认为拥有抽象方法
    并且使用abstract关键字修饰的类才称之为真正意义上的抽象类。

实际意义
抽象类的实际意义不在于创建对象而在于被继承,当一个类继承抽象类之后则必须要重写抽象方法,否则该类也要变成抽象类。
因此抽象类对子类具有强制性和规范性,通常叫做 模板设计模式。

经验分享:
在以后的开发中推荐使用父类引用指向子类对象的形式,因为父类引用可以直接调用的方法一定是父类拥有的方法,若以后更换子类时,只需要将new运算符后面的类型更改即可,其它所有位置的代码不用更改立即生效,从而提高了代码的可维护性。
该方式的缺点在于父类的引用不能直接调用子类独有的方法,若调用则需要强制类型转换。

接口(重点)

基本概念
接口本质上就是一种比抽象类还抽象的类,因此不能实例化对象。

定义类的关键字是class,而定义接口的关键字是interface。
继承类的关键字是extends,而实现接口的关键字是implements。

注意事项

  • 接口中的所有成员变量都必须由public static final共同修饰,也就是常量;
  • 接口中的所有成员方法都必须由public abstract共同修饰,也就是抽象方法;

类和接口之间的关系

类和类之间的关系      使用extends关键字      支持单继承
类和接口之间的关系    使用implements关键字   支持多实现
接口和接口之间的关系  使用extends关键字      通常看做单继承

抽象类和接口的主要区别(笔试题)

(1)定义抽象类的关键字是class,而定义接口的关键字是interface.
(2)继承抽象类使用extends,而实现接口使用implements.
(3)抽象类中可以有构造方法,而接口中没有构造方法。
(4)抽象类中可以有成员变量,而接口中只能有常量。
(5)抽象类中可以有成员方法,而接口中只能有抽象方法。
(6)继承抽象类只能单继承,而实现接口可以多实现。
(7)接口中增加方法一定会影响子类,而抽象类中增加方法可以不影响子类。

内部类(了解)

基本概念
将一个类的定义放在另外一个类的内部时,这个被放入的类叫做内部类,而该类所在的类叫做外部类。
类体中可以存在的内容:成员方法、成员方法、构造方法、构造块和静态语句块、内部类等

语法格式

class 类名{
	class 类名{
		内部类的类体;
	}   
}  

基本作用
当一个类存在的价值仅仅是为某一个类单独服务时,则可以将这个类作为所服务类的内部类,内部类可以直接访问所在类的私有成员,而不再需要提供公有的get和set方法。

基本分类
普通内部类 - 直接将一个类的定义放在另外一个类的内部。
静态内部类 - 使用static关键字修饰的内部类。

  • 只有内部类才可以使用static关键字修饰,普通类不能修饰。
    局部内部类 - 直接将一个类的定义放在一个方法体的内部。
  • 该类只在方法体内部有效。
    匿名内部类 - 指没有名字的内部类。

匿名内部类(重点、难点)

语法格式

接口/父类类型 引用变量名 = new 接口/父类类型(){  
	方法的重写; 
}; 

经验的分享

当接口类型的引用作为方法的形参时,实参的传递方式有两种:
a.自定义类实现接口并重写抽象方法,然后new实现类的对象作为实参传递。
b.使用匿名内部类的语法格式直接得到接口类型的引用作为实参传递。

Object类(重点)

基本概念
java.lang.Object类是类层次结构的根类,任何类都是该类的直接或间接子类。

常用的方法

Object() - 无参构造方法,主要用于子类通过super()的方式调用。
boolean equals(Object obj) - 用于判断调用对象是否与参数对象相等。
- 该方法默认比较对象的地址,与==的效果等价。
- 若希望该方法去比较两个对象的内容,则需要重写该方法。
- 当该方法重写后,通常有必要去重写hashCode()方法。
- int hashCode() - 用于获取调用对象的哈希码值(内存地址的编号)。
- 当两个对象调用equals()方法相等时,则各自调用hashCode()的结果必须相同。
- 当两个对象调用equals()方法不相等时,则各自调用hashCode()的结果应该不相同。
String toString() - 用于返回调用对象的字符串形式。
- 该方法默认返回:包名.类名@哈希码值的十六进制形式。
- 若希望打印其他内容则需要进行方法的重写。
- 当使用print()/println()方法打印引用或者让字符串拼接引用时,自动调用该方法

包装类和数学处理类

如:
Person p = new Person();  - 表示声明Person类型的引用指向Person类型的对象。
int num = 66;             - 表示声明int类型的变量num初始值为66。
Java语言是一门纯面向对象的编程语言。

基本概念

在某些特殊场合(集合)中,要求存取的数据内容都必须是对象,而对于基本数据类型的变量来说不满足该要求,为了使得这些数据能够存取就需要进行对象化处理,而包装类就是用于将基本数据类型的变量打包成对象的类。

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之间的整数提前装箱并放入自动装箱池中,若程序中出现该范围的整数则直接从池中获取并使用,否则才需要创建新的对象。

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) 
- 用于计算调用对象和参数对象数值相除的商并返回。

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[] divideAndRemainder(BigInteger val) 
- 用于计算调用对象和参数对象的商和余数共同组成数组并返回。

String类(重中之重)


基本概念
java.lang.String类由final关键字修饰,表示不能被继承。
该类的实例可以描述Java应用程序中所有的字符串字面值,如:“abc”。
该类描述的字符串内容是个常量,一旦创建完毕则无法更改。

如:
String s1 = "hello"; 
s1 = "world";        - 更改变量s1的指向而不是指向的内容,内容始终不变。
如:
String s1 = "";    - 空字符串,有对象但没有内容
String s1 = null;  - 没有对象

常用的构造方法

String() - 使用无参的方式来构造空对象。
String(byte[] bytes) - 根据参数指定的byte数组来构造对象。
String(byte[] bytes, int offset, int length) 
- 根据byte数组中从offset位置开始的length个字节来构造对象。
String(char[] value) - 根据参数指定的char数组来构造对象。
String(char[] value, int offset, int count) 
- 根据char数组中从offset位置开始的count个字符来构造对象。
String(String original) - 根据参数指定的字符串内容来构造对象。

常用的成员方法

该类重写了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结尾的子字符串并返回。 

正则表达式(熟悉、JS)

基本概念

正则表达式本质上就是一个字符串,**通常使用^开头$结尾,**主要用于对用户输入的数据格式进行验证,不对内容验证。

常用的格式

[abc]  - 表示可以出现a、b 或 c。
[^abc] - 表示可以出现任何字符,除了 a、b 或 c。
[a-zA-Z] - 表示可以出现a 到 z 或 A 到 Z,两头的字母包括在内。

\d - 表示可以出现任何数字:[0-9]。 
\D - 表示可以出现任何非数字: [^0-9]。
\s - 表示可以出现任何空白字符:[ \t\n\x0B\f\r]。
\S - 表示可以出现任何非空白字符:[^\s]         
\w - 表示可以出现任何单词字符:[a-zA-Z_0-9] 
\W - 表示可以出现任何非单词字符:[^\w] 

X? - 表示X可以出现一次或一次也没有,也就是0 ~ 1次。
X* - 表示X可以出现零次或多次,也就是0 ~ n次。
X+ - 表示X可以出现一次或多次,也就是1 ~ n次。
X{n} - 表示X出现恰好 n 次。
X{n,} - 表示X出现至少 n 次,也就是>=n次。
X{n,m} - 表示X出现至少 n 次,但是不超过 m 次,也就是>=n并且<=m。      

常用的方法

boolean matches(String regex) - 用于判断当前字符串是否匹配参数指定的正则表达式。

StringBuilder类和StringBuffer类(查手册会用即可)

基本概念
由于String类描述的字符串是个常量不可更改,当程序中出现大量相似的字符串时,对内存空间的消耗比较大,为了节省内存空间直接对字符串本身更改,则需要借助StringBuilder类和StringBuffer类。
StringBuffer类是jdk1.0开始就有的类,属于线程安全的类,因此效率比较低。
StringBuilder类是jdk1.5开始有的类,属于非线程安全的类,因此效率比较高。

常用的方法

StringBuilder(String str) - 根据参数指定的字符串内容来构造对象。
- 初始容量为:16 + str的长度。
StringBuilder insert(int offset, String str) 
- 用于将参数指定的字符串str插入到当前字符串中下标为offset的位置。
- 用于当前字符串自身。
StringBuilder append(String str) 
- 用于将参数指定的字符串str追加到当前字符串的末尾。
StringBuilder delete(int start, int end) 
- 用于将当前字符串中从start位置开始到end位置结束之间的内容删除。
StringBuilder replace(int start, int end, String str) 
- 用于将当前字符串中start到end之间的内容使用str进行替换。
StringBuilder reverse() 
- 用于将当前字符串中的内容进行反转。 
int capacity() - 用于返回当前字符串对象的容量。
int length() - 用于返回字符串的长度。

日期相关的类(查询手册会用即可)

Date类

1 基本概念
java.util.Date类用于描述特定的瞬间,可以精确到毫秒。

2 常用的方法
Date() - 无参构造方法,默认使用当前系统时间来构造对象。
Date(long msec) - 根据参数指定的毫秒数来构造对象。
- 其中参数为距离1970年1月1日0时0分0秒的毫秒数。
long getTime() - 用于获取当前调用对象距离上述标准时间的毫秒数并返回。
void setTime(long msec) - 用于设置当前调用对象表示的时间为参数指定的毫秒数。

SimpleDateFormat类

1 基本概念
java.text.SimpleDateFormat类用于实现日期类型和文本类型之间的转换。

2 常用的方法
SimpleDateFormat(String pattern) - 根据参数指定的模式/格式来构造对象。
- 其中模式字符串可以有:y代表年,M代表月,d代表日,H代表时,m代表分,s代表秒
public final String format(Date date) 
- 用于将Date类型转换为String类型并返回。
public Date parse(String source)
- 用于将String类型转换为Date类型并返回。

Calendar类

1 基本概念
java.util.Calendar类用于取代Date类中的过时方法进行日期和时间的处理。
2 常用的方法
static Calendar getInstance() - 获取Calendar类型的对象。
void set(int year, int month, int date, int hourOfDay, int minute, int second) 
- 用于设置年月日时分秒信息。
Date getTime() - 将调用对象转换为Date类型并返回。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值