01_JAVA
JAVA基础知识学习
l0510402015
这个作者很懒,什么都没留下…
展开
-
156、JAVA成员变量和属性区别
我们经常搞不清成员变量和属性的区别public class Persion { private String name; private int age; public Persion() { } public Persion(String name, int age) { this.name = name; thi...原创 2020-03-20 20:50:01 · 121 阅读 · 1 评论 -
155、注解
一、 概念: 说明程序的,给计算机用 定义: 从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记, 这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情 况下在源代码中嵌入补充信息。 概念描述: ...原创 2020-03-20 20:49:46 · 286 阅读 · 0 评论 -
154、Junit单元测试
Junit单元测试 一、测试分类 1、黑盒测试:不需要写代码,给输入,看程序是否输出期望值。 2、白盒测试:需要写代码。关注程序具体执行流程。 二、Junit使用:白盒测试 1、步骤 (1)、定义一个测试类(测试用) 建议: 测试名:被测...原创 2020-03-20 20:49:27 · 79 阅读 · 0 评论 -
153、测试反射---通过配置文件来获取类名和类中的方法并执行
配置文件:PROclassName=cn.lwgk.Reflex.StudentmethodName=sleepStudent.javapublic class Student { private String name; private int age; private String school; public Student() {...原创 2020-03-20 20:49:05 · 276 阅读 · 0 评论 -
152、测试反射---获取对象方法并执行
ReflexDemo04.javaimport java.lang.reflect.Method;public class ReflexDemo04 { public static void main(String[] args) throws Exception { Class<Person> pC = Person.class; ...原创 2020-03-20 20:48:49 · 172 阅读 · 0 评论 -
151、测试反射---获取class构造方法并创建对象
Person.javapublic class Person { private String name; private int age; public String school; public int bir; public Person() { } public Person(String name, int age) {...原创 2020-03-20 20:48:35 · 117 阅读 · 0 评论 -
150、测试反射---获取class,并测试反射相关方法
Person.javapublic class Person { private String name; private int age; public String school; public int bir; public Person() { } public Person(String name, int age) {...原创 2020-03-20 20:48:21 · 107 阅读 · 0 评论 -
149、反射举例-测试三种获取class的方式
Person.javapublic class Person { private String name; private int age; public String school; public int bir; public Person() { } public Person(String name, int age) {...原创 2020-03-20 20:48:06 · 110 阅读 · 0 评论 -
148、反射概念
Java让我们在运行时识别对象和类的信息,主要有两种方式:一种是传统的RTTI(Run-Time Type Identification),它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息。使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)著作权归作者所有。商业转载请联系作者获得授权,非商业...原创 2020-03-20 20:47:49 · 76 阅读 · 0 评论 -
147、 数组的构造器引用
数组也是 Object 的子类对象,所以同样具有构造器,只是语法稍有不同@FunctionalInterfacepublic interface ArrayBuilder { //抽象方法,传入一个长度,返回一个int数组 public abstract int[] builderArray(int len);}/* 数组也是object的子类对象...原创 2020-03-20 20:47:31 · 116 阅读 · 0 评论 -
146、类的构造器引用
由于构造器的名称与类名完全一样,并不固定。所以构造器引用使用 类名称::new 的格式表示。@FunctionalInterfacepublic interface PersonBuilder { public abstract Person builder(String s);}public class Person { private String na...原创 2020-03-18 10:51:13 · 92 阅读 · 0 评论 -
145、通过this引用成员方法
this代表当前对象,如果需要引用的方法就是当前类中的成员方法,那么可以使用“this::成员方法”的格式来使用方法引用。@FunctionalInterfacepublic interface Richable { public abstract void buy();}/* 通过this引用本类成员方法 */public class Husband ...原创 2020-03-18 10:51:01 · 701 阅读 · 0 评论 -
144、通过super引用成员方法
如果存在继承关系,当Lambda中需要出现super调用时,也可以使用方法引用进行替代。@FunctionalInterfacepublic interface Greetable { public abstract void greet();}public class Human { public void sayHello(){ Syste...原创 2020-03-18 10:50:51 · 138 阅读 · 0 评论 -
143(案例)通过类名称引用静态方法
计算绝对值@FunctionalInterfacepublic interface CalcableImb { public abstract int calsAbs(int data);}/* 通过类名引用静态成员方法 类已经存在,静态成员方法已经存在 就可以通过类名直接引用静态成员方法 举例:对一个整型进行计算,返回绝对值 */...原创 2020-03-18 10:50:40 · 278 阅读 · 0 评论 -
142、(案例)通过对象名引用成员方法
将给定字符串改为大写@FunctionalInterfacepublic interface Printable { public abstract void print_self(String s);}/*把字符修改为大写并输出 */public class PrintMethod { public void StringToUpper(String ...原创 2020-03-18 10:50:17 · 150 阅读 · 0 评论 -
141、方法引用
方法引用是java8的新特性之一, 可以直接引用已有Java类或对象的方法或构造器。方法引用与lambda表达式结合使用,可以进一步简化代码。@FunctionalInterfacepublic interface Printable { public abstract void printSelf(String s);}/* 方法引用:是对Lambda表达...原创 2020-03-18 10:50:07 · 68 阅读 · 0 评论 -
140、(案例)从一个集合中提取出指定条件的元素
要求: 有两个ArrayList集合存储了两个队伍成员的姓名,要求按顺序执行如下操作 1、第一个队伍只要名字为3个字的成员姓名; 2、第一个队伍筛选之后只要前面3个人; 3、第二队伍只要姓张的成员姓名; 4、第二个队伍筛选之后不要前2个人; 5、将两个队伍合并为一个队伍; 6、根据姓名创建person对象; 7、打印整个队伍Pers...原创 2020-03-18 10:49:56 · 720 阅读 · 1 评论 -
139、Concat()方法
Stream中的静态Concat()方法,用于将两个Stream流合并成一个Stream流static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)import java.util.Arrays;imp...原创 2020-03-18 10:49:44 · 69 阅读 · 0 评论 -
138、skip()方法
Stream的方法skip()用于从指定的Stream流中截取从n开始到结束的所有元素Stream<T> skip(long n)import java.util.Arrays;import java.util.stream.Stream;public class Demo16Skip { public static void main(String[] ar...原创 2020-03-18 10:49:16 · 1820 阅读 · 0 评论 -
137、limit()方法
Stream的方法limit()用于从指定的Stream流中截取从0开始到maxSize个元素Stream<T> limit(long maxSize)import java.util.Arrays;import java.util.stream.Stream;public class Demo15Limit { public static void main...原创 2020-03-18 10:49:32 · 53 阅读 · 0 评论 -
136、Count()方法
Thread的方法Count()用来输出Thread流里面包含多少元素import java.util.Arrays;import java.util.stream.Stream;public class Demo14Count { public static void main(String[] args) { String[] str = {"1","2...原创 2020-03-17 08:23:05 · 94 阅读 · 0 评论 -
135、map()方法
hread的方法map()用来将一个Thread流映射为另外一个类型的Thread流,传入的的参数为Function函数式接口<R> Stream<R> map(Function<? super T,? extends R> mapper)import java.util.Arrays;import java.util.stream.Stream...原创 2020-03-17 08:22:50 · 102 阅读 · 0 评论 -
134、filter()方法
方法filter:用于过滤Stream流,返回也是一个流Stream<T> filter(Predicate<? super T> predicate)参数: 是一个Predicate接口,该接口是一个判断函数式接口,唯一的抽象方法为accept, 因此支持lambda表达式import java.util.stream.Stream;pu...原创 2020-03-17 08:22:29 · 90 阅读 · 0 评论 -
133、foreach()方法
forEach()方法,这个和普通循环里面的for..each不是一回事default void forEach(BiConsumer<? super K,? super V> action)该方法参数是一个Consumer接口函数,会将每一个流元素交给该接口函数处理。Consumer接口是一个消费性的函数式接口,可以传利Lambda表达式。注意: 1、forEac...原创 2020-03-17 08:22:15 · 134 阅读 · 0 评论 -
132、流接口Stream<T>
java.util.stream.Stream<T>是JAVA 8新加入的最常用的流接口。(这并不是一个函数接口)一、如何获取Stream流 获取一个流非常简单,有以下方式: 1、所有的Collection集合(单列集合:list、set)都可以通过stream默认方式获取流; default Stream<E> ...原创 2020-03-17 08:22:00 · 316 阅读 · 0 评论 -
131、函数式接口---Stream
import java.util.ArrayList;import java.util.Arrays;/*Interface Stream<T>:支持顺序和并行聚合操作的一系列元素。也就是流式操作举例: 给定一个字符串数组,将里面满足姓张的,且名字字符数量为3个的打印出来 */public class Demo09Stream { public stat...原创 2020-03-17 08:21:47 · 105 阅读 · 0 评论 -
130、函数式接口function
一、Function<T, R>接口用来将一个类型数据T转换为数据类型R,当然T和R的类型可以一致。源码如下:@FunctionalInterface public interface Function<T, R> { R apply(T t); /** * @return a c...原创 2020-03-17 08:21:35 · 189 阅读 · 0 评论 -
129、函数式接口---Predicate
Predicate接口一、概念Predicate是个断言式接口,有时候我们需要对某种类型的数据进行判断,从而得到一个boolean值结果。这时可以使用java.util.function.Predicate<T> 接口二、抽象方法:testPredicate 接口中包含一个抽象方法: booleantest(Tt) 。用于条件判断的场景三、默认方法...原创 2020-03-17 08:21:12 · 241 阅读 · 0 评论 -
128、函数接口类---Consumer
一、概念java.util.function.Consumer<T>接口正好与Supplier接口相反,它不是生产一个数据,而是 消费一个数据,其数据类型有泛型决定。Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据。Consumer接口是表示一个接受单个输入参数并且没有返回值的操作。不像其它函数式接口,Cons...原创 2020-03-17 08:20:58 · 952 阅读 · 0 评论 -
127、函数接口---supplier<T>
java.util.function.supplier<T>一、Supplier<T>接口被称为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型数据。二、接口仅包含一个无参的方法:T get().用来获取一个泛型参数指定类型的对象数据。三、supplier一般作用是用来产生一个对象(调用一次get方法,返回一次T所代表的对象)s...原创 2020-03-17 08:20:39 · 2374 阅读 · 0 评论 -
126、函数接口---Comparator(返回参数为函数式接口)
import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;/*方法返回值是一个函数式接口,可以使用Lambda表达式 */public class Demo04Comparator { public static Comparator<String> compar...原创 2020-03-16 07:43:24 · 347 阅读 · 0 评论 -
125、函数接口---Runnable(使用函数接口作为参数)
/*一个使用函数接口作为方法参数的举例 */public class Demo03Runnable { public static void metho1(Runnable r){ new Thread(r).start(); } public static void main(String[] args) { //使用普通匿名内部...原创 2020-03-16 07:41:09 · 1158 阅读 · 0 评论 -
124、Lambda的延迟执行特性,提升性能
有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费。而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能。一种典型的场景就是对参数进行有条件使用,当调用方法传进方法参数不满足条件,实际不会执行,但是还是进行了一些预先操作,这些预先操作就是浪费,举例如下:/*使用lambda表达式作为参数传递:1、只有满足level为1时,才会调用接口中的builder方法。...原创 2020-03-16 07:40:52 · 225 阅读 · 0 评论 -
123、函数式接口概念
函数式接口:有且仅有一个抽象方法的接口,当然接口中可以包含其他方法(默认,静态,私有)可以对定义的函数式接口加入注解词: @FunctionalInterface 作用: 1、可以检测接口是否是一个函数式接口,比如是否没有抽象方法或者有多个抽象方法。Lambda可以说是匿名内部类的方法糖,但是原理又不一样,匿名内部内会编译后会还是会生成class文件,运行时内存会...原创 2020-03-16 07:40:39 · 77 阅读 · 0 评论 -
122、(案例)模拟BS案例
import java.io.*;import java.net.ServerSocket;import java.net.Socket;/*服务器端:实现可以通过浏览器访问注意:1、要把web文件夹拷贝到工程和src同一个级别2、访问网址输入http://127.0.0.1:8080/Day15/web/index.html3、浏览器解析服务器会写的html页面,如果页面中有...原创 2020-03-16 07:40:09 · 159 阅读 · 1 评论 -
121、(案例)模拟服务器和客户端
客户端:import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;/*TCP通讯的客户端:向服务器发送链接请求,给服务器发送数据,读取服务器会写的数据表示客户端的类: java.net.Socket:此类实现客户端套接字...原创 2020-03-16 07:39:55 · 276 阅读 · 1 评论 -
120、网络编程ServerSocket举例:本地读取图片上传到服务器
将一个本地文件上传到服务器实现步骤: 1、创建一个不低字节输入流FileInputStream对象,用于读取本地文件。 2、创建一个客户端socket对象,确定好服务器的IP地址和端口号。 3、使用socket中的方法getOutputStream,获取网络字节输出流OutputStream对象。 4、使用本地字节流FileInputStream对象中的方法rea...原创 2020-03-16 07:39:42 · 261 阅读 · 0 评论 -
119、网络编程ServerSocket举例
文件上传客户端:读取本地文件,上传到服务器,读取服务器回写的数据步骤: 1、创建一个服务器serverSocket对象,和系统要指定的端口号, 2、使用ServerSocket对象中的方法accept,获取到请求的呼呼段socket对象。 3、使用socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象。 4、判断准备...原创 2020-03-16 07:39:25 · 95 阅读 · 0 评论 -
118、网络编程相关知识
一、软件脚骨 CS:通过应用程序访问服务器 ; BS:通过浏览器访问服务器二、网络协议1、UDP:用户数据报协议,不管对方是否在线,都可以给对方发送信息,也不需要对方回复接收到,这个耗资小,效率高,但是不能保证数据有效性,一次只能发送64KB以内。2、TCP:传输控制协议。面向连接的通讯,客户端和服务器会进行3次握手。第一次:客...原创 2020-03-16 07:35:24 · 91 阅读 · 0 评论 -
117、打印流
平时我们在控制台打印输出,是调用print方法和println方法完成的,这两个方法都来自于java.io.PrintStream类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。一、PrintStream类构造方法public PrintStream(String fileName): 使用指定的文件名创建一个新的打印流。我们平时用的Syste...原创 2020-03-16 07:31:18 · 45 阅读 · 0 评论