1、Sql语句
2、java创建对象的五种方法。
1、Sql语句
create database test;
drop database test;
create table student(
id bigint not null auto_increment primary key,
name varchar(20) not null,
sex char(2) not null
);
drop table student;
alter table student change sex sexual char(1);
alter table student drop sex;
alter table stduent add sex char(1);
alter table student add index index_name (name,sex);
alter table student drop index index_name;
2、java创建对象的五种方法。
1、new
2、反射 newInstance(Constructor、Class)
3、clone–未调用构造函数
Object.clone()
在java中 clone为什么要用super.clone()方法
1.Object中的clone执行的时候使用了RTTI(run-time type identification)的机制,动态得找到目前正在调用clone方法的那个reference,
根据它的大小申请内存空间,然后进行bitwise的复制,将该对象的内存空间完全复制到新的空间中去,从而达到shallowcopy的目的。
所以你调用super.clone() 得到的是当前调用类的副本,而不是父类的副本。根本没有必用调用this.clone();
2、super.clone(),最终就会来到Object.clone() 。保证需要深拷贝的地方能深拷贝
Cloneable的用途
Cloneable是标记型的接口,它们内部都没有方法和属性,实现 Cloneable来表示该对象能被克隆,能使用Object.clone()方法。
如果没有实现 Cloneable的类对象调用clone()就会抛出CloneNotSupportedException。
该方法是一个native方法,表示该方法有实现体,只不过是用其他语言实现的。
有两个好处:1、调用底层方法;2、效率比较高
浅拷贝:
public Object clone()throws CloneNotSupportedException{
return super.clone();
}
深拷贝:
public Object clone()throws CloneNotSupportedException{
CloneSimp cloneSimp=(CloneSimp) super.clone();
cloneSimp.persion=(Persion) persion.clone();
return cloneSimp;
}
4、序列化–未调用构造函数