一. 面向对象: {
1.面向对象的思想 :基于面向过程的编程思想
特点:符合我们思想的
将复杂的简单化
将我们从执行者变为指挥者
开发:不断创建对象使用对象指挥对象做事情
设计:就是管理和维护对象之间的关系
特征:封装,继承,多态
2.类与对象及其使用 :
类:java中基本单位
类:相关属性和行为的集合
对象:该类事物的具体的表现形式,new出来的,类的具体存在的个体
3.成员变量和局部变量的区别 ?
在类中的位置不同
成员变量 类中方法外
局部变量 方法中或者是方法声明中
在内存中的位置不同
成员变量 堆内存
局部变量 栈内存
生命周期不同
成员变量 随着对象的创建而创建,随着对象的消失而消失
局部变量 随着方法的调用而创建,随着方法的调用完毕而销毁
初始化值不同
成员变量 有初始化值
局部变量 没有初始化值,必须赋值之后才可以使用
4.匿名对象
就是没有名字的对象 使用场景: 匿名对象作为实际参数传递;调用方法,仅仅只是调用一次的时候
5.this关键字 当前对象的引用 {局部变量隐藏成员变量的时候使用this,就是说局部变量和成员变量名一样的时候,使用this,代表的成员位置的那个变量}
6.构造方法 :用于对对象的数据进行初始化 {方法名和类名相同;没有返回值,连void都没有;} 对于构造方法,其实是可以后面写上return,仅仅表示方法结束,其实其他的任意void方法都可以后面写上return
7.static关键字: 存在方法区的静态区
随着类的加载而加载
优先于对象存在
被类的所有对象共享
可以通过类名和对象名调用
在静态方法中,没有this关键字,static是随着类的加载而加载的,this是随着对象的创建而存在,静态比对象先存在
8.静态变量和成员变量的区别:
所属不同
内存中的位置不同
内存出现的时间不同
调用不同
9.代码块
局部代码块:在方法中出现,限定变量的生命周期,及早释放,提高内存利用率
构造代码块:在类中方法外,多个构造方法中的相同的代码放到一起,每次调用构造都执行,并且在构造方法前执行
静态代码块:在类中方法外,加static修饰,用于给类初始化,在类加载的时候执行一次,并且执行一次
静态代码块>>构造代码块>>构造方法
10.继承中构造方法的关系:
子类的所有的构造方法都会默认去访问父类中的空参构造,因为子类继承父类中的数据,可能还会使用父类中的数据,所以子类初始化之前,一定要完成父类的数据初始化 ,每一个构造方法的第一条语句默认都是super()
11.抽象类中可以不定义抽象方法吗?
可以,抽象类的作用仅仅是为了不让该类创建对象
12.类与类,类与接口,接口与接口的关系?
类与类:继承关系,只能单继承,可以多重继承
类与接口:实现关系
接口与接口:继承关系,可以多继承
13.final的特点
可以修饰类,方法,变量
修饰类,类不能被继承
修饰方法,方法不能被复写
修饰变量,变量就成了常量,只能被赋值一次
14.final修饰变量的初始化时机:
在对象构造完毕之前初始化即可
常见的给值:1.定义的时候直接给值 2.构造方法中
}
二 .常见类 {
1.object类
hashcode方法: 返回该对象的哈希码值 ,将对象的内部地址值转换为一个整数.根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.
getClass方法: 返回次object的运行时类/就是字节码文件的对象
equals方法: 这个此方法被重写的时候,默认情况下比较的是地址值,当此方法重写的时候,通常要重写hashcode方法.字符串的equals的方法比较的是内容是否相同 ./我们重写equals方法,就是比较成员变量的值
基于的原理就是字符串的equals的比较的是内容
toString方法: 返回该对象的字符串表示形式.方法值等价于getClass().getname()+@+integer.toHexString(hashCode()), 直接输出一个对象名,其实就是调用对象的toString方法
2.Sting类 { (获取功能)
1,遍历 charAt(索引)
2,length 获取长度
3.统计大小写以及数字的次数.遍历判断范围 ‘a’ ‘z’ ‘0”9’ ‘A’ ‘Z’
String类(转换功能)
1.getBytes
2.toCharArray
3.valueOf 方法重载 任意类型的数据转为字符串
4.大小写转换 toLowerCase
5.concat把字符串拼接
其他的功能
1.替换 replace
2.去除空格
3.按照字典顺序比较大小
字符串反转案例:
}
3.StringBuffer类
4.StringBuilder类
}
三 . 集合 {
1.集合 collection map
2.collection集合里面包含list和set集合 list集合是重复,有序的集合 set集合是不重复,无序的集合 list集合下有分支 arrayList linkedList set下面分 HashSet TreeSet
3.map集合是以键值对存在的 hashMap HashTable Treemap
4.collection是最基本的集合接口,所有的子类都必须实现两个构造方法 无参{创建新的空collection} 带参{传入一个集合,相当于复制}
5.collection的方法:
添加 add方法 addAll
删除 clear 清空 remove 删除 removeAll(传入集合 )
判断 contains 包含 isEmpty() containsAll( 传入集合) 包含
size() 集合中元素的个数
集合转换为数组 toArray();
list集合 {
arrayList 数组结构 查询快 增删慢 不同步 { 队列 先进先出}
linkedList 链表结构 查询慢 增删快 不同步 {堆栈 先进后出}
方法 : get(index) set(index,dement)
subList(index,index) 截取
linkedList的特有方法: 围绕着头和尾展开的方法
addFrist addLast getFrist getLast
removeFrist removeLast 获取头部或者是尾部的元素 并且删除
}
set集合{
HashSet 哈希表结构 查询快,不同步
保证元素的唯一性,依赖于 hashCode()方法 和 equals()方法
HashSet还有一个子类是linkedHashSet {
存取的顺序一致 底层结构是 哈希表+链表
}
TreeSet 底层数据结构是 红黑树(一种自平衡的二叉树)
}
Map集合{
注意的就是间是唯一的,值可以重复 ,每个键只有一个值.键值对的形式而存在
遍历 1.根据键找值 获取键集keyset() 遍历键集,找值 get(key)
2.根据键值对找键值 获取键值对对象的集合 entrySet() 遍历集合,获取键值对对象的集合,然后根据键值对对象找到键值
map集合的删除方法 可以根据键来删除 remove(key)
}
collections 工具类 针对集合操作的工具类 sort reverse max min
}
四 . 异常
错误和异常
五 . IO流 {
1.File 文件和目录路径名的抽象表现形式
方法 :
创建文件 creatNewFile()
创建文件夹 mkdir() 创建多级文件夹 mkdirs()
删除 delete()
重命名 reNameTo()
判断功能{
isDirectory() 是否是文件夹
isFile() 是否是文件
exists() 是否存在
canRead() 是否可读
canWrite() 是否可写
isHidden() 是否隐藏
}
获取功能{
getAbsolutepath() 获取绝对路径
getpath() 获取相对路径
getLength() 获取文件长度
getName() 获取文件名
lastModified() 获取最后修改时间
List() 获取目录中的文件名
ListFiles() 获取目录中的文件
}
字节流 inputStream outPutStream
字符流 reader writer
方法 就是read write read方法 当读取到文件末尾的时候返回-1 write方法写入数据的时候,可以按照字节数组写入 fos.write( byte[]) fos.write( byte[],int off ,int len)
字节缓冲流 bufferedoutputStream bufferedInputStream
输出流的刷新功能 flush()
对象序列化流 objectoutputstream 向流中写入数据
对象反序列化流 objectinputstream 从流中读取数据
对象序列化一定要是实现serializable接口
如果对象中有的成员变量不需要被序列化,使用关键字transient声明
}
六 . 网络编程
OSI参考模型 {
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
}
TCP/IP参考模型 {
应用层
传输层
网际层
主机至网络层
}
网络编程的三要素{
ip
端口(0-65535)
协议 (tcp 建立数据通道,无限制,效率低但是可靠 udp 数据打包有限制,不连接,不可靠)
}
socket机制 : 通信两端都有socket对象; 所有通信都是通过socket之间的io进行操作的 socket用于将应用程序和端口连接起来
七 . 多线程
多线程的创建方式 {
方式1.继承Thread,调用start方法
方式2.实现runnable接口 ,实现run方法,start开启
}
同步锁:多个线程想保证线程安全,使用的是同一个锁对象
关键字: synchronize
八 . 数据库 {
数据库的启动和关闭 {
net start mysql;
net stop mysql;
}
登录{
mysql -user=用户名 –host=ip地址 –password=密码
}
sql语句{
结构化查询语句,关系数据库语言的国际标准
sql分类{
数据定义语言{(DDL) create alter drop }
数据操作语言{(DML) insert delete update}
数据控制语言{(DCL) grant}}
数据查询语言{(DQL) select from where }
}
数据库操作 {
创建数据库 create database 数据库名; (character set 编码)
查看数据库 show databases;
show create database 数据库名;
删除数据库 drop database 数据库名 ;
切换数据库 use数据库名;
查看正在使用的数据库 select database;
}
表操作 {
创建表 create table 表名(字段名 类型 约束,字段名 类型 约束)
查看表 查看所有的表 show tables;
查看表结构 desc 表名;
删除表 drop table 表名 ;
修改表 alter {
添加列
修改列的类型长度以及约束
修改列名
删除列
修改表名
这几个方法差不多,alter table 表名 +后面的不一样 add change drop
}
}
插入记录 {
insert into 表名 (列名1 ,列名2...)values (值1,值2...)
}
更新记录{
update 表名 set 字段名=值 where 条件;
}
删除记录{
delete from 表名 where 条件; /delete from 表名 having 后面可以是聚合函数
}
分组查询 Group by
limit 从第几条开始查询,查询几条数据 从第几条开始查询但是不包含当前的第几条
}