JavaSE

一月回顾JavaSE网上学习笔记总结(基本都是网上知识点)

面向对象是基石,JavaSE中最重要的一是集合,二是IO  

重点  : 面向对象 集合 IO String/StringBuffer/StringBuilder 反射 泛型  异常  多线程  正则表达式   网络编程

面向对象 封装 继承 多态

1、 一般来讲局部变量存在栈中,方法执行完毕内存就被释放

2、 对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放

3、 每个堆内存的元素都有地址值

4、 对象中的属性都是有默认值的

构造方法是一种特殊的方法,它是一个与类同名且返回值类型为同名类类型的方法。

对象的创建就是通过构造方法来完成,其功能主要是完成对象的创建或者对象的初始化。当类实例化new一个对象时会自动调用构造方法。

构造方法和其他方法一样也可以重载(方法名相同+参数列表不同)。

顺序: 构造代码块 > 构造方法 > 局部代码块

String  StringBuffer字符串变量、StringBuilder字符串变量

Stringbuffer是动态字符串数组,append( )是往动态字符串数组添加,跟“xxxx”+“yyyy”相当‘+’号(内存中表示却不一样)。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

(1)如果要操作少量的数据用 String;

(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;

(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder

IO  字节流和字符流

字节流是由字节(二进制)组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的.

输入流(读)和输出流(写)。

flush():将缓冲区的数据刷到目的地中后,流可以使用。
close():将缓冲区的数据刷到目的地中后,流就关闭了,该方法主要用于结束调用的底层资源。这个动作一定做。

操作的数据如果是纯文本数据?数据源:Reader  数据汇:Writer
如果不是:数据源:InputStream数据汇:OutputStream

数据源对应的设备:硬盘(File),内存(数组),键盘(System.in)
数据汇对应的设备:硬盘(File),内存(数组),控制台(System.out)。

File类

1:创建。boolean createNewFile():在指定目录下创建文件,如果该文件已存在,则不创建。而对操作文件的输出流而言,输出流对象已建立,就会创建文件,如果文件已存在,会覆盖。除非续写。
boolean mkdir():创建此抽象路径名指定的目录。
boolean mkdirs():创建多级目录。
2:删除。
boolean delete():删除此抽象路径名表示的文件或目录。
void deleteOnExit():在虚拟机退出时删除。
注意:在删除文件夹时,必须保证这个文件夹中没有任何内容,才可以将该文件夹用delete删除。
window的删除动作,是从里往外删。注意:java删除文件不走回收站。要慎用。
3:获取.
long length():获取文件大小。
String getName():返回由此抽象路径名表示的文件或目录的名称。
String getPath():将此抽象路径名转换为一个路径名字符串。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
String getParent():返回此抽象路径名父目录的抽象路径名,如果此路径名没有指定父目录,则返回 null。
long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间。
File.pathSeparator:返回当前系统默认的路径分隔符,windows默认为 “;”。
File.Separator:返回当前系统默认的目录分隔符,windows默认为 “\”。
4:判断:
boolean exists():判断文件或者文件夹是否存在。
boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。
boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean isAbsolute():测试此抽象路径名是否为绝对路径名。
5:重命名。
boolean renameTo(File dest):可以实现移动的效果。剪切+重命名。

String[] list():列出指定目录下的当前的文件和文件夹的名称。包含隐藏文件。
如果调用list方法的File 对象中封装的是一个文件,那么list方法返回数组为null。如果封装的对象不存在也会返回null。只有封装的对象存在并且是文件夹时,这个方法才有效。

序列化(Serialization)/反序列化

Java序列化就是指把Java对象转换为字节序列的过程,    Java反序列化就是指把字节序列恢复为Java对象的过程。

序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。 反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。总结:核心作用是对象状态的保存和重建。(整个过程核心点是字节流中所保存的对象状态及描述信息)

泛型 集合

泛型一般只出现在集合中在集合中使用泛型。

 E - Element (在集合中使用,因为集合中存放的是元素)     T - Type(Java 类)

K - Key(键)  V - Value(值)  N - Number(数值类型) ? - 表示不确定的java类型

泛型的标志<>,在声明时需指定具体的类型<E>

泛型的好处:规定了数据的类型,不能想放什么数据就放什么类型,要遵守泛型规定的类型,在编译阶段就检查我们传入的参数类型是否正确

泛型的数据类型只能是引用类型,不能是基本类型,如果类型不对,把运行时期才会 报的错ClassCastException直接在编译时期就报出来 

Collection接口

英文名称Collection,是用来存放对象的数据结构。其中长度可变,而且集合中可以存放不同类型的对象。并提供了一组操作成批对象的方法。

数组的缺点:长度是固定不可变的,访问方式单一,插入、删除等操作繁琐。

Collection接口

-- List接口  : 数据有序,可以重复。   -- ArrayList子类   -- LinkedList子类

-- Set接口  : 数据无序,不可以存重复值   -- HashSet子类

-- Map接口  : 键值对存数据-- HashMap    Collections工具类

反射

线程生命周期,总共有五种状态:1)   新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();

2)   就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;

3)   运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;

4)   阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状态;

5)   根据阻塞产生的原因不同,阻塞状态又可以分为三种:a)   等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

b)   同步阻塞:线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;c)   其他阻塞:通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

6)   死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。Start()方法是一个native方法,它将通知底层操作系统,最终由操作系统启动一个新线程,操作系统将执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。模拟开启多个线程,每个线程调用run()方法

把有可能出现问题的代码包起来,一次只让一个线程执行。通过sychronized关键字实现同步。当多个对象操作共享数据时,可以使用同步锁解决线程安全问题。

synchronized(对象){    需要同步的代码;}

Reflection(反射)可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。

正则表达式

1元字符 .任意字符  \w匹配字母、数字、下划线。等价于 [A-Za-z0-9_]    \s匹配任何空白字符

\d 匹配数字   \b  匹配单词开始或结束    ^开始(要匹配 ^ 字符本身,请使用 \^)   $结束

 2重复限定符3. 分组4. 转义5. 条件或6. 区间

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值