面向对象二Word文档下载推荐.docx
- 文档编号:21818919
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:16
- 大小:133.63KB
面向对象二Word文档下载推荐.docx
《面向对象二Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面向对象二Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
*成员变量:
全部是常量
*publicstaticfinal
*成员方法:
全部抽象方法
*成员方法直接默认成抽象的,可以省略abstract
*一个类可以实现多个接口
*接口可以继承接口
*一个类可以继承一个类的同时再实现多个接口
*接口不能实例化,
*多态的应用:
一个接口的引用指向一个实现类对象(更常用)
4.一些常用类
API:
(ApplicationProgrammingInterface)
应用程序编程接口。
即JAVA提供给我们使用的类。
这些类将底层的实现进行了封装。
作为程序员不需要关心这些类是如何实现的,我们需要学习如何使用这些类。
看帮助手册。
看帮助手册的方法:
1)先看某个类的构造方法
2)看这个类的相关方法
1 Object
类Object是类层次结构的根类。
每个类都使用Object作为超类。
所有对象(包括数组)都实现这个类的方法。
关心Object的三个方法:
看参数,看返回值,看此方法是不是静态的。
1,hashCode()
哈希值:
是根据对象的地址换算出来的一个int值,不同的对象,地址不同,hash值也是不同的。
2,equals
Object的equals方法比较的仍然是地址值。
(可参考源代码)
String重写了equals方法。
如果我们自己的类想要比较两个对象是否内容一样(即成员变量的值是否相等),就需要像String一样重写equals方法。
例如:
publicbooleanequals(Objectobj){
if(this==obj){
returntrue;
}
if(objinstanceofStudent){
Students=(Student)obj;
returnthis.name.equals(s.getName())&
&
this.age==s.getAge();
returnfalse;
}
3,toString
打印一个对象时,默认调用toString()方法。
而toString()方法返回结果是:
getClass().getName()+'
@'
+Integer.toHexString(hashCode())
2 String
String类代表字符串。
字符串是常量;
它们的值在创建之后不能更改.
String可以看作是字符数组。
Stringstr=“hello”;
str=“world”;
String类的方法:
A,判断功能
equals
contains
startWith
endWith
isEmpty
B,获取功能
charAt
substring(startIndex,endIndex)startIndex包括,endIndex不包括
C,转换功能
toCharArray
toLowerCase
toUpperCase
getBytes
D,其他
length()
concat()效果同+
3 日期相关类
a)Date
Date中的很多方法已过时,需要用Calendar中的相关方法取代。
需了解的方法:
Date()
Date(longdate)
getTime()
setTime()
b)Calendar
是一个抽象类
它的getInstance()方法实际上返回的是其子类的对象。
getInstance()
get(intfield)取代了诸如Date中的getYear,getMonth等。
set(...)
getTime()返回一个Date对象.实现Calendar与Date的转换。
需了解的常量字段:
Calendar.YEAR
Calendar.MONTH(月份从0开始)
Calendar.DATE
(其他参考API)
c)SimpleDateFormat
用于对日期按要求的格式进行处理。
简单总结:
与日期相关的类:
1,Date
构造方法:
Date()--当前时间
方法:
longgetTime()
voidsetTime(longdate)-与Date(longdate)作用相同
Date重写了toString()方法,返回的是dowmonddhh:
mm:
sszzzyyyy
与中国人表示日期的习惯不同。
所以我们需要一个格式化类。
2,SimpleDateFormat
SimpleDateFormat(Stringpattern)
pattern常用格式"
yyyy-MM-ddHH:
ss"
Stringformat(Date)--将一个日期对象转成指定格式的字符串
Dateparse(Strings)--将指定格式的字符串转成日期对象
java.text.ParseException:
Unparseabledate:
"
2005年12-1010:
12:
30"
模式串(格式串)必须和表示日期字符串(s)的格式要完全一致。
3,Calendar--Date的取代类
抽象类
CalendargetInstance()--返回的是一个子类对象
intget(intfield)--取代了Date的getYear,getMonth,getDate...
field的取值参考Calendar的常量字段
intset(intyear,intmonth,intdate);
--month从0开始
4,Date转成Calendar
setTime(Datedate)使用给定的Date设置此Calendar的时间。
Calendar转成DateCalendar的getTime()返回Date
5.基本数据类型的包装类
java为以下8种基本数据类型提供了对应的包装类,通过这些类可以把基本数据类型包装成对象使用。
JDK1.5开始提供自动的装箱和拆箱功能。
允许把基本数据类型的值直接赋给包装类的引用变量(装箱)。
也允许把包装类对象直接赋给对应的基本数据类型变量(拆箱)。
byte-Byte
short-Short
int-Integer
long-Long
char-Character
boolean-Boolean
float-Float
double-Double
1 Integer说明
把一个int类型的值转换成Integer的方法:
1,通过构造方法(newInteger(int))
2,Integer.valueOf(int)--优先使用
内部缓冲区-128到127之间。
超过此区间会重新new
直接装箱的动作Integeri=10;
默认调用valueOf(int)方法。
将字符串(数值型字符串)转成int的方法:
Integer.parseInt(str)
把int(Integer)转成字符串的方法:
Integer.toString(int)
2 Character
6.集合类
数组可以存放基本数据类型和引用数据类型的数据
但是数组长度固定,不能适应变化的需求
1)集合根接口Collection
interface
Collection层次结构中的根接口
2)集合类的继承体系
java当中提供了不同的集合类,但这些集合都有一些共性的东西,于是就有了集合的继承体系。
而Collection就是这个体系的根结点。
Collection规范中规定了作为集合必须实现的功能:
a,添加功能
add(Objectobj)
b,删除功能
remove()
clear()
c,判断功能
isEmpty()
contains()
d,遍历功能
Iteratoriterator()
Iterator-hasNext()next()
e,转换功能
Object[]toArray()
f,获取功能
sizw()
遍历集合的两种方式
a,使用iterator()--推荐
b,使用toArray()
3)List特点
集合中的元素可以重复,并且元素有序(存储和取出顺序一致)
list.add(“hello”);
0
1
4)Set特点
集合中的元素不可以重复,并且元素无序。
(存储顺序和取出不一致)
像一个大盒子,无法记住添加元素的顺序,因此元素也就不能重复,否则集合就无法准确识别某个元素。
set.add(“hello”);
面试问题:
List和Set的区别
ArrayList,LinkedList,Vector的区别
●实现类HashSet
HashSet是Set的典型实现。
是最常用的一个Set实现类。
HashSet是按照Hash算法来存储集合元素的。
有良好的存取和查找性能。
不是同步的。
如果有多个线程同时修改集合,我们必须自己通过代码来保证数据安全。
元素可以为null,且只能有一个。
当向HashSet中存储元素时,HashSet会调用元素的HashCode()方法得到对象的hashCode值,用这个值来决定元素在HashSet中的存储位置。
如果两个元素的equals的比较为true,但是hashCode值不同,HashSet会将这两个元素存储在不同的位置,可以添加成功。
如果两个元素的equals的比较为true,但是hashCode也相同,不能存入。
遍历方法:
1,通过Iterator
2,通过增强for(可以遍历数组和集合)
结论:
当我们自定义的对象存储到HashSet中时,应该重写equals和hashCode方法
自动生成即可。
●实现类TreeSet
使用元素的自然顺序对元素进行排序.此实现不是同步的.
构造方法:
TreeSet():
构造一个新的空set,该set根据其元素的自然顺序进行排序。
自然顺序:
内部还是调用对象的compareTo方法进行比较的。
5)Map特点
将键映射到值的对象。
一个映射不能包含重复的键;
每个键最多只能映射到一个值。
值可以重复。
●实现类HashMap
此类不保证映射的顺序。
线程不安全,此实现不是同步的.效率高。
允许null键和null值。
添加:
booleanput(k,v);
移除:
vremove(k);
voidclear();
判断:
booleanisEmpty();
booleancontainsKey(k);
booleancontainsValue(v);
获取:
vget(k);
Set<
k>
keySet();
Collection<
v)values();
Map.Entry<
k,v>
>
entrySet();
intsize();
●实现类Hashtable
Hashtable是比较早的一个实现类,线程安全,是同步的,但是效率低。
不允许null键和null值,如果设置会引发空指针异常。
注意:
一般不会Hashtable,如果需要保证线程安全,可以通过Collections工具类将HashMap变成安全的。
6)Collections操作集合的工具类
排序方法:
Sort(List)
查找方法:
binarySearch
使用二分搜索法搜索指定列表,以获得指定对象。
在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过sort(List)方法)。
如果没有对列表进行排序,则结果是不确定的。
打乱集合:
shuffle(List<
?
list)
反转集合:
reverse(List)
7)集合回顾
Collection单列集合
|-List(有序,可重复)
|-ArrayList内部用数组实现,线程不安全,效率高。
在查询时效率较高,但是增删时效率低。
|-Vector内部用数组实现,线程安全,效率低。
|-LinkedList内部用链表实现,线程不安全,效率高。
在查询时效率较低,但是增删时效率高。
List遍历方式:
a,迭代器
b,增强for
c,get(index)和size()组合用普通for
|-Set(无序,唯一)
|-HashSet通过hashCode和equals方法保证唯一性。
|-TreeSet按照自然排序方式对元素排序。
如果是自定义的类作为元素被排序应该实现Comprable接口,
Set遍历方式:
Map(元素是键值对,键唯一)双列集合
|-HashMap线程不安全,效率高。
|-Hashtable线程安全,效率低。
不允许null键和null值。
Map遍历方式:
a,先得到key的集合(Set),通过set的遍历方式得到value
b,t先得到键值对的集合(Set),通过set的遍历方式得到Map.Entry<
Collections和Collection的区别:
Collection是集合体系的一个根接口。
Collections是操作集合的一个工具类。
集合中必须掌握的方法:
Collection:
add(E),remove(0,contains(E),iterator(0,size()
List:
get(index)
Set:
没有特殊方法
Map:
put(k,v),remove(k),containsKes(k),containsValue(v),keySet(),values(),entrySet(),size(),get(k)
8)数组和集合的区别
A,长度
数组长度固定
集合长度可变(自动扩展)
B,内容
数组只能存放同一种类型数据
集合可存放多种类型的数据
数组可以存放基本数据类型和引用类型
集合只能存放引用类型(基本数据类型被包装成其包装类)
9)常见数据结构
栈:
先进后出
压栈
出栈
队列:
先进先出
链表:
由一个或多个节点连起来的结构。
每个节点由指针域和数据域组成。
指针域存储另一个节点的地址。
ArrayList内部是用数组实现的,查询速度快,但是删除和插入较慢。
线程不安全的,效率更高。
Vector内部也是用数组实现的,查询速度快,但是删除和插入较慢,线程安全,效率较低。
LinkedList内部是用双向循环链表实现的,查询较慢,但是删除和插入较快。
线程不安全。
10)泛型
可以让集合模仿数组,在创建集合时指定元素的数据类型。
即泛型。
把类型明确的工作推迟到创建对象时,也叫参数化类型。
A,格式:
〈类型〉类型只能是引用类型
B,好处:
把运行期的问题提前到编译期
避免了强制类型转换
C,哪里会使用泛型?
参考API,如果接口,抽象类后面有<
E>
,就会使用到泛型。
一般集合中最常用。
11)泛型的应用
A,泛型类
格式:
publicclass类名<
泛型类型1,泛型类型2,……>
泛型类型只是一个标识,只要符合标识规范即可。
常用E,T,K,V
B,泛型方法
C,泛型接口
格式:
publicinterface接口名<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象