每日总结
Java
方法重写
alt+insert-》overread
1.要有继承关系,子类重写父类方法 方法必须一致(方法体不同)
2.方法名必须相同
3.参数列表必须相同
4.修饰符:范围可以扩大,但不能缩小;
(public->Protected->Default->private)
5.抛出的异常:范围只可以扩大,不可以缩小
ClassNotFoundException -》Exception(大)
WHY?
1.父类的功能,子类不一定需要,或者不一定满足
重写与重载之间的区别
区别点 | 重载方法 | 重写方法 |
---|---|---|
参数列表 | 必须修改 | 一定不能修改 |
返回类型 | 可以修改 | 一定不能修改 |
异常 | 可以修改 | 可以减少或删除,一定不能抛出新的或者更广的异常 |
访问 | 可以修改 | 一定不能做更严格的限制(可以降低限制) |
多态
注意
多态是方法的多态,属性没有多态性
父类和子类,有联系,否则类型转换异常(ClassCastException)
存在条件:
有继承关系,
方法需要重写,
父类引用 指向子类对象 Parent p = new Child();
没有重写就没有多态
不能重写的方法
static,方法属于类,不属于实例
final 常量池里面
private 是私有的,私有的方法不能重写
//对象的实际类型是确定的
//new A();
//new B();
//
A s=new A();//子类
B s1=new A();//父类引用指向子类
s.run();
s1.run();//子类重写了父类的方法,执行子类
//子类调用的方法是自己的或父类
//父类可以引用子类的,不能调用父类的方法
instanceof
System.out.println(x instanceof y) ;
输出true / false
可以判断是否存在父子关系
类型之间的转换
低到高 自动转换
高到低 强制转换
父 》 子
高 》 低
Person stu = new Student();
Student stu=(Student)stu;
stu 就是可以使用Student 的方法了
子》父
可能会丢失一些方法
SQL
基字符集:utf8
数据库排序规则:utf8_general_ci
连接数据库:
进入 mysql -uroot -p
查看 show databases
切换数据库 mysql>use school
Database changed
查看所有表 show tables;
显示所有信息 describle 数据库名;
创建数据库 create database 数据库名
操作数据库
操作数据库>操作数据库中表>操作数据库中表的数据
表名或字段名则需加上``
mysql 不区分大小写
创建数据库
create database [if not exists] westos;
删除数据库
drop database [if exists] westos;
列数据类型
数值:
- tinyint 十分小 1b
- smallint 较小 2b
- int 标准 4
- bigint 较大 8
- float
- double 8(精度问题)
- decimal
字符串
- char 大小0-255
- varchar 可变字符串 常用 String
- **text 文本串 2^16-1 ** 保存大文本
时间日期
java.util.Data
- data yyy-mm-dd 日期格式
- time hh:mm:ss 时间格式
- datatime yyyy-mm-dd hh :mm:ss 最常用
- timestamp 时间戳 ,1970.1.1 到现在的毫秒数
null
- 没有值,位置
- 不要用NULL,结果为NULL
数据库字段属性
unsigned:
无符号整数
声明了 该列不能声明为负数
zerofill
0填充
不足位数,使用0填充,
自增
自动在上一条记录的基础上+1默认
通常用来设计唯一主键~index,必须是整数类型
可以设计主键自增的起始值和步长
非空
NULL不填写值 默认值是null
默认
设置默认值
sex默认值为男,不指定该列的值则会有默认的值
每个表必须存在一下5个字段
id 主键
’version‘ 乐观锁
is_delete 伪删除
gmt _ create 创建时间
gmt_upate 修改时间
创建数据库
格式
create table [if not exists]`表名`(
`字段名` 列类型 [属性][索引][注释],--`id` INT(4) NOT NULL AUTO_INTEREMENT CONMENT `学号`
`字段名` 列类型 [属性][索引][注释],
...
`字段名` 列类型 [属性][索引][注释]
)[表类型][字符集设置][注释]--ENGING=INNODB DEFAULT CHAREST=utf8
使用命令行
use `2`; 命令用于选择数据库。 --尽量加上`` 末尾都要加分号
set names utf8; 命令用于设置使用的字符集。
SELECT * FROM student; 读取数据表的信息。
mysql> use `2`;
Database changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
Sql命令(大小写不敏感)
- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
SELECT DISTINCT
返回某列唯一不同的值
SELECT DISTINCT 列名 FROM 表名;
WHERE子句
WHERE 子句用于提取那些满足指定条件的记录。
文本字段
SELECT * FROM student WHERE gender='男';
数值字段
SELECT * FROM student WHERE id=2;
空值判断:is null
Select * from student where 某列 is null;
中值 :查询表中某列在数之间
Select * from student where 某列 between 数 and 数;
IN:查询表某列等于数
Select * from student where 列 in (数1,数2,数3);
like查询表中某列含有a的值
Select * from student where 列 like 'a%'
-
% 表示多个字值,_ 下划线表示一个字符;
-
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
-
%M% : 表示查询包含M的所有内容。
-
%M_ : 表示查询以M在倒数第二位的所有内容。
插入新记录
INSERT INTO
形式:INSERT INTO student ( id,number,name,gender,createData )
VALUES (5,2020401450,'陈画','女','2021-08-05 14:42:28');
mysql> INSERT INTO student ( id,number,name,gender,createData )
VALUES (5,2020401450,'陈画','女','2021-08-05 14:42:28');
Query OK, 1 row affected (0.01 sec)
特定列
mysql> INSERT INTO student (name, gender, createData)
VALUES ('傻逼', '女', '2021-07-24 14:44:06');
Query OK, 1 row affected (0.00 sec)
UPDATE
更新表中已存在的记录
mysql> UPDATE student
SET gender='女'
WHERE name='胡三';-->当等于某个值
//如果忽略where会将表中所有值改为所设置的
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
delete
删除表中某行
mysql> DELETE FROM student
WHERE name='胡三' AND gender='女';
Query OK, 1 row affected (0.01 sec)