- 博客(41)
- 收藏
- 关注
原创 常用函数接口
函数式接口:有且只有一个抽象方法的接口称之为函数式接口当然接口中可以包含其他的方法(默认,静态,私有)@FunctionalInterface注解作用:可以检测接口是否是一个函数式接口是:编译成功否:编译失败(接口中没有抽象方法或者抽象方法的个数多余一个)函数式接口的使用:一般可以作为方法的参数和返回值类型创建一个main方法类:public class demo01 {//定义一个方法,参数使用函数式接口MyFunctionalInterface public static voi
2021-03-25 17:57:19
626
原创 TCP通信模拟
TCP通信的客户端:向服务器发送链接请求,给服务器发送数据,读取服务器回写的数据表示客户端的类:java.net.Socket:此类实现客户端套接字,套接字是两台机器间通信的端点套接字:包含了IP地址和端口号的网络单位构造方法:Socket(String host,int port)创建一个流套接字并将其链接到指定主机上的指定端口号参数:String host:服务器主机的名称/服务器的IP地址int port:服务器的端口号成员方法:OutputStream getOutputStream()
2021-03-23 10:30:11
924
原创 打印流
java.io.PrintStream:打印流PrintStream为其他打印输出流添加了这个功能,是他们能够方便打印出各种数据值表示形式PrintStream的特点:1、只负责数据的输出,不负责数据的读取2、与其他输出流不同,PrintStream永远不会抛出IOException构造方法:PrintStream(File file):输出的目的第是一个文件PrintStream(OutputStream out):输出的目的地是一个字节输出流PrintStream(String fileNa
2021-03-21 22:40:25
247
原创 序列化和反序列化
java.io.ObjectOutputStream extends OutputStreamobjectOutputStream:对象的序列化流作用:把对象以流的方式写入到文件中保存构造方法:ObjectOutputStream(OutputStream out)创建写入指定OutputStream的ObjectOutputStream参数:OutputStream out:字节输出流特有成员:void writeObject(Object obj)将指定的对象写入ObjectOutStream
2021-03-21 15:31:16
86
原创 转换流
OutputStreamWriterjava.io.OutputStreamWriter extends WriterOutputStreamWriter:是字符流通想字节的桥梁:可以使用指定的charset将要写入流中的字符编码成字节(编码:把能看懂的变成看不懂)继续自父类的共性成员方法:1、void write(int c)写入单个字符2、void write(char[] cbuf)写入字符数组3、abstract void write(char[] cbuf,int off,int len
2021-03-21 13:27:09
58
原创 BufferedWriter:字符缓冲输出流
java.io.BufferedWriter extends writerBufferedWriter:字符缓冲输出流继承自父类的共性成员方法:1、void write(int c):写单个字符2、void write(char[] cbuf):写入字符数组3、abstract void write (char[] cbuf,int off,int len);写入字符数组的某一部分,off数组的开始索引。len写的字符个数4、void write(String str,int off,int le
2021-03-20 23:51:32
344
原创 字节缓冲输出流
BufferedOutputStream使用java.io.BufferedOutputStream extends OutputStreamBufferedOutputStream:字节缓冲输出流继承自父类的共性方法:1、public void close():关闭此输出流并且释放与此流有关的任何系统资源2、public void flush():刷新此输出流并且强制任何缓冲的输出字节被写出3、public void write(byte[] b):将b.length字节从指定的字节数组写入此输
2021-03-20 23:01:54
377
原创 Properties集合
Properties集合java.util.Properties集合extends Hashtable<k,v>implements Map<k,v>Properties类表示了一个持久的属性集。Properties 可以保存在流中或者从流中加载。Properties集合是一个唯一一个和IO流相结合的集合可以使用Properties集合中的方法store,把集合中的数据持久化的写入硬盘中去存储可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读
2021-03-20 16:59:26
384
原创 在jdk1.7之前使用try catch finally处理流中的异常
在jdk1.7之前使用try catch finally处理流中的异常格式:太容易{可能会出现的异常代码}catch(异常变量 变量名){异常处理逻辑}finally{一定会执行的代码资源释放}import java.io.FileWriter;import java.io.IOException;public class demo05 { public static void main(String[] args){ /*提高变量fw的作用域,让finally可
2021-03-20 14:53:10
130
原创 IO流
IO流输出写入方法java.io.OutputStream;字节输出流此抽象类是表示输出字节流的所有类的超类定义了一些子类共性的成员方法:public void close():关闭此输出流并且释放与此流相关联的任何系统资源public void flush():刷新此输出流并且强制任何缓冲的输出字节被写出public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流public abstract void write(int b):将指定的字节输出
2021-03-19 22:59:00
96
原创 过滤器
学习过滤器必须知道两件事1、过滤器中的accept方法是谁调用的2、accept方法的参数pathname是什么?accept方法返回值是一个布尔值true就会把传递过去的File保存在File数组中false:就不会把传递过去的File对象保存到File数组中listFiles方法一共做了3件事:1、listFiles方法会对构造方法中传递的目录进行遍历,获取目录中的每一个文件或者文件夹封装为File对象2、listFiles方法会调用参数传递的过滤器中的方法accept3、listFil
2021-03-19 10:30:55
96
原创 递归
关于递归:方法自己调用自己递归分为两种,一种是直接递归,一种是间接递归。直接递归称为方法自己调用自己间接递归称为可以A方法调用B方法,B方法调用A方法注意事项:1、递归一定要有条件的限定,保证递归能够停下来,否则会发生栈溢出2、在递归中虽然有条件的限定但是递归的次数不能太多,否则也会发生栈溢出3、构造方法禁止递归递归的使用前提:当调用方法时,方法的主体不变,每次调用方法的参数不同,可以使用递归习:使用递归计算1~n之间的和定义一个方法使用递归计算1~n之间的和n+(n-1)+(n-2)+
2021-03-18 21:32:20
94
原创 File类遍历(文件夹)目录功能
File类遍历(文件夹)目录功能1、public String[] list():返回一个String数组,表示该File目录中的所有子文件或者目录遍历构造方法中给出的目录,会获得目录中所有的文件/文件夹,把获取到的文件夹/文件存储到一个String类型的数组中2、public File[] listFiles():返回一个File数组,表示该目录中的所有的子文件或目录遍历构造方法中给出的目录,会获取目录中所有的文件/文件夹,把文件夹封装为File对象,把多个对象封装到File的数组中注意:lis
2021-03-18 00:32:04
668
原创 File类
java.io.File类文件和目录路径名的抽象表达形式。Java把电脑中的文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件进行操作我们可以使用File类的方法创建一个文件/文件夹,删除文件/文件夹,判断文件/文件夹是否存在,对文件/文件夹进行遍历,获取文件的大小File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法重点:记住这三个单词file:文件,directory:文件夹/目录,path:路径常用方法:static String pathSeparat
2021-03-18 00:02:51
215
1
原创 Lambda表达式
实现Runnable接口方式实现多线程程序创建Runnable接口实现类,重写run方法,设置线程任务public class RunnableImpl implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()+"新的线程创建"); }}public class demoRunnable { publ
2021-03-17 00:41:48
73
原创 模拟买票问题讲解线程安全问题
实现买票案例买票案例出现了线程问题,卖出了重复和不存在的票解决线程安全问题的一种方法:使用同步代码块格式:synchronized(锁对象){可能出现线程问题的代码块(访问了共享数据的代码)}注意:1、通过代码块中的锁对象,可以使用任意对象2、但是必须是保证多线程使用的锁对象是同一个3、锁对象作用:把同步代码块锁住,只让一个线程在代码块中执行public class RunnableImpl implements Runnable{ //定义一个多个线程共享的票源 priv
2021-03-15 19:52:36
195
原创 创建多线程程序第二种方式
创建多线程程序第二种方式:实现Runnable接口java.lang.Runnable,Runnable接口应该由那些打算通过一线程执行其实例的类来实现,类必须定义一个称为run的无参数方法java.lang.Thread类的构造方法Thread(Runnable target)分配新的Thread对象。Thread(Runnable target,String name)分配新的Thread对象实现步骤:1、创建一个Runnable接口的实现类2、在实现类中重写Runnable接口的实现类对象
2021-03-15 15:53:34
79
原创 throw 关键词
throw 关键词作用:可以使用throw关键字在指定的方法中抛出指定的异常使用格式:throw new XXXException(“异常产生的原因”);注意:1、throw 关键字必须写在方法内部2、throw关键字后面new的对象必须是Exception或者时Exception的子类对象3、throw关键字抛出指定的异常对象我们就必须处理这个对象throw关键字后面创键的是RuntiamException或者是RuntaimException的子类对象,我们可以不用处理,默认交给JVM处理
2021-03-13 19:48:28
1635
原创 HashMap存储自定义类型键值
HashMap存储自定义类型键值Map必须是唯一的:作为key的元素,必须重写hashCode方法和equal方法,以保证key唯一定义一个Person类public class Person { private String name; private int age; public Person() {} public Person(String name, int age) { this.name = name; this.age
2021-03-13 13:14:34
220
原创 Map集合
java.util.map<k,v>集合Map是一个接口Map集合的特点:1、Map集合是一个双列集合,一个元素包含两个值(一个是key,一个是value)2、Map集合中的元素,key和value的数据类型可以相同也可以不同3、Map集合中 元素,Key是不允许重复,value可以重复4、Map集合中的元素,key和value是一一对应java.util.hashMap<k,v>集合implements Map<k,v>接口HashMap集合的特点:1、
2021-03-12 23:04:53
80
原创 Collection集合工具类用法
java.util.Collections是集合工具类,用来对集合操作,部分方法如下;public static boolean addAll(Collection c,t…elements):往集合中添加一些元素public static void shuffle(List<?>list):打乱集合顺序import java.util.ArrayList;import java.util.Collections;public class demoCollection { pu
2021-03-12 19:50:16
137
原创 Set集合使用
java.util.Ste接口extends Collection接口Set接口的特点:1、不允许存储重复的元素2、没有索引,没有带索引的方法,也不能使用普通的for循环遍历java.util.HashSet集合implements Set接口HashSet特点:1、不允许存储重复的元素2、没有索引,没有带索引的方法,也不能使用普通的for循环遍历3、是一个无序集合,存储元素和取出元素的顺序有所不同4、底层是以个哈希表结构(查询速度非常快)import java.util.HashSet;
2021-03-12 12:19:24
258
原创 LinkedLIst集合
java.util.List接口extends Collection接口List接口特点:1、有序的集合,存储元素的顺序时一致的()存储的是123取出的是1232、有索引,包含了一些带索引的方法3、允许存储重复单元List接口中带索引的特有方法:public void add(int index, E element)public E get (int index);返回集合中指定元素。public E remove (int index):移除表格中元素,返回的是移除的元素public E
2021-03-11 22:16:16
155
原创 泛型
关于泛型定义一个含有泛型的类,模拟ArrayList集合泛型是一个未知数据类型,当我们不确定什么数据类型的时候可以使用泛型泛型可以接收任何数据类型,可以使用Integer,String,student。。。创建对象的时候确定泛型类型public class GenericClass<E> { private E name; public E getName() { return name; } public void setName(
2021-03-10 21:18:29
57
原创 关于String Builder类的原理
String类:字符串时常量;他们的值在创建之后不能改变字符串的底层时一个被final修饰的数组,不能改变,是一个常量private final byte[] value;在进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。比如:String s=“a”+“b”+“c”="abc"就会有好几个字符串。但是StringBuilder类:字符串缓冲区可以提高字符串的操作效率(堪称一个长度可以变化的字符串0底层也是一个数组,但是没有被final修饰,可以改变长度byte [] value
2021-03-08 22:16:05
363
原创 System类方法的使用方法
System两种方法的使用java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或者系统操作,在System类的API文档中常用的方法有:public static long currentTimeMIlls():返回以毫秒为单位的时间。public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int Length):将数据拷贝到另一个数组中import java.util.A
2021-03-08 20:01:17
303
原创 Calender类的使用
Calend类使用方法java.util.Calendar类;日历类Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR,MONTH,DAY-OF-MONTH,HOUR)Calendar类无法直接创建对象使用,里面有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象。static Calendar getInstance()使用默认时区和语言环境获得一个日历。public class demoCalendar { public sta
2021-03-08 16:28:15
512
原创 关于Date类的学习
标题java.util.Date:表示日期和时间的类date表示特定的瞬间,精确到毫秒。毫秒:千分之一秒,1000毫秒=1秒特定的瞬间:一个时间点,一刹那时间毫秒的作用:可以对时间和日期进行计算如:2099-1-3到2088-1-1中间一共有多少天可以把日期转化成毫秒进行计算,计算完毕之后再把毫秒转化成日期把日期转化成毫秒:当前日期:时间原点:1970年1月1日00:00:00就是计算当前日期到时间原点之间一共经历了多少毫秒miaoblic class demo01Date {
2021-03-08 13:46:34
170
原创 内部类学习方法
如果一个事物的内部包含另一个事物,那么这就是一个内部类包含另一个类。例如:身体和心脏的关系,又如同:汽车和发动机的关系。分类:1.成员内部类2.局部内部类(包含匿名内部类)成员内部类的定义格式修饰符 class 外部类名称{修饰符 class 内部类名称{//。。。。}//。。。}注意事项:内用外,随意访问,但是外用内必需使用内部类对象。如何使用成员内部类?有两种方式:1.间接方式:在外部类的方法中使用内部类;然后main只是调用外部类的方法。2.直接方试:类名称 对象名=new
2021-02-08 18:30:30
160
原创 final关键字的用法
final关键字的用法final关键字代表最终,不可改变的。常见的四种用法:1.可以用来修饰一个类2.可以用来修饰一个方法3.可以用来修饰一个局部变量4.可以用来修饰一个成员变量当final关键字用来修饰一个类的时候,格式:public final class 类名称{//‘’‘’‘}含义是这个类不能有子类注意:一个类如果是final的,那么其中所有成员方法都无法进行覆盖重写(因为没有子类)但是final关键字所在的类可以对继承的父类进行覆盖重写当final关键字修饰一个方法的时候
2021-01-28 13:30:00
106
原创 继承-多态中多态的使用
多态的格式代码当中体现多态性,其实就是一句话:父类引用指向子类对象格式:父类名称 对象名=new 子类名称()或者:接口名称 对象名称=new 实现类名称()public class demo01Polymorphism { public static void main(String[] args) { //使用多态的写法,左侧父类的引用,只想了右侧子类的对象 Fu obj=new Zi(); obj.method(); o
2021-01-26 15:59:05
173
原创 Math类方法举例
Java.util.Math 里面提供了大量的静态方法,获取绝对值完成与数学运算相关的操作。public static double ceil(double num):向上取整public static double abs(double num):获取绝对值public static double floor(double num):向下取整public static long round(double num);四舍五入。Math.PI:代表圆周率public class demo01Mat
2021-01-21 22:58:42
168
原创 Arrays工具类 Arrays练习-字符串倒序
java.util.Arrays是一个与数组有关的工具类,里面提供了大量静态方法,用来实现数组常见的操作。public static String toString(数组):将参数数组变成字符串(按照默认格式[元素1,元素2,元素3…])只要是数组都可以,无论是字符数组还是字节数组Array.toString()都可以转化成默认格式的字符串public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排列。备注:1.如果是数值,sort默认按照升序从小到大2.如果
2021-01-21 17:40:53
245
原创 static使用方法
static使用方法如果一个成员变量使用了static关键词,那么这个变量不在属于对象自己,而是属于所在的类。多个对象共享同一份数据。public class student { private int id;//学号 private String name;//姓名 private int age;//年龄 static String room;//所在教室 private static int idconuter=0;//学号计数器 public s
2021-01-21 13:06:20
336
4
原创 关于for循环的初级学习
for循环是代码循环的一种初级使用方法!关于for循环主要有一下几点:1.循环开始的初体只执行一次,而且是唯一第一次2.如果循环条件开始,那么循环题开始执行,如果循环条件不成立,那么循环跳出不进行.3.循环题就是循环中要进行的内容.4.循环最终结束.pablic class demoFor{ pabulic static void main(Sting[] args){ int a=1; for(a;a<100;a++){//循环初体,条件判断 S
2021-01-10 20:53:22
225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人