java复习总结
hashcode()和equals()
hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。
equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。
运行效率:hashcode的时间复杂度为O(1)(因为只要计算一次哈希值就行了),equals的时间复杂度为O(n)(因为要比较每一个值),所以在比较是否相同时要优先使用hashcode方法获取的值是否相同。
当输入样本量足够大时,不相同的对象调用hashcode是会产生相同输出的,也就是形成哈希冲突。这时equals的好处就体现出来了,他不会出现判断错误的情况,所以我们只要在hashcode相同的时候使用equals进行进一步的判断,这样就可以保证不会出现误判的情况了。
hashcode和equals的默认方法并不好用,所以如果要查看对象之间是否相同最好要重写hashcode和equals方法。如果只重写一个方法就会出现一个方法相同但另一个方法不同的情况。
(没搞懂)
default关键字
当使用default关键字在接口中修饰方法时,该方法被允许拥有方法体。(方法的默认实现)
接口的多继承
虽然在java中类是单继承的,但是接口和接口之间是允许多继承的,一个接口可以有多个接口作为父类,这样只要实现一个接口就算是实现了多个接口。
public class Main {
public static void main(String[] args) {
My my=new My();
my.methodA();
my.methodB();
my.methodCommon();
my.method();
my.methodDefault();
}
}
interface MyInterfaceB {
public abstract void methodB();
public abstract void methodCommon();
public default void methodDefault() {
System.out.println("BBB");
}
}
interface MyInterfaceA {
public abstract void methodA();
public abstract void methodCommon();
public default void methodDefault() {
System.out.println("AAA");
}
}
interface MyInterface extends MyInterfaceA, MyInterfaceB {
public abstract void method();
@Override
public default void methodDefault() {
System.out.println("CCC");
}
}
class My implements MyInterface{
@Override
public void methodB() {
System.out.println("b");
}
@Override
public void methodA() {
System.out.println("a");
}
@Override
public void methodCommon() {
System.out.println("c");
}
@Override
public void method() {
System.out.println("d");
}
@Override
public void methodDefault() {
MyInterface.super.methodDefault();
}
}
运行结果:
同步和异步
同步:发出一个调用时,在没有得到结果之前,该调用就不返回。
异步:在调用发出后,被调用者返回结果之后会通知调用者,或通过回调函数处理这个调用。
阻塞和非阻塞
阻塞:在进行一个调用之后,在调用结果放回之前该线程会被挂起,直到调用结果返回才会开始运行。
非阻塞:在进行一个调用之后,线程不会被挂起,可以运行其他的代码。
Mysql必知必会笔记
基本概念
数据库:用于保存数据的容器;
表:用于保存拥有着一样特性的数据的容器;
列:表中的一个字段(数据的特性),每一个表由一个或多个列组成;
数据类型:用于规范数据的格式和长度,每一个列都有对应的数据范围;
行:表中记录的数据,每一行都是一个数据;
主键:其值用于区分每一个数据,每一个数据都有不同的主键;
进入数据库
连接到数据库需要:主机名(本地为localhost)、端口(如果使用默认端口3306之外的端口)、合法的用户名、用户口令(如果需要)。
打开命令提示符窗口输入以下命令
mysql -u root -p;
提示输入密码,输入正确后成功进入数据库。
进入数据库之后还不能使用,要先指定使用那一个数据库.输入以下命令查看数据库列表
show databases;
使用数据库:
use 数据库名; 例:use chat;
显示
代表指定成功;
显示指定数据库的表的列表:
show tables;
显示表的列数据:
show columns from 表名;
例:show columns from topic;
describe 表名;
例:describe topic;