day14-函数式接口
1.函数式接口1.1函数式接口概述【理解】
概念
有且仅有一个抽象方法的接口
如何检测一个接口是不是函数式接口
@FunctionalInterface
放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败
注意事项
我们自己定义函数式接口的时候,@FunctionalInterface是可选的,就算我不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。但是,建议加上该注解
1.2函数式接口作为方法的参数【应用】
需求描述
定义一个类(RunnableDemo),在类中提供两个方法
一个方法是:startThread(Runnable r) 方法参数Runnable是一个函数式接口
一个方法是主方法,在主方法中调用startThread方法
代码演示
123456789101112131415161718192021public class RunnableDemo { public static void main(String[] args) { //在主方法中调用startThread方法 ...
day13-Lambda
1.Lambda表达式1.1体验Lambda表达式【理解】
案例需求
启动一个线程,在控制台输出一句话:多线程程序启动了
实现方式一
实现步骤
定义一个类MyRunnable实现Runnable接口,重写run()方法
创建MyRunnable类的对象
创建Thread类的对象,把MyRunnable的对象作为构造参数传递
启动线程
实现方式二
匿名内部类的方式改进
实现方式三
Lambda表达式的方式改进
代码演示
123456789101112131415161718192021222324252627282930//方式一的线程类public class MyRunnable implements Runnable { @Override public void run() { System.out.println("多线程程序启动了"); }}public class LambdaDemo { public static void main(Str ...
day12-网络编程
1.网络编程入门1.1 网络编程概述【理解】
计算机网络
是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统
网络编程
在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换
1.2 网络编程三要素【理解】
IP地址
要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识
端口
网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识
协议
通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速 ...
day11-多线程
1.实现多线程1.1进程和线程【理解】
进程:是正在运行的程序
是系统进行资源分配和调用的独立单位
每一个进程都有它自己的内存空间和系统资源
线程:是进程中的单个顺序控制流,是一条执行路径
单线程:一个进程如果只有一条执行路径,则称为单线程程序
多线程:一个进程如果有多条执行路径,则称为多线程程序
1.2实现多线程方式一:继承Thread类【应用】
方法介绍
方法名
说明
void run()
在线程开启后,此方法将被调用执行
void start()
使此线程开始执行,Java虚拟机会调用run方法()
实现步骤
定义一个类MyThread继承Thread类
在MyThread类中重写run()方法
创建MyThread类的对象
启动线程
代码演示
123456789101112131415161718192021public class MyThread extends Thread { @Override public void run() { for(int i=0; i<10 ...
day10-IO流
1.IO流案例1.1集合到文件数据排序改进版【应用】1.1.1案例需求
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件
格式:姓名,语文成绩,数学成绩,英语成绩 举例:林青霞,98,99,100
1.1.2分析步骤
定义学生类
创建TreeSet集合,通过比较器排序进行排序
键盘录入学生数据
创建学生对象,把键盘录入的数据对应赋值给学生对象的成员变量
把学生对象添加到TreeSet集合
创建字符缓冲输出流对象
遍历集合,得到每一个学生对象
把学生对象的数据拼接成指定格式的字符串
调用字符缓冲输出流对象的方法写数据
释放资源
1.1.3代码实现
学生类
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758public class Student { // 姓名 private String name; // 语文成绩 private int ...
day09-字节缓冲流
1.字节缓冲流1.1字节缓冲流构造方法【应用】
字节缓冲流介绍
lBufferOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用
lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节
构造方法:
方法名
说明
BufferedOutputStream(OutputStream out)
创建字节缓冲输出流对象
BufferedInputStream(InputStream in)
创建字节缓冲输入流对象
示例代码
1234567891011121314151617181920212223242526272829303132public class BufferStreamDemo { public static void main(String[] args) throws IOException ...
day08-File
1.File类1.1File类概述和构造方法【应用】
File类介绍
它是文件和目录路径名的抽象表示
文件和目录是可以通过File封装成对象的
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
File类的构造方法
方法名
说明
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的 File实例
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例
示例代码
12345678910111213141516public class FileDemo01 { public static void main(String[] args) { //File(Stri ...
day07-集合
1.Map集合1.1Map集合概述和特点【理解】
Map集合概述
1interface Map<K,V> K:键的类型;V:值的类型
Map集合的特点
键值对映射关系
一个键对应一个值
键不能重复,值可以重复
元素存取无序
Map集合的基本使用
123456789101112131415public class MapDemo01 { public static void main(String[] args) { //创建集合对象 Map<String,String> map = new HashMap<String,String>(); //V put(K key, V value) 将指定的值与该映射中的指定键相关联 map.put("itheima001","林青霞"); map.put("itheima002","张曼玉"); map.put( ...
day06-集合
1.Set集合1.1Set集合概述和特点【应用】
Set集合的特点
元素存取无序
没有索引、只能通过迭代器或增强for循环遍历
不能存储重复元素
Set集合的基本使用
123456789101112131415161718public class SetDemo { public static void main(String[] args) { //创建集合对象 Set<String> set = new HashSet<String>(); //添加元素 set.add("hello"); set.add("world"); set.add("java"); //不包含重复元素的集合 set.add("world"); //遍历 for(String s : set) { Sys ...
day05集合
1.Collection集合1.1集合体系结构【记忆】
集合类的特点
提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变
集合类的体系图
1.2Collection集合概述和基本使用【应用】
Collection集合概述
是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
Collection集合基本使用
1234567891011121314public class CollectionDemo01 { public static void main(String[] args) { //创建Collection集合的对象 Collection<String> c = new ArrayList<String>(); //添加元素:boolean add(E e) c.add("hello"); c ...