JavaSE部分学习总结

学完JAVASE之后的第一次整体总结。采用关键字的方式,对自己的知识掌握程度做复盘,会的知识不做详细复盘。温故知新,道阻且长!


1、继承与抽象类继承

单继承 方法重写 访问采用就近原则抽象类:

抽象类中的方法不一定是抽象方法,抽象方法一定在抽象类中

     2、接口和多态

接口 定义规范 抽取共同行为

多态 一中事务的多种表现形式, 继承是多态的前提

封装 安全性 继承 复用性 多态 拓展性

3、修饰符和内部类

修饰符 private 本类 protected 本包及外包子父类 defalut 本包 public 公共

内部类 普通内部类和匿名内部类,匿名内部类使用较多,多在方法参数和返回值使用。

4、常用API

Math 计算的一些方法

Date时间的方法,还有字符串和时间的互相转换 SimpleDateFormat

Calendar 相当于是一个存储时间的类 可以设置,取出各个字段

System类 获取毫秒值,退出虚拟机 复制数组

Arrays toString sort binarySearch 可以找出某个元素的索引

5、异常

解决方法就是throws抛出或者是try catch捕获

也可以自定义异常,自己抛 throw

6、collection 和list

使用方法:get set remove size isEmpty等等

collection下面还有两个子类 list 和set

list中还有ArrayList 和linkedList 

Collections中的方法:shuffle打乱方法 sort排序,可以自定义排序规则,

7、set

泛型 预支未知的数据类型

Hashset无索引,不重复,无序,底层由数组和链表或者是红黑树构成,

linkedHashSet  无索引,不重复,有序  底层由数组和链表或者是红黑树构成 .多维护了一个linkedHashSet 用来排序

TreeSet  底层用的是二叉树 有序

8、Map集合

里面是键值对,底层也是由哈希表实现,数组和链表或者红黑树实现。

put get(key) keySet  entrySet   remove  values  containsKey  containsValues 

Properties  多用于配置文件  和Map一样也是键值对元素  

map不重复,存入和取出的顺序一样。

可变参数  ...参数名称   实际上是一个数组,但是在参数列表中只能放在最后一个

集合嵌套的循环   fori   forr   foreach   iterator

9、多线程

实现方法:继承Thread   实现Runnable  实现Callable接口   线程池

 线程锁:synchronized  代码块 

Lock lock = new ReentrantLock() -> lock.Lock()   lock.unLock() 

synchronized静态方法 ->使用的是类名.class   

synchronized普通方法-> 使用的是方法的调用者,this

实现方法当中的Callable接口不太常用,容易被忽视,要将实现该接口的实例化对象当作FutureTask对象的构造方法参数,再将FutureTask作为线程的参数,并且还能调用get() 获取返回值。如果是线程池提交的Callable任务,那么返回的就是Future对象,也可以调用get()方法

线程池的创建方法也有两种,ExecutorService exe = Executors.newFixedThreadPoll() ;这种方法使用默认的一些参数,要想自定义参数就要使用下面的那一种方法

ThreadPoolExecutor。其构造函数中有七种参数 

corePoolSize 核心线程数 

maximunPoolSize 最大线程数 =  核心线程数+临时线程数 

keepAliveTime 存活时间   

TimeUnit  是个枚举  存活时间的单位   

BlockingQueue阻塞队列  分为有界队列和无界队列 

ThreadFactory  线程工厂  固定写法 Exrcutors.defaultThreadFactory()  或者是Thread::new      RejectedExecutorHandler 拒绝策略

有四种拒绝策略  AdortPolicy 一旦无法处理,立刻抛出异常

                          DiscardPolisy  一旦无法处理 就丢弃任务

                          DiscardOldestPolicy  一旦无法处理就和等待时间最长的任务替换 

                          CallerRunsPolicy  一旦无法处理   绕过线程池,让当前线程处理

拒绝策略的书写方式:new ThreadPoolExecutor.拒绝策略

线程的六大状态:创建 运行 消亡  阻塞  限时等待 无限等待

线程唤醒机制   wait()  等待  notify() 唤醒某一个   notifyAll()  唤醒所有

10、IO流

File的创建,三种参数列表的构造方法

getAbsolutePath()  获得File对象的绝对路径

getPath() 获得File对象封装时传入的路径 

getName()   获得文件的名字

isDirectory()  判断对象是不是目录文件

isFile()  判断对象是不是文件

exists()  判断对象路径名的文件是否存在

createNewFile() 创建一个新的空文件

mkdir   创建一个文件夹

mkdirs  创建一个多级文件夹

delete()  删除抽象路径名的文件或者目录,如果删除的是文件夹,里面还有文件的话是不会删除成功的,只有里面没有文件了才会删除成功

listFile()  返回的是该抽象路径名下的所有文件和目录的File对象数组

11、IO流划分

字节流  缓冲字节流  字符流 缓冲字符流 便捷字符流  序列化流  打印流

其中序列流中,序列化的对象需要实现Serilizable接口,并且定义serialVersionUID,才可以。

其中,如果有不想被序列化的成员变量,可以使用transient关键字。

这里还有提到Properties  可以和io流配合使用,不过只适配字符串相关的键值对。

通过load方法读取文件中的内容到properties,通过store方法写入到文件中

12、lambda表达式

这实际上就是一种简写方式,用于匿名内部类作为方法参数的时候可以替换使用,大量减少代码量。其中有四种函数式接口,并且要保证该接口只有一个抽象方法才可以使用lamdba表达式,这里可以使用一个注解来表示lamdba可以使用的函数接口, @FunctionalInterface!

生产型函数式接口  Supplier  返回一个你想要的值

消费型函数式接口  Consumer  对传入的参数进行运算

谓词型函数式接口  Predicate  判断传入的参数,返回booelan

 功能型函数式接口  Function  用来转换数据类型,传入类型A,转换成类型B并返回

13、网络编程

这里主要就涉及到服务端和客户端的通信。连接的时候用三次握手,断开的时候用四次挥手。

server服务端    ServerSocket  server = new ServerSocket(监听端口号) 

Socket socket = server.accept();

 socket.getRemoteAddress()  获取连接对象的地址

socket.getInputStream()

socket.getOutputStream()

client客户端

Socket  socket  = new Socket("IP地址",端口号);

socket.getInputstream

socket.getOutputStream

14、stream流

这是一种可以更便捷处理大量数据的方法

filter 过滤

sorted 排序

limit  截取前几个

skip跳过几个 保留剩下的

map  转换流的类型

collect() 收集元素   toList  toSet  toMap

concat  合并流

foreach  终结方法  遍历

count    终结方法  获取元素个数

15、xml

是一种配置文件,有具体的格式,头部声明

首行首列进行文档声明格式如下:<?xml version="1.0"  encoding="UTF-8" standalone="yes/no" ?>     standalone  是否依赖其他XML文件单独存在,可写可不写

有且只能有一个根标签

有两种约束文件,分别是dtd文件和shema文件,两种文件格式不同,之后基本不用自己写,所以了解就可以。 特殊文本内容可以用特殊符号,也可以用CDATA区<![CDATA[...内容...]]>

16、枚举和反射、类加载器

枚举实际上就是一个有取值范围的类,里面的每一个元素就是这个类的实体类对象之一,里面也有一些获取信息的方法。

name() 获取枚举项的名称

ordinal() 获取枚举项的索引

compareTo()  比较两个枚举项,返回的是枚举相索引的差值

toString()  返回枚举常量的名称

valueOf(Class<T> type,String name)   获取指定枚举类中的指定枚举项的枚举值

values()  返回所有的枚举项 ,一个数组

类加载器:

 反射:

 注解:

补充内容:红黑树口诀

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值