Java基础

Java

大小写敏感:这就意味着标识符Hello与hello是不同的。

类名:类名的首字母应该大写,每个单词的首字母应该大写,例如 MyFirstJavaClass,驼峰命名。

方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。

源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。

主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。

常见基本数据类型:

                                整形:byte,short,int,long

                                浮点型:float,double

                                字符型:char

                                布尔型:boolean

引用数据类型:string,数组(下标从0开始,尾标长度-1)

== 和 equals区别

基本数据类型 == 比较值,引用数据类型 == 比较内存地址

基本数据类型不能用equals ,引用数据类型默认使用object类的equals 采用 == 比较,重写equals方法可以进行内容或值比较,如string类

字符串常量池:

Byat,Short,Integer,Long创建范围在-128到127之间会存在缓存数据。Char范围在0到127之间

优点:直接从缓存中获取,减少对象重复创建带来的内存和性能开销,提升了性能

在Java中都是值传递,如果是基本数据类型,复制值,传递给方法。如果是引用数据类型,复制对象在Heap堆中的内存地址在,传递给方法

Java语言支持的变量类型有:类变量:独立于方法之外的变量,用 static 修饰。实例变量:独立于方法之外的变量,不过没有 static 修饰。局部变量:类的方法中的变量。

string在1.8中采用char数组的形式存在,默认使用final修饰,所以是不可变的,在string拼接时,重新构建string

string,stringBuffer,stringBuilder区别:

string使用final修饰所以不可变

stringBuffer和stringBuilder都是可变的,stringBuffer的操作方法添加了synchronized,所以是线程安全的。但是性能低,

string的常用方法:

indexOf():返回指定字符的索引

charAt(): 返回指定索引处的字符

replace(): 字符串替换

trim():去掉两端空白

spilt():  分割字符串,返回一个数组

getBytes():  返回字符串的byte类型数组

toLowerCase、toUpperCase: 将字符串转为大写或小写

substring:截取字符串

final关键字:修饰的类为最终类不可继承,修饰的方法不可被子类重写,修饰的常量不可被修改

final,finally,finalize的区别:final用来声明变量,方法和类,finally为异常处理结构的一部分,表示无论是否异常都会被执行。finalize是object的一个方法,在垃圾回收器执行的时候会被调用对象的finalize方法,用来资源回收,例如关闭文件,释放连接等操作

Java常见的接口:

集合框架:Collection接口,list接口,set接口,map接口

比较器:comparator接口,comparable接口

io操作:closeable接口(可关闭的文件流)

线程接口:Runnable接口

异常分为两种:Error和exception,error是虚拟机异常,通常不会出现,主要解决的是exception

throw用来抛出异常。throws用来表示方法可能抛出的异常

常见的异常:NullPointerException:空指针异常,ClassNotFoundException:类无法找到异常

NumberFormatException:数字格式化异常,indexOutOfBoundsException:下标越界异常

IllegalArgunmentException:不合法参数异常,calssCastException:类型转换异常,SQLException:sql异常,操作数据库时,SQL语法错误,ioException:读写异常

集合:list集合:arraylist,linkedlist,vector,注重有序性,可排序,元素可重复

arraylist初始容量为0,添加第一个元素时为10,扩容0.5倍,线程不安全,采用object数组存储

linkedlist采用双向链表的方式存储

vector初始容量为10,扩容1倍,使用synchronized修饰,线程安全

CopyOnWriteArrayList线程安全适合读多写少的场景,只在增删改的方法添加ReentrantLock锁

        set集合:hashset,treeset,注重唯一性,元素不可重复

hashset:无序底层实现为hashmap,线程不安全,可以存储null值

linkedhashset是hashset的子类,有序,可以按照添加的顺序遍历

treeset底层使用红黑树,可自动排序,按照添加的顺序进行遍历

        map集合:hashmap,treemap,linkedhashmap,hashtable,采用键值对的方式存储,key是无序+不可重复的,value可重复

hashmap,线程不安全,采用链表+数组+红黑树的方式存储,扩容为原来的2倍,当链表长度大于8且数组长度大于64时,链表转为红黑树

linkedHashmap:继承自hashmap,底层时数组+链表+红黑树,增加了一条双向链表,使得保持了顺序

hashtable:数组+链表

treemap:红黑树组成

线程安全的集合:vector,hashtable,concurrentHashMap,CopyOnWriteArrayList

不安全的:hashmap,arraylist,linkedlist,hashset,treeset,treemap

反射,是Java的特征之一,在运行时获取任意一个对象所属的类,构造任意一个类的对象,获取一个类的成员变量和方法,调用任意一个对象的方法,常见于各类框架如spring,mybatis等

获取class的方式:class.forName,通过类的完全限定名获取

类名.class,通过类名的class属性获取

对象.getclass,该方法由object提供

序列化和反序列化

序列化:将对象转换为字节流的过程

反序列化:将字节流转换为对象的过程

被序列化的对象需要实现Serializable接口,此接口是标准接口

可以使用transient关键字指定成员变量不被序列化

Java中io流

inputStream,inputReader:字节输入流,字符输入流

OutPutStream,outPutWriter:字节输出流,字符输出流

进程是程序的一次执行过程,是系统运行的基本单位,一个进程可包含多个线程

线程的状态分为六种:new:初始状态,runnable:运行状态,mblocked:阻塞状态,

waiting:等待状态,time_waiting:超时等待状态,terminated:终止状态,程序一句执行完毕

MySQL

MyISAM不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件;

InnoDb    支持 ACID 的事务,支持事务的四种隔离级别;    支持行级锁及外键约束:因此可以支持写并发;    
不存储总行数,一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制;

主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持 B+树结构,文件的大调整。

事务特性:

1、原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。

2、一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态

3、隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,

4、持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

三大范式,有时候会不遵守

第一范式:1NF 是对属性的原子性约束,要求属性具有原子性,不可再分解;

第二范式:2NF 是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式:3NF 是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

 

DDL数据定义语言用来定义数据库对象:库、表、列等。包括创建表,修改表,删除表

Create Table,Alter Table,Drop Table, Craete/Drop Index 等

常用数据类型

int:整型

double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

char:固定长度字符串类型; char(10)  'abc       '

varchar:可变长度字符串类型;varchar(10) 'abc'

text:字符串类型;

blob:字节类型;

date:日期类型,格式为:yyyy-MM-dd;

 time:时间类型,格式为:hh:mm:ss

 timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值

 datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

 CREATE TABLE 表名(字段1  字段类型,字段2  字段类型,字段n  字段类型);

DML数据操作语言用来定义数据库记录:是对表中数据的操作。包括插入,更新,删除数据

DML是对表中的数据进行增、删、改的操作 Select ,insert,update,delete

delete操作不会减少表或索引所占用的空间。

SQL中存在三种删除:drop、delete、truncate,但是三者是不同的
delete和truncate只删除表的数据不删除表的结构
速度,一般来说: drop > truncate > delete
delete这个操作会放到rollback segement中,事务提交之后才生效;
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚

DCL数控制语言用来定义访问权限和安全级别  grant,revoke

DQL数据查询语言用来查询记录(数据):只有SELECT语句select

使用 GROUP BY 子句可以先把表分成几组

视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增、改、查操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

主键索引(PRIMARY)
数据列不允许重复,不允许为NULL,一个表只能有一个主键,通常为id。


唯一索引(UNIQUE)
数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。
可以通过 ALTER TABLE table_name ADD UNIQUE (column),创建唯一索引;
可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2),创建唯一组合索引。


普通索引(INDEX)
可以通过 ALTER TABLE table_name ADD INDEX index_name (column),创建普通索引;
可以通过 ALTER TABLE table_name ADD INDEX index_name(column1, column2,column3),创建组合索引。


全文索引(FULLTEXT)
可以通过 ALTER TABLE table_name ADD FULLTEXT (column),创建全文索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值