Java学习第六节

## Java学习第六节
一.面向对象编程
1.类
类------定义一组对象共同具有的状态和行为的模板
对象------现实世界中个体或事物的抽象表示
类的方法------对象的行为
类成员变量------对象的属性定义
类包括:对象的属性 和 行为,由class关键字声明。
语法:class className{
成员变量

成员方法

}
2.包:解决重名问题
一个java项目会涉及多个类,类多了,会涉及重名问题,包就是用来解决这个问题的。
包的命名:全部使用小写字母
3.成员变量和成员方法:表示状态与动作行为
(1)成员变量(全局变量):类体中定义的量
(2)成员方法:对象行为的描述
语法格式:
[修饰符] 返回值类型 方法名([形参表]){
…// 方法体
return 返回值
}
4.方法的返回值
成员方法存在有返回值和无返回任何值的情况。
声明方法时必须指明返回值类型,一个方法如果没有返回值,必须用void关键字作为返回值类型。
5.对象的创建与使用
(1)同一类型的对象有不同的属性,例如颜色,高度,速度等。
声明并创建对象的语法如下:
类名 对象名 = new 类构造方法( );
(2)访问对象的属性即访问类的成员变量
语法:对象名.属性
(3)执行对象的行为即执行类的成员方法
语法:对象名.成员方法名
(4)对象的销毁
Java语言提供了垃圾回收机制,为某个对象赋值null,该对象不再被使用,对不再使用的对象会自动销毁。
6.类成员与类方法
(1)类变量也是静态变量,语法上添加了static关键字。
(2)类方法
成员变量和成员方法必须创建对象,通过对象才能访问,有时候也不必创建对象,直接调用类的某个方法,即类方法。
类方法由static关键字定义。
二.类的继承与多态特性
1.类的继承
实现继承是通过extends关键字在声明类的时候指定其父类,其声明格式如下。
语法:[修饰符] class类名extends父类名
2.方法的重写与Super关键字
父类的方法并不能完全适应于子类,子类有可能要添加更多的功能,这种情况下,子类可以重写父类的某个方法,或者说是覆盖父类的某个方法。只要在子类中定义与父类相同的方法即可。
还可以在子类的构造方法中,使用super关键字执行父类的构造方法,其语法格式如下。语法:super([构造参数列表])参数:构造参数列表是可选参数,根据调用构造方法的形参声明来填充。
3.修饰符
Java中定义了private、public、protected和默认的权限修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问规则。另外,还可以辅助static和final关键字定义特殊规则。
(1)public修饰符
public是公有类型的权限修饰符,即使用public修饰的类、成员变量和成员方法,其他类都可以访问,包括任意包中的任意类、以及子类。
(2)private修饰符
private是私有权限修饰符,只有本类,即定义private私有成员的类,能够访问,对于其他方式的访问,它都会拒绝“不要碰我”。
如果一个类的成员变量或成员方法被修饰为private,该成员变量只能在本类中被使用,在子类中不可见,并且对其他包的类也不可见。
(3)protected修饰符
protected是保护级别的权限修饰符,它保护成员不会被其他包或非子类访问。即protected修饰的成员只能被子类(可以不是直接子类,即间接继承的子类也可以)和同一个包中定义的其他类访问。
(4)默认权限修饰符
当不添加任何权限修饰符时,编译器会使用默认的修饰符,该修饰符的权限级别与protected类似,不同之处在于,在其他包定义的子类无法访问父类默认权限修饰的成员。
4.封装
封装是指把对象的属性隐藏在对象的内部,不允许外部直接访问和修改。
(1)把属性隐藏
第一步就是设置类的成员变量(即对象的属性)使用private修饰符,使其他类无法直接访问该成员变量,以防止外部直接访问和修改。
(2)定义设置器
把成员变量设置为private私有权限之后,其他类就不能访问,必须通过本类定义的设置器方法来设置和修改该成员变量的值,设置器方法的命名一般以set作为前缀,属性名做后缀。
(3)定义访问器
访问器和设置器一样,因为成员变量被设置为private私有权限,相对于其他类就隐藏了这个成员变量,所以要使用访问器方法读取对象的属性值,访问器以get或is作为方法名称的前缀,以属性名作为后缀。
5.Object类
在Java中,所有的类都直接或间接继承了java.lang.Object类,Java语言中任何一个类都是Object类的子类。
在Object类中主要包括clone()、finalize()、euqals()、toString()等方法。其中常用的两个方法为equals()和toString()方法。
注意:
Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法被定义为final类型。
(1)equals方法
用于判断两个对象是否相同的方法,例如String、Integer等都重写了该方法。如果Object的子类没有重写equals()方法,该方法将默认使用“==”运算符判断两个对象。
(2)toString()方法
Object类中toString()方法的功能将一个对象转换为字符串形式,当一个对象参与字符串的“+”连接符操作时,也会调用该方法把对象转换成字符串,然后再和另一个字符串操作数连接。
三.字符串处理
1.String类
由多个字符连接而成的称之为字符串,在Java语言中字符串必须包含在一对双引号(" “)之内。字符串是由许多个字符连接而成的。例如:“23.23”、“ABCDE”、“你好”。这些都是字符串常量,字符串常量是系统能够显示的任何文字信息,甚至是单个字符。
(1)声明字符串
注意:在Java中由双引号包围的都是字符串,不能作为其他数据类型来使用,例如"1+2"的输出结果永远也不会是3。
语法:String str = [null]
(2)创建字符串对象
在Java语言中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。
String类的常用构造方法:
##1用字符数组构建字符串方法声明:public String(char arr[])
参数说明:字符数组arr包含要创建的字符串的所有字符。例如用一个字符数组a创建String对象使用如下代码。
##2提取字符数组部分元素创建字符串方法声明:public String(char arr[], int offset, int length)
参数说明:arr是包含一些字符的数组,参数offset表示开始截取字符串的位置,length表示截取字符串的长度。例如下列代码将提取字符数组a中的一部分创建一个字符串对象。
(3)连接字符串
##1连接多个字符串使用“+”运算符可完成对多个字符串连接的功能。
##2连接其他数据类型
如果将字符串同这些数据类型的数据进行连接,会将这些数据直接转换成字符串。
注意:只要“+”运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串形式,所以应谨慎地将其他数据类型与字符串相连。
(4)获取字符串信息
获取字符串长度:使用String类的length()方法可获取声明的字符串对象的长度。
方法声明:public String length();
(5)字符串查找:String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。
这两种方法都允许在字符串中搜索指定条件的字符或字符串。
indexOf()方法返回的是搜索的字符或字符串首次出现的位置。
lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。
##1indexOf(String s):该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回值是−1。
语法声明:public int indexOf(String substr)
##2lastIndexOf(String str):当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回−1。
方法声明:public int lastIndexOf(String substr)
(6)获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。
方法声明:public char charAt(int index)
参数说明:index用于指定要返回字符的下标。
2.格式化字符串
String类的静态format()方法用于创建格式化的字符串。该方法使用指定的格式字符串和参数返回一个经过格式化的字符串,格式化后的新字符串使用本地默认的语言环境。
方法声明:public static String format(String format, Object…args)
日期和时间字符串格式化:
如果使用字符串的format()方法格式化日期和时间,可以得到日期字符串的完整格式或者部分字段,例如获取单独的年、月或日信息。
使用format()方法不但可以完成日期的格式化,也可以实现时间的格式化。时间格式化转换符要比日期转换符更多、更精确,它可以将时间格式化为时、分、秒、毫秒。
格式化常见的日期时间组合:
在这里插入图片描述
3.字符串生成器
对于创建成功的字符串对象,它的长度是固定的,内容不能被改变。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行连接以获取符合条件新字符串,将极大地增加系统开销。而Java6新增了可变的字符串序列StringBuilder类,它大大提高了频繁增加与修改字符串的效率。
利用StringBuilder类中的方法可动态地执行添加、删除和插入等字符串的编辑操作,该类的常用方法如下。
(1) append()方法
该方法用于向字符串生成器中追加内容。
通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。
方法声明:public StringBuilder append(int content)
(2)insert(int offset, arg)方法
该方法用于向字符串生成器中的指定位置插入数据内容。
通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char和boolean等基本数据类型或其他对象。
方法声明:public StringBuilder insert(int offset, str)
(3)delete(int start, int end)方法
移除此序列的子字符串中的字符。
该子字符串从指定的start处开始,一直到索引end -1处的字符,如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生任何更改。
方法声明:public StringBuilder delete(int start, int end)
4.使用正则表达式
正则表达式通常被用于判断语句中,来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“\d”表示数字0~9中任何一个,“\d”就是元字符。
在正则表达式中可以使用方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。
例如reg = “[abc]4”,这样字符串"a4”、“b4”、"c4"都是和正则表达式匹配的字符串。
方括号元字符还可以为其他格式。例如:
[^456]:代表4、5、6之外的任何字符。
[a-r]:代表a~r的任何一个。
[a-zA-Z]:可表示任意一个英文字母。
[a-e[g-z]]:代表a~e,或g~z中的任何一个字母(并运算)。
[a-o&&[def]]:代表字母d、e、f(交运算)。
[a-d&&[^bc]]:代表字母a、d(差运算)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值