Java知识点的总结(一)

前言:也写个博客吧(其实就是想写个笔记,总结下知识点,加深加深记忆,不喜勿喷。欢迎各位指正)

1.equals 

equals的本质其实也是==,只不过String,Integer 等重写了equals的方法把它改成了值的比较,详情请看如下源码:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;

很多类方法都重写object的equals方法,把原来默认比较引用改成了比较值。

2.mysql

存储引擎是MySQL的核心,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作,不同的引擎提供不同的存储机制,索引方法及锁技巧。

MySQL的数据存储我的理解就是:

表创建时使用数据引擎(mysql默认引擎InnoDB)存储数据,在使用索引时以b-tree或hash结构重新排列数据处理慢查询问题,一般来说b-tree结构处理千万及数据也只需在磁盘中io两次非常快速。

b-tree结构图

www

hash:

以一种hash算法直接定位到需要查找的引用地址(不是很明白)

索引类型的选用:

一般是选择btree,在sql的实际应用中,肯定会使用一些范围查询。

btree结构每一行右边的都比左边的大(具体的自己看,文字不太好描述),因此范围查询就很合适,hash就没发整了。

3.构造方法(函数)

构造方法作用就是对类进行初始化。 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法

构造方法的方法名必须与类名一样。
构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
构造方法不能由编程人员调用,而要系统调用。
构造方法可以重载,以参数的个数,类型,或排序顺序区分。

4.HashMap 

底层其实是数组和链表的结合,当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。

需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

5.List

list:有序可重复;ArrayList底层由数组实现,linkedList底层由双链表实现,Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步

6.Set

HashSet:底层是哈希表。线程是非同步的,保持数据唯一性:判断元素的hashCode值是否相同。
              如果相同,还会继续判断元素的equals方法,是否为true。

TreeSet:可以对Set集合中的元素进行排序,数据结构是二叉树。保持数据唯一性compareTo方法return 0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值