Java面向对象知识点总结

java面向对象小知识点总结:

 

 

.基础数据类型:

1.基本数据类型:

byte,short,char,int,long,float,double,boolean它们之间的比较,应用双等号(==,比较的是它们的值。

 

2.复合数据类型

当它们用(==)进行比较的时候,比较的是它们在JVM中的存放地址,所以,除非是同一个new出来的对象,它们比较后的结果返回的值是bool类型的。Java中所有的类都是继承于Object这个基类的,在Object基类中定义了一个equals方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法别覆盖掉了,如StingIntegerDate在这些类当中equuals有其自身的实现,而不需要再比较类在堆内存的存放地址了。

 

3.Stringequal()

(1)String类中的equals()首先比较地址,如果是同一个对象的引用,可知对象相等,返回为true

(2)若不是同一对象,equals方法挨个比较两个字符串对象内的的字符,只有完全相等的时候才返回true

 

二. String   StringBuffer   StringBuilder  的区别

 

String 字符串常量(对象不可变,线程安全)

StringBuffer 字符串变量(线程安全)

StringBuilder 字符串变量(非线程安全)

 

ps:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完之后才可以用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得的数据是脏数据。

 

如果线程不是多线程,那么使用StringBuilder效率会高于StringBuffer

在大部分情况下StringBuilder>StringBuffer>String

 

.java集成

1.extends关键字,子类扩展了父类,也具有父类的全部成员变量和方法,但是java的子类不能获得父类的构造器。

2.Java没有C++中的多继承特征,每一个类最多只有一个直接父类,也就是所谓的单继承。

3.当调用子类构造器来初始化子类对象是,父类构造器总会在子类构造器之前执行。

4.创建任何java对象,最先执行的总是java.lang.object类的构造器,从该类所在继承树最顶层的构造器开始执行,然后依次向下执行。

 

.java多态

1.如果java引用变量的编译时类型和运行时的类型不一致的时候,就可能出现了多态。

2.运行时该引用变量的方法总是表现出子类方法的行为特征。

3.java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

 

.内部类的作用

1.内部类可以很好的实现隐藏,方便将存在一定逻辑关系的类组织在一起。一般的非内部类,是不允许有privateprotected权限的,但内部类可以的。

2.内部类拥有外围类的所有元素的访问权限。

3.实现多重继承,每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个接口,对于内部类都没有影响。内部类使得多继承的解决方案变得完整。

4.可以避免修改接口而实现一个类中的两种同名方法的调用。

5.方便编写线程代码。

 

.java集合

1.Collection Frameword(框架)

集合框架是一个统一的架构,用来表示和操作集合。

集合框架主要是由接口,抽象类和实现类构成。

接口:蓝色;实现类:红色
Collection
|_____Set(HashSet)
|         |_____SortedSet(TreeSet)
|_____List(LinkedList,ArrayList)

Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。
Set:不能包含重复的元素,子接口SortedSet是一个按照自然升序排列的元素的Set。有个特例,HashSet实现类能支持数据重复。
List:可以包含重复的元素,是一个有序的集合,提供了按索引访问的方式,有次序,位置不改变。

2.集合框架中的实现类

a.   ArratList类:

本质:我们可以把它看做是能够自动增长容量的数组,实际是采用对象数组来实现的。自动增长容量就是当数组内存不够的时候再定义更大的数组,然后将数组元素拷贝的新的数组中。

 

B.  LinkedList

LinkedList是采用双向循环链表实现的。

利用LinkedList实现栈(stack,队列(queue),双向队列(double-ended queue

* LinkedList的常用方法:{

* void addFirst(Object o)

* void addLast(Object o)

* Object getFirst()

* Object getLast()

* Object remove(int index)

* isEmpty()

}

C.   HashSet

HashSet实现了Set接口的hash table(哈希表),依靠HashMap来实现.

应该为要存放的散列表的各个对象定义hashCode()equals()方法

因为Set接口中不能有重复的元素。

D.   TreeSet

TreeSet是依靠TreeMap来实现的。

TreeSet是一个有序集合,TreeSet中元素将按照升序排列

缺少是按照自然排序进行排列,意味着TreeSet中元素要实现Comparable接口

我们可以在构造TreeSet对象时,传递实现了Comparator接口的比较器对象。

 

HashSet是基于Hash算法实现的,其性能通常优于TreeSet.
通常都应该使用HashSet,在需要排序的功能时,才使用TreeSet.

3Map 

Map---(HashMap)
|_____SortedMap(TreeMap)

Map:存储的是key-value对(键值对)不能包含重复的key,可以有重复的value子接口SortedMap是一个按升序排列keyMap。

 

Map接口实现类:

(一)HashMap

key进行散列.实现了所有hashmap操作,允许空值和空键.

map接口没有add()方法.
要放置元素通过put()方法.,放置相同的key值时会覆盖掉第一个value值

 

常用的方法.

Object put(Object key,Object value)
获取元素的时候
Object get(Object key)
通过键获取值
Hash表,通过键计算出相对应的存储位置的值,并输出.
Set entrySet()
返回一个键值对视图类型是Set.
返回的Set集合当中每一个对象都是一个Map.Entry对象.
Map.Entry是一个静态的接口.
接口中提供了常用方法
Object getKey()
Object getValue()

(二)TreeMap

实现了sorted Map接口的类
TreeMap按照key进行排序.
类似HashMap用法
**********************
HashMap和TreeMap比较
Set类似,HashMap的速度通常都比TreeMap快,
只有在需要排序的功能的时候,才使用TreeMap.

 

七.迭代器:Iterator接口

Collection提供了一个iterator()方法,可以返回一个迭代器,迭代器是指向两个元素之间的指针。凡是继承自Collection的接口或间接的实现类都有这个方法.
     (一)迭代器3个方法
       1.hasNext()
    2.next()

3.remove()

hasNext()判断是否有更多的元素,如果有返回true

next()返回的是下一个对象值
remove()方法remove()方法需要删除上一个返回的元素,需要先调用next()方法后在用remove(),返回的列表有时不一定真正实现remove()方法,根据需要决定是否实现.
(二)迭代器的使用场合

  迭代器能用于查找和删除。用while(。hasNext())判断是否有对象元素,如果有的话用。Next方法接收对象
    但是迭代器最主要的功能还是用来删除list里面某个对象的值,用到。Remove,使用其他方法删除list里面的值,都有可能会报错!


.Collections工具类
Collections类不同于Collection
      (一)Collections.sort(List list)

主要是对列表排序.
static void sort(List list)方法是按升序对指定列表排序.
自然排序法
这里List的泛型类要实现comparable接口的实现方法compareTo(Object o1).

 

 

(二)Collections.sort(List listC c)
排序的时候可以传递一个比较器.
C要实现Comparator接口.里面的实现方法intcompare(Object o1,Object o2)
 实现一个比较器.
比较器总是和一个特定的类相关.

 

 

 

以上只是一个java知识点简单的一个小总结,并不是很全面,内容也不是很深,以后会继续更新的,希望大佬多多指教。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值