java
基于黑马的视频记录
九儿九知
这个作者很懒,什么都没留下…
展开
-
H5_方法引用
基本使用冗余的Lambda场景1 定义一个函数式接口//定义打印的函数式接口@FunctionalInterfacepublic interface Printable { //打印字符串的抽象方法 void print(String s);}2 使用分析:其中 printString 方法只管调用 Printable 接口的 print 方法,而并不管 print 方法的具体实现逻辑会将字符串打印到什么地方去。而 main 方法通过Lambda表达式*指定了函数式接口 Pr原创 2020-07-09 23:11:14 · 261 阅读 · 0 评论 -
H4_Lambda衍生_Stream流
引入回顾几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。传统做法:public class D01List { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("张无忌"); list.add原创 2020-07-09 19:07:29 · 135 阅读 · 0 评论 -
H3_常用的函数式接口
java.util.function.Supplier 接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据Supplier接口被称为生产型接口,接口指定的泛型是什么类型,那么接口的get方法就会生产什么类型的数据public class D05Supplier { //定义一个方法,方法的参数传递Supplier<T>接口,泛型指定String类型,get方法就会返回一个String public static String getString(Supp.原创 2020-07-08 00:15:34 · 182 阅读 · 0 评论 -
H2_函数式接口
一、函数式接口1.概念函数式接口在 java中指:有且仅有一个抽象方法方法的接口,当然接口中还可以包括其他的方法(默认,静态,私有)函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。备注:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实底层的实现原理仍然是迭代器,这便是“语法糖”原创 2020-07-07 12:50:56 · 168 阅读 · 0 评论 -
H1_函数式编程_Lambda表达式
函数式编程思想概述面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。函数式编程思想:只要能获取到结果,谁去做的,怎么做的不重要,不重视过程。分析:之前编写Thread时,如果使用Runnable接口实现类方式,需要创建实现类对象,重写run方法,再创建new Thread(),将实现类作为参数传入,调用start方法,过程很麻烦,即使使用匿名内部类仍有冗余代码。而我们真正希望做的是:将run方法体内的代码传递给Thread类知晓。public class de原创 2020-06-26 23:39:16 · 150 阅读 · 0 评论 -
对象序列化和打印流
介绍:序列化:把对象写入到文件中保存反序列化:把文件中保存的对象读取出来2. 序列化流ObjectOutputStreamjava.io.ObjectOutputStream extends OutputStreamObjectOutputStream:对象的序列化流- 作用:把对象以流的形式写入文件中保存构造方法:ObjectOutputStream(OutputStream out) 创建写入指定 OutputStream 的 ObjectOutputStream特有的成.原创 2020-07-04 21:26:18 · 239 阅读 · 0 评论 -
IO_转换流
字符编码和字符集字符编码:自然语言的字符与二进制直接的对应规则编码:字符 ——> 字节(看不懂)解码:字节 ——> 字符(能看懂)字符集:编码表,是一个系统支持的所有字符的集合,包括各个国家文字,标点符号,图形符号,数字等编码引出的问题:FileReader可以读取默认编码格式(utf-8)的文件FileReader读取系统默认编码(中文GBK)会产生乱码解决:使用转换流转换流的原理:GBK:中文码表,使用两个字节存储一个中文UTF-8:国际标准码表,使用三个字节.原创 2020-07-03 18:06:28 · 138 阅读 · 0 评论 -
缓冲流_02字符缓冲流
字符缓冲流java.io.BufferedWriter extends WriterBufferedWriter:字符缓冲输出流继承自父类的共性成员方法:void write(char[] cbuf) 写入字符数组。abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。void write(int c) 写入单个字符。void write(String str) 写入字符串。void write(String原创 2020-07-03 00:32:15 · 103 阅读 · 0 评论 -
缓冲流_01字节缓冲流
概述缓冲流,也叫高效流,是对四个基本的Filexxx流的增强,也是流字节缓冲流:BufferedInputStream / BufferedOutputStream字符缓冲流:BufferedReader / BufferedWriter基本原理:创建流对象时,会创建一个内存的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。字节缓冲流1、java.io.BufferedOutputStream extends FilterOutputStream extends原创 2020-07-03 00:31:48 · 120 阅读 · 0 评论 -
属性集_Properties(IO流)
java.util.Properties集合 extends Hashtable<k,v> implements Map<k,v>唯一和IO流相结合的集合概述:Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。Properties集合是唯一和IO流相结合的集合可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储可以使用Properties集合中的方法load,把硬盘中保存的文件原创 2020-07-02 18:09:07 · 180 阅读 · 0 评论 -
java_IOl流(02 字符流)
字符流以字符为单位读写数据,专门用来处理文本文件(解决中文字符问题)字符输入流 Readerjava.io.Reader:字符输入流,是字符输入流的最顶层的父类,定义了一些共性的成员方法,是一个抽象类共性的成员方法:- int read() 读取单个字符。- int read(char[] cbuf) 将字符读入数组- abstract void close() 关闭该流并释放与之关联的所有资源实现子类:java.io.FileReader extends InputStr原创 2020-07-02 16:16:14 · 164 阅读 · 0 评论 -
java_IO流(01 字节流)
IO的分类输入流:把数据从其他设备上读取到内存中的流输出流:把数据从内存中写出到其他设备上的流输入流输出流字节流字节输入流 InputString字节输出流 OutputString字符流字符输入流 Reader字符输出流 Writer字节流字节输出流java.io.OutputStream:字节输出流,此抽象类是标识输出字节流的所有类的超类定义了一些子类共性的成员方法:void close() 关闭此输出流并释放与此流有关的所有系..原创 2020-06-29 23:43:29 · 153 阅读 · 0 评论 -
java学习_File
File介绍java.io.File:文件和目录路径名的抽象表示形式java把电脑中的文件和文件夹(目录),封装成为一个File类,我们可以使用File类对文件和文件夹进行操作,File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。File类的方法创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小file类的静态成员变量static String pathSeparator:与系统有关的路径分隔符,原创 2020-06-27 22:52:51 · 91 阅读 · 0 评论 -
java学习_线程3
线程状态线程之间的通信线程状态NEW:至今尚未启动的线程处于这种状态。RUNNABLE:正在 Java 虚拟机中执行的线程处于这种状态。BLOCKED:受阻塞并等待某个监视器锁的线程处于这种状态。WAITING:无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。TIMED_WAITING:等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。TERMINATED:已退出的线程处于这种状态等待唤醒案例01 分析:创建一个顾客线程(消费者):告知老板要原创 2020-06-26 15:45:45 · 81 阅读 · 0 评论 -
java学习_线程2
线程安全问题原理单线程程序是不会出现线程安全问题的,多线程如果访问共享的数据,就会产生线程安全问题举例:卖票//多线程安全问题前提:访问共享数据public class RunnableImpl implements Runnable{ //设置线程方法 --- 卖票 private int ticket = 100; //定义一个多线程共享的票源 @Override public void run() { //先判断票是否存在 while(true) { //提原创 2020-06-25 23:32:22 · 89 阅读 · 0 评论 -
java学习_线程1
多线程1 并发与并行并发:指两个或多个时间在同一个时间段内发生(交替进行)并行:指两个或多个事件在同一时刻发生(同时发生)2 进程和线程1. 概念* 进程:一个内存中运行的应用程序,每个进程都有一个独立的运行空间,一个应用程序可以同时运行多个进程,进程也是程序的一次执行过程,想系统运行程序的基本单位。 * 线程:线程是进程中的一个执行单元,负责当前进程中的程序执行,一个进程中至少有一个线程,一个线程中是可以有多个线程的,称多线程程序。2. 线程调度* 分时调度:所有线程轮流使用CP原创 2020-06-25 20:04:24 · 83 阅读 · 0 评论 -
java基础学习_日期
Date类Date类的构造方法和成员方法* Date类的空参数构造方法 Date() 获取的就是当前系统的日期和实际 date.toLocaleString():根据本地格式转换日期对象* Date类的带参数构造方法:Date(long date) 传递毫秒值,把毫秒值转化为Date日期* long getTime() 把日期转换为毫秒(相当于System.currentTimeMillis())private static void demo1() { // TODO Auto-原创 2020-06-24 00:06:59 · 89 阅读 · 0 评论 -
java基础学习_继承与多态
1 继承:面向对象的三大特征:封装性,继承性,多态性继承是多态的前提,没有继承就没有多态* 在子父类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式: 直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上找。 间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找。* 子父类中定义重名变量: 局部变量:直接写成员变量名 本类中的成员变量:this.成员变量 父类中的成员变量:super.成员变量* 继承关系中,父子类构造方法访问特点:原创 2020-06-23 23:49:19 · 146 阅读 · 0 评论