JavaSE-5

来源:互联网 发布:儿童怎么学英语 知乎 编辑:程序博客网 时间:2024/06/06 00:49

String是最原始的,不可变字符序列,效率低,线程不安全

StringBuilder是可变字符序列,效率高,线程不安全

StringBuffer是可变字符序列,效率低,线程安全

电脑自动输出时间格式:yyyy-MM-dd  HH:mm:ss

时间格式化类:SimpleDateFormat

正则表达式:

y代表年(year)

m代表月(Month)

w代表年中的周(Number)

W代表月中的周(Number)

D代表年中的天(Number)

d代表月中的天(Number)

F代表月中的星期(Number)

E代表星期中的天(Text)

a代表Am/Pm标记(Text)

H代表一天中的小时(0-23)(Number)

k代表一天中的小时(1-24)(Number)

K代表am/pm中的小时(0-11)(Number)

h代表am/pm中的小时(1-12)(Number)

m代表小时中的分钟(Number)

s代表分钟中的秒数(Number)

S代表毫秒(Number)

z代表时区(General time zone)

Z代表时区(RFC 822 time zone)

G代表Era标示符(Text)

获取当前日历对象:Calender c=Calender.getInstance();

获取当前时间:Date d=c.getTime();

文件:相关记录或放在一起的数据的集合

绝对路径:从系统根目录出发,找文件具体所在的位置

相对路径:此文件相对于另外一个文件的最短路径

枚举是由一组固定的常量组成的类型

 

容器

Collection是所有集合的接口,它提供了对集合进行排序、遍历等多种算法实现

Collection接口存储一组不唯一,无序的对象

List接口存储一组不唯一,有序(插入顺序)的对象

Set接口存储一组唯一,无序的对象 ;Set存入和取出的顺序不一致

最快去除相同数据用Set,Set踢出重复元素,如果是引用数据类型需要重写HashCode和equals方法

Set相对于List而言没有下标,所以没有Set方法,不能使用普通for循环取值(for each,Iterator)

Map接口存储一组键值对象,提供Key和value映像

ArrayList的优点:遍历元素和随机访问元素的效率比较高,内部实现数组

ArrayList的缺点:添加和删除需要大量移动元素,效率低,按照内容查询效率低

 LinkedList的优点:插入和删除时效率较高,内部实现链表

LinkedList的缺点:遍历和随机访问元素效率较低

HashSet的优点:添加速度快,查询速度快,删除速度快

HashSet的缺点:无序

TreeSet采用红黑树的存储结构,要求用户提供排序规则,中的元素需要实现比较接口(Comparble)和compareTo方法

TreeSet的优点:有序(排序后升序)查询速度比 List快

TreeSet的缺点:查询速度没有HashSet快

对于多数据查找和遍历使用ArrayList

对于多数据添加和删除使用LinkedList

for each的缺点:数组不能方便的访问下标值,不要在for each中对变量赋值,它只是临时变量

LinkedHashSet采用哈希表存储结构,同时使用链表维护次序,有序(添加顺序)

泛型:解决数据类型操作不统一产生的异常,更好的保护数据类型

Map中LinkedHashMap是有序的HashMap,速度快

FreeMap是有序的,速度没有Hash快

Set和Map的关系:采用了相同的数据结构,只用于Map的Key储存数据

文件是计算机中存储最小的载体

流是指一串流动的字符,以先进先出方式发送信息的通道

IO输入流:InputStream              IO输出流:OutputStream

从数据源到程序是读(输入流)

从程序到数据源或文件是写(输出流)

data source提供原始数据的原始媒介

数据源就像水箱,流就像水管中流着的水流

按区域分:输入流:InputStream和Reader

                  输出流:OuputStream和Writer

按处理数据单元分:字节流:字节输入流InputStream

                                              字节输出流OuputStream

                                 字符流:字符输入流Reader

                                               字符输出流Writer

节点流功能:直接可以操作数据源或目的地

处理流功能:不能操作数据源或目的地,主要是辅助节点流,提高性能和效率,简化操作

节点流和处理流的联系:节点流处于IO操作的第一线,所有操作必须通过它们进行

文本文件的读写:用FileInputStream和FileOutputStream读写文本文件

                             用BufferedReader和BufferOutputWriter读写文本文件

二进制文件的读写:用DataInputStream和DataOutputStream读写二进制文件以及基本数据类型数据的读写

对象的读写:用ObjectInputStream和ObjectOutputStream读写对象序列化与反序列化

 

获取当前开发环境的字符模式:System.out.println(System.getDroperty("file.encoding"));

序列化和反序列化的目的:持久化、将对象在网络上进行传输

序列化是将内存中的对象转换成流

反序列化是将流转换成内存中的对象

NotSerializableException  未实现序列化接口

静态是不能被序列化的

在需要序列化的字段前加上:transient

多线程的优点:提高程序的运行效率

线程是进程中一个单一的连续控制流程

程序(Porgram)是一个指令的集合,是进程里的一个任务或一条命令

进程(Porcess)是个静态的概念,是一个正在运行的程序

线程又称轻量线进程

一个线程可拥有多个并行的concurrent线程

一个进程中至少有一个线程

一个线程中的线程共享相同的内存单元/内存地址空间-->可访问相同的变量和对象,而且它们从同一堆中分配对象-->通信、数据交换、同步操作

线程结束时,进程未必结束,但是进程结束时,线程一定结束

进程包含线程,线程是进程的一部分

进程和线程的区别:进程作为资源分配的单位,而线程是调度和执行的单位

Runnable出现的原因:因为Java是单继承,多实现的继承往往会被占用,而无法通过继承Thread实现多线程,但是可以实现Runnable接口而达到目的

Java实现多继承的两种方法:

1、继承Thread类重写run方法

2、实现Runnable接口重写run方法

继承Thread的优点:1、避免单继承

                                 2、方便共享资源,同一份资源

原创粉丝点击