Java
自己对于Java知识学习的记录以及一些零零碎碎的理解,共同进步
反方向的钟c
一星程序员
展开
-
Optional类的使用举例
Boy类:public class Boy { private Girl girl; public Boy() { } public Boy(Girl girl) { this.girl = girl; } public Girl getGirl() { return girl; } public void setGirl(Girl girl) { this.girl = girl;.原创 2022-05-31 10:49:17 · 397 阅读 · 0 评论 -
Stream的终止操作:匹配与查找、归约、收集
/* 测试Stream的终止操作 */public class StreamTest2 { //1-匹配与查找 @Test public void test1(){ List<Employee> employees = EmployeeData.getEmployees(); //allMatch(Predicate p)-检查是否匹配所有元素 //练习:是否所有的员工的年龄都大于18 boolean.原创 2022-05-31 00:15:40 · 325 阅读 · 0 评论 -
Stream的中间操作:筛选与切片、映射、排序
/* 测试Stream的中间操作 */public class StreamAPITest1 { //1-筛选与切片 @Test public void test1(){ List<Employee> list = EmployeeData.getEmployees(); //filter(Predicate p)-接收 Lambda,从流中排除某些元素 Stream<Employee> stream =.原创 2022-05-30 15:56:57 · 274 阅读 · 0 评论 -
Stream API的概述及Stream的实例化
/* 1. Stream关注的是对数据的运算,与CPU打交道 集合关注的是数据的存储,与内存打交道 2. ①Stream 自己不会存储元素 ②Stream 不会改变源对象 相反,他们会返回一个持有结果的新Stream ③Stream 操作是延迟执行的 这意味着他们会等到需要结果的时候才执行 3.Stream 执行流程 ① Stream实例化 ② 一系列的中间操作(过滤、映射..) ③ 终止操作 4.说明 4.1 一个中间操作链,对数据源的数据进行处理 4.2 一旦执行.原创 2022-05-30 15:53:52 · 108 阅读 · 0 评论 -
Java中方法引用的使用情况
/** * 方法引用的使用 * 1.使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用 * * 2.方法引用,本质上就是Lambda表达式,而Lambda表达式作为函数式接口的实例 * 所以方法引用也是函数式接口的实例 * * 3.使用格式: 类(或对象) :: 方法名 * * 4.具体分为如下的三种情况: * 对象 :: 非静态方法 * 类 :: 静态方法 * 类 :: 非静态方法 * * 5.方法引用使用的要求:要求接.原创 2022-05-29 19:17:22 · 274 阅读 · 0 评论 -
Java内置的函数式接口及其使用举例
/* Java内置的4大核心函数式接口 消费型接口 Consumer<T> void accept(T t) 供给型接口 Supplier<T> T get() 函数型接口 Function<T,R> R apply(T t) 断定型接口 Predicate<T> boolean test(T t) */public class LambdaTest2 { @Test public void test.原创 2022-05-28 22:17:20 · 379 阅读 · 0 评论 -
Lambda表达式的使用
/*Lambda表达式的使用1.举例:(o1,o2) -> Integer.compare(o1,o2);2.格式: ->:lambda操作符 或箭头操作符 ->左边:lambda形参列表(其实就是接口中的抽象方法的形参列表) ->右边:lambda体(其实就是重写的抽象方法的方法体)3.Lambda表达式的使用:(六种情况) 总结: ->左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda参数列表只有一个参.原创 2022-05-23 23:09:01 · 131 阅读 · 0 评论 -
动态代理举例
/*动态代理的举例 */interface Human{ String getBelief(); void eat(String food);}//被代理类class SuperMan implements Human{ @Override public String getBelief() { return "I believe I can fly!"; } @Override public void eat(S.原创 2022-05-17 11:57:20 · 247 阅读 · 0 评论 -
静态代理举例
/*静态代理举例特点:代理类和被代理类在编译期间,就确定下来了 */interface ClothFactory{ void produceCloth();}//代理类class ProxyClothFactory implements ClothFactory{ private ClothFactory factory;//用被代理类对象进行实例化 public ProxyClothFactory(ClothFactory factory){ .原创 2022-05-16 23:14:34 · 182 阅读 · 0 评论 -
[反射]调用运行时类中的指定属性、方法、构造器
/*调用运行时类中指定的结构:属性、方法、构造器 */public class ReflectionTest1 { @Test public void testField() throws Exception { Class clazz = Person1.class; //创建运行时类的对象 Person1 p = (Person1) clazz.newInstance(); //获取指定的属性:要求运行时类中属性.原创 2022-05-15 19:49:49 · 74 阅读 · 0 评论 -
[反射]获取运行时类的接口、所在包、注解
/* 获取运行时类实现的接口 */ @Test public void test5(){ Class clazz = Person1.class; Class[] interfaces = clazz.getInterfaces(); for (Class c : interfaces){ System.out.println(c); } System.out.pr.原创 2022-05-15 17:36:06 · 93 阅读 · 0 评论 -
[反射]获取运行时类的父类及父类的泛型
/* 获取运行时类的父类 */ @Test public void test2(){ Class clazz = Person1.class; Class superclass = clazz.getSuperclass(); System.out.println(superclass); } /*获取运行时类的带泛型的父类 */ @Test public void test3...原创 2022-05-15 17:20:45 · 121 阅读 · 0 评论 -
[反射]获取运行时类的方法结构及其内部结构
/* 获取运行时类的方法结构 */public class MethodTest { @Test public void test1(){ Class clazz = Person1.class; //getMethods():获取当前运行时类及其所有父类中声明为public权限的方法 Method[] methods = clazz.getMethods(); for (Method m : methods){ .原创 2022-05-13 23:55:56 · 81 阅读 · 0 评论 -
[反射]获取运行时类的属性结构及其内部结构
//Creature类public class Creature<T> implements Serializable { private char gender; public double weight; private void breath(){ System.out.println("生物呼吸"); } public void eat(){ System.out.println("生物吃东西"); .原创 2022-05-13 12:24:21 · 90 阅读 · 0 评论 -
[反射]使用ClassLoader加载配置文件
@Test public void test2() throws Exception { Properties pros = new Properties(); //此时的文件默认在当前的module下 //读取配置文件的方式一:// FileInputStream fis = new FileInputStream("jdbc.properties");// pros.load(fis); ...原创 2022-05-12 22:52:54 · 217 阅读 · 0 评论 -
[反射]获取Class实例的4种方式
@Test public void test3() throws ClassNotFoundException { //方式一:调用运行时类的属性:.class Class clazz1 = Person.class; System.out.println(clazz1); //方式二:通过运行时类的对象,调用getClass() Person p1 = new Person(); Class cl..原创 2022-05-12 22:46:42 · 248 阅读 · 0 评论 -
[反射]使用反射调用类的私有结构
/* Person类 */public class Person { private String name; public int age; public Person() { } private Person(String name) { this.name = name; } public Person(String name, int age) { this.name = name; .原创 2022-05-10 23:04:57 · 149 阅读 · 0 评论 -
[网络编程]URL类的理解与实例化
/* URL网络编程 1.URL:统一资源定位符,对应着互联网的某一资源地址 2.格式: http://localhost:8080/examples/beauty.jpg?username=Tom 协议 主机名 端口号 资源地址 参数列表 */public class URLTest { public static void main(String[] args) { try { URL u.原创 2022-05-09 19:36:40 · 88 阅读 · 0 评论 -
[网络编程]UDP网络编程发送端与接收端
/* UDP协议的网络编程 */public class UDPTest { //发送端 @Test public void sender(){ DatagramSocket socket = null; try { socket = new DatagramSocket(); String str = "我是UDP方式发送的信息"; byte[] data = s.转载 2022-05-09 18:38:10 · 159 阅读 · 0 评论 -
[网络编程]TCP实现客户端发送文件给服务端,服务端将文件保存在本地
/* 实现TCP的网络编程 例题:客户端发送文件给服务端,服务端将文件保存在本地 */public class TCPTest2 { @Test public void client(){ Socket socket = null; OutputStream os = null; FileInputStream fis = null; try { socket = new Socket(Ine.原创 2022-05-09 17:22:41 · 691 阅读 · 0 评论 -
[网络编程]TCP客户端与服务端的实现
/*实现TCP的网络编程例子1:客户端发送信息给服务端,服务端将数据显示在控制台上 */public class TCPTest1 { //客户端 @Test public void client(){ Socket socket = null; OutputStream os = null; try { //1.创建Socket对象,指明服务器端的ip和端口号 InetAdd.原创 2022-05-09 15:34:01 · 176 阅读 · 0 评论 -
[网络编程]InetAddress类的实例化
/* 一、网络编程中有两个主要的问题: 1.如何准确的定位网络上一台或多台主机;定位主机上的特定的应用 2.找到主机后如何可靠高效的进行数据传输 二、网络编程中的两个要素: 1.IP和端口号 2.提供网络通信协议TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层) 三、通信要素一:IP和端口号 1.IP:唯一的标识Internet上的计算机(通信实体) 2.在Java中使用InetAddress类代表IP 3.IP分类:IPv4 和 IPv6; 万维.原创 2022-05-09 11:25:39 · 257 阅读 · 0 评论 -
[IO流]RandomAccessFile实现数据的读写及插入操作
/* RandomAccessFile的使用 1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口 2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流 mode参数: r:以只读方式打开 rw:打开以便读取和写入 rwd:打开以便读取和写入;同步文件内容的更新 rws:打开以便读取和写入;同步文件内容和元数据的更新 3.如果RandomAccessFile作为.原创 2022-05-08 22:54:02 · 969 阅读 · 0 评论 -
[IO流]对象流序列化与反序列化字符串操作
/*对象流的使用1.ObjectInputStream和ObjectOutputStream2.作用:用于存储和读取基本数据类型的数据或对象的处理流 它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来 */public class ObjectInputOutputStreamTest { /* 序列化过程:将内存中的java对象保存到磁盘中或通过网络传输出去 使用ObjectOutputStream实现 */ .原创 2022-05-08 20:43:30 · 141 阅读 · 0 评论 -
[IO流]数据流的使用
/* 3.数据流 3.1 DataInputStream 和 DataOutputStream 3.2 作用:用于读取或写出基本数据类型的变量或字符串 将内存中的字符串、基本数据类型的变量写出到文件中 */ @Test public void test3(){ DataOutputStream dos = null; try { dos = new DataOutputStream(new .原创 2022-05-08 12:16:31 · 188 阅读 · 0 评论 -
[IO流]打印流的使用
/* 2.打印流:PrintStream 和 PrintWriter 2.1 提供了一系列重载的print()和println() */ @Test public void test2(){ PrintStream ps = null; try { FileOutputStream fos = new FileOutputStream(new File("D\\IO\\text.txt")); ..原创 2022-05-08 11:40:15 · 120 阅读 · 0 评论 -
[IO流]标准的输入、输出流
public class OtherStreamTest { /* 1.标准的输入、输出流 1.1 System.in:标准的输入流,默认从键盘输入 System.out:标准的输出流,默认从控制台输出 1.2 System类的setIn(InputStream is) / setOut(PrintStream ps)方式重新指定输入和输出的流 1.3练习: 从键盘输入字符串,要求将读取到的整行字符串转成大写输出 然后继续进行输入.原创 2022-05-08 11:02:26 · 115 阅读 · 0 评论 -
多种字符编码集的说明
字符集:ASCII:美国标准信息交换码 用一个字节的7位可以表示ISO8859-1:拉丁码表 欧洲码表 用一个字节的8位表示GB2312:中国的中文编码表,最多两个字节编码所有字符GBK:中国的中文编码表升级,融合了更多的中文文字符号 最多两个字节编码Unicode:国际标准码,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码 所有的文字都用两个字节来表示UTF-8:变长的编码方式,可用1-4个字节来表示一个字符Unicode不完美,这里就有三个问题,一个是,我们已经知.原创 2022-05-08 00:51:16 · 192 阅读 · 0 评论 -
[IO流]转换流实现文件的读入和写出
/* 综合使用InputStreamReader和OutputStreamWriter */ @Test public void test2(){ InputStreamReader isr = null; OutputStreamWriter osw = null; try { //1.造文件、造流 File file1 = new File("dbcp.txt"); .原创 2022-05-07 23:29:59 · 66 阅读 · 0 评论 -
[IO流]缓冲流(字符型)实现文本文件的复制
/* 使用BufferedReader和BufferedWriter实现文本文件的复制 */ @Test public void testBufferedReaderBufferedWriter(){ BufferedReader br = null; BufferedWriter bw = null; try { //创建文件和相应的流 br = new BufferedR..原创 2022-05-06 23:59:34 · 152 阅读 · 0 评论 -
[IO流]缓冲流(字节型)实现非文本文件的复制
/* 处理流之一:缓冲流的使用 1.缓冲流: BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter 2.作用:提升流的读取、写入的速度 */public class BufferedTest { /* 实现非文本文件的复制 */ @Test public void BufferedStreamTest(){ BufferedI.原创 2022-05-06 23:07:44 · 56 阅读 · 0 评论 -
[IO流]使用FileReader和FileWriter实现文本文件的复制
@Test public void testFileReaderFileWriter(){ FileReader fr = null; FileWriter fw = null; try { //1.创建File类的对象,指明读入和写出的文件 File srcFile = new File("he.txt"); File destFile = new File("dest.txt.原创 2022-05-06 17:30:07 · 412 阅读 · 0 评论 -
[IO流]FileWriter写出数据的操作
/* 从内存中写出数据到硬盘的文件里 说明: 1.输出操作,对应的File可以不存在,并不会报异常 2. File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件 File对应的硬盘中的文件如果存在: 如果流使用的构造器是:FileWriter(file,false) / FileWriter(file):对原有文件的覆盖 如果流使用的构造器是:FileWriter..原创 2022-05-06 16:28:51 · 274 阅读 · 0 评论 -
[IO流]FileReader中使用read(char[] cbuf)读入数据
//对read()操作升级:使用read的重载方法 @Test public void testFileReader1(){ FileReader fr = null; try { //1.File类的实例化 File file = new File("he.txt"); //2.FileReader流的实例化 fr = new FileReader(file..原创 2022-05-06 14:45:55 · 129 阅读 · 0 评论 -
[IO流]FileReader读入数据的基本操作
/* 一、 流的分类: 1. 操作数据单位:字节流、字符流 2. 数据的流向:输入流、输出流 3. 流的角色:节点流、处理流 二、 流的体系结构 抽象基类 节点流(或文件流) 缓冲流(处理流的一种) InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedOutputStrea.原创 2022-05-06 11:49:50 · 248 阅读 · 0 评论 -
[泛型与File]File类的常用方法
/* File类的获取功能 public String getAbsolutePath(): 获取绝对路径 public String getPath(): 获取路径 public String getName(): 获取名称 public String getParent(): 获取上层文件目录路径 若无,返回null public long length(): 获取文件长度(即:字节数) 不能获取目录的长度 public long last...原创 2022-05-05 16:58:46 · 185 阅读 · 0 评论 -
[泛型与File]File类的实例化
/* File类的使用 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) 2. File类声明在java.io包下 */public class FileTest { /* 1. 如何创建File类的实例 File(String filePath) File(String parentPath,String childPath) File(File parentFile,String childPath) .原创 2022-05-05 10:41:28 · 86 阅读 · 0 评论 -
[泛型与File]有限制条件的通配符的使用
/* 有限制条件的通配符的使用 ? extends A: G<? extends A> 可以作为G<A>和G<B>的父类,其中B是A的子类 ? super A: G<? super A> 可以作为G<A>和G<B>的父类,其中B是A的父类 */ @Test public void test4(){ List<? extends Person&g..原创 2022-05-04 22:14:19 · 139 阅读 · 0 评论 -
[泛型与File]通配符的使用及使用通配符后数据的读取和写入要求
/* 通配符的使用 通配符:? 类A是类B的父类,G<A>和G<B>是没有关系的,两者共同的父类是:G<?> */ @Test public void test3(){ List<Object> list1 = null; List<String> list2 = null; List<?> list = nu...原创 2022-05-04 19:35:42 · 290 阅读 · 0 评论 -
[泛型与File]泛型在继承方面的体现
public class GenericTest2 { /* 1. 泛型在继承方面的体现 虽然类A是类B的父类,但是G<A>和G<B>二者不具备子父类关系,两者是并列关系 补充:类A是类B的父类,A<G> 是 B<G> 的父类 */ @Test public void test1(){ Object obj = null; String str = null; .原创 2022-05-04 18:58:22 · 143 阅读 · 0 评论