Java学习整理

术语

OOA:面向对象分析

OOD:面向对象设计

OOP:面向对象编程

GC:Garbage Collector垃圾回收器

jdk下载

https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

内部类

内部类的优势在于可以访问外部类的私有属性。

Lambda表达式

方法没有参数:()->{};

方法有参数:(参数,参数)->{};

简化:(参数,参数)->语句;

内建函数接口

功能型函数接口

消费型函数接口

供给型函数接口

断言型函数接口

详细说明:

Java 8新特性-5 内建函数式接口 - MPPC - 博客园

在之前的一片博文 Lambda 表达式,提到过Java 8提供的函数式接口。在此文中,将介绍一下Java 8四个最基本的函数式接口 对于方法的引用,严格来讲都需要定义一个接口。不管我们如何操作实际上有

https://www.cnblogs.com/MPPC/p/5357572.html

开发工具

JBbuilder---Eclipse---Idea

技术组合

皇家正规军(IBM):WSAD+AIX+WAS+DB2

正规杂牌军(厂商合奏):JBuilder+Linux+BEA WebLogic+Oracle

开源风潮(免费风潮):Eclipse+Linux+Tomcat+Mysql

多线程

1、使用Thread类实现多线程

java.lang.IllegalThreadStateException:线程重复进行线程启动.

JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植

2、使用Runnable接口实现多线程

3、Callable接口实现多线程

线程的操作

线程休眠:sleep()

线程中断:interrupt()

线程的强制运行:join()

线程礼让:yield()

线程优先级:setPriopity()

停止多线程:设置终止标志位。

设置守护线程:setDaemon()

volatile

volatile与synchronized的区别:

volatile主要在属性上使用;synchronized在代码块上使用

StringBuffer

String 的+操作本质就是StringBuffer的append()

StringBuffer:线程安全,使用了synchronized关键字

StringBuilder:线程不安全

CharSequence描述的是字符串。

AutoCloseable

jdk1.7之后,自动释放资源

Runtime

获取操作系统信息

availableProcessors()

大数字处理类

BigInteger

BigDecimal

正则表达式

Perl语言引进 JDK1.4支持

【数量:单个】字符匹配

\\:匹配“\”

\n:匹配换行

\t:匹配制表符

【数量:单个】字符集(可以从找那个任选一个字符)

[abc]:可能a、b、c中的任意一个

[^abc]:不是a、b、c中的任意一个

[a-zA-Z]:一个任意字母所组成,不区分大小写

[0-9]:由一位数字组成

【数量:单个】简化字符集

.:表示任意的一个字符

\d:等价于[0-9]范围

\D:等价于[^0-9]范围

\s:匹配任意一位空格,匹配是空格、换行、制表符

\S:匹配任意一位非空格数据

\w:匹配字母、数字、下划线等价于[a-zA-Z_0-9]

\W:匹配非字母、数字、下划线

数量表示

表达式?:该正则可以出现0或者1次

表达式*:该正则可以出现0次、1次或多次

表达式+:该正则可以出现1次或多次

表达式{n}:表达式场地正好为n次

表达式{n,}:表达式场地正好为n次以上

表达式{n,m}:表达式场地正好为n~m次

邮箱的正则匹配

例如:xxx777@qq.com

[a-zA-Z0-9]\\w+@\\w+\\.(com|cn|net|com.cn|gov)

Pattern类:正则表达式的编译类

Matcher类:实现了正则匹配的处理类

File类

构造方法:File(String filename);

创建新的文件:createNewFile()

判断文件是否存在:exists()

删除文件:delete()

File类的一个常量:File.separator

流程:程序->JVM->操作系统函数->文件处理

文件创建的前提:判断父路径是否存在。

父路径:getParentFile()

创建路径:mkdir()

文件是否可读:canRead()

文件是否可写:canWrite()

获取文件长度:length() 返回的字节长度

最后修改时间:lastModified()

是否是目录:isDirectory()

是否是文件:isFile()

列出目录文件:listFiles()

字节处理流:OutputStream(输出字节流) InputStream(输入字节流)

字符处理流:Writer(输出字符流) Reader(输入字符流)

在使用OutputStream的时候如果没有使用close()方法关闭流,内容依然可以正常输出;

在使用Writer的时候如果没有使用close()方法关闭流,内容不能正常输出,因为Writer使用到了缓冲区;flush()方法用于刷新此Writer流。 当流将来自不同write()方法的任何字符保存到缓冲区中后,立即将它们写入其预期的目标,然后在检查该目标是否包含另一个字符或字节流后,将其刷新,并且一个flush()调用将刷新所有缓冲区中的数据。

jdk1.9后可以使用transferTo(OutputStream out)进行文件拷贝。

管道流

字节管道流:PipedOutputStream、PipedInputStream

字符管道流:PipedWriter、PipedReader

序列化、反序列化

对象序列化是指将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或者网络的传输。

java.io.Serializable序列化标记。

transient关键字

transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里进行持久化。

反射

所有的技术实现的目标:重用性

getClass()可以帮助使用者找到对象的根源。

三种实例化方式:

1、【Object类支持】 getClass()

2、【JVM支持】类.class

3、【Class类支持】forName()

获取包名称:getPackage()

获取父类信息:getSuperClass()

获取父接口:getInterfaces()

反射调用普通方法:

获取全部方法:getMethods()

获取指定方法:getMethod(String name,Class<?>...param)

获取本类全部方法:getDeclaredMethods()

获取本类指定方法:getDeclaredMethod()

invoke();

ClassLoader类加载器

BootStrap:系统类加载器

PlatformClassLoader:平台类加载器

AppClassLoader:应用程序加载器

自定义类加载

集合

List是Collection子接口,允许保存重复的元素

List<String> all = List.of("xxx","yyy","zzz");

在使用List保存自定义类对象需要使用contains(),remove()方法进行查询和删除的时候一定保证类中复写了类equals()方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值