java
java
大猩猩StudyData
这个作者很懒,什么都没留下…
展开
-
枚举的问题
JDK1.5之后,和类,接口是一个级别的,定义枚举的关键字为enum单例:一个类 只能有一个实例枚举:一个类的多个实例,构造方法私有1、基本内容public enum Color { RED,GREEN}/* 枚举相当于创建了两个对象,对象是静态的, 所有枚举的内容等同于以下创建对象的内容 public class Color{ public static final Color RED=new Color(); public st原创 2021-10-15 11:09:31 · 133 阅读 · 0 评论 -
Class类
1、一个类的正常流程:内存中有很多这在运行的类,比如Person类,Student类等2、java是面向对象的方法,所以所有的事物都可以看做一个类,那么内存中的那些类都是事物,整体就可以再被认为是一个类,而具体的某一个Person类,或者Student类就可以看作是他的对象所以java使用了一个类描述内存中正在运行的class对象,这个类是java.lang.class3、作用Class类创建了对象Person类,就可以操作内存中的Person.class文件比如:获取成员变量 并赋值成员原创 2021-10-14 10:23:03 · 98 阅读 · 0 评论 -
TCP协议
TCPClient/* 1、创建客户端对象 2、获取字节输出流对象 3、向服务端写数据 4、获取字节输入流对象 5、用来接收服务端返回的数据 6、关闭资源*/public class TCPClient { public static void main(String[] args) throws IOException { //创建客户端对象 Socket socket = new Socket("127.0.0原创 2021-10-13 15:17:02 · 70 阅读 · 0 评论 -
UDP协议
发送端public static void main(String[] args)throws IOException { //创建发送端 DatagramSocket datagramSocket = new DatagramSocket(); //创建数据包,封装数据 byte[] bytes="你好,UDP".getBytes(); //接收端IP地址对象 InetAddress ip = InetAddress.getByName("127.0.0.原创 2021-10-12 17:13:17 · 59 阅读 · 0 评论 -
Stream流
获取流的方法Stream是java8新加的流接口获取流的方法:1、所有的Collection集合都可以通过stream默认方法获取流2、Stream接口的静态方法of可以获取数组对应的流1、Collection中的方法 stream()//list--->streamArrayList<String> list = new ArrayList<>();Stream<String> stream = list.stream();//set---&g原创 2021-10-12 11:32:19 · 111 阅读 · 0 评论 -
方法引用问题
格式:类名::静态方法对象::成员方法类名::new //类名引用构造方法数组类型[ ]::new //数组引用构造方法前提:lambda表达式,只有一行执行语句,并且调用了已有的方法原创 2021-10-12 11:27:21 · 56 阅读 · 0 评论 -
函数式接口
函数式接口:1、有且仅有一个抽象方法的接口2、可以有默认方法、静态方法FunctionalInterface 注释:与@Override 注释ide作用类似,该注释可以用于一个接口的定义@FunctionalInterface public interface MyFunctionalInterface{ public abstract void myMethod();//只有一个抽象方法 public static void method1(){ //省原创 2021-10-11 11:50:07 · 41 阅读 · 0 评论 -
Lambda
Lambda的标准格式:(参数列表)-> (方法体)():方法的参数,多个参数,用“,”分隔,没有参数,留空->:固定写法,将()的内容传递给{ }{ }:lambda中要执行的内容,代码可以把Lambda表达式理解为一个匿名方法,这个匿名方法重写了对应接口中的方法这里需要参考线程问题这一篇文章public static void main(String[] args) { new Thread(new Runnable() { @Override原创 2021-09-23 17:47:26 · 66 阅读 · 0 评论 -
RandomAccessFile
构造方法:RandomAccessFile(File file, String mode)RandomAccessFile(String name, String mode)既可以读文件又可以写文件,只需要对mode进行指定:r 只读rw 即可以写又可以读RandomAccessFile r = new RandomAccessFile("/Users/Downloads/1.txt", "rw");r.write("hello".getBytes());r.close();Random原创 2021-09-23 11:44:38 · 123 阅读 · 0 评论 -
打印流问题
字节打印流 PrintStream字符打印流PrintWriter两个的方法基本上一致打印流的特点:1、打印流只负责写数据,不读数据2、打印流的方法不会抛出IOException,创建流对象的时候还是会抛出异常的3、字符打印流可以开启自动刷新字符打印流PrintWriter构造方法:PrintWriter(File file)PrintWriter(String filename)特有的方法:print(Object obj)原样输出,如果是对象,则toString,不换行prin原创 2021-09-22 17:38:30 · 129 阅读 · 0 评论 -
序列化的问题
1、序列化的含义:将对象写到一个硬盘文件中,这个过程叫做写对象,也叫做序列化 ObjectOutputStream反序列化:将对象从硬盘文件中读出来到内存的java程序,形成对象该对象,叫做反序列化 ObjectIntputStream2、序列化的常用方法构造方法:ObjectOutputStream(OutputStream out)OutputStream out:字节输出流的超类,可以传入其任意子类对象FileOutputStream,BufferedOutputStream方法:w原创 2021-09-22 16:17:13 · 127 阅读 · 0 评论 -
转换流的问题
1、转换流的来源:FileReader和FileWriter只能使用平台默认的编码格式,FileOutputStream和FileInputStream底层都是使用的FileReader和FileWriter,所以也是使用平台默认的编码格式的。假如IDEA是用的是UTF-8,但是Windows默认的编码格式是gbk,这个时候从文件去读或者写入文件就会因为编码格式不一致导致乱码,所以需要一个方法:既可以将字节流转化为字符流,又可以自定义编码格式。2、InputStreamReader 转换流,继承自Re原创 2021-09-22 10:25:05 · 131 阅读 · 0 评论 -
缓冲流问题
1、缓冲流是在IO流基础上创建的,在创建流对象的时候,会创建一个内置的默认大小的缓冲数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率2、缓缓流也叫做高效流,是对4个基本的Filexxxx流的增强,按照数据类型分类:字节缓冲流 BufferedInputStream、 BufferedOutputStream字符缓冲流 BufferedReader、 BufferedWriter构造方法BufferedInputStream( InputStream in) InputStream in所原创 2021-09-18 10:05:18 · 83 阅读 · 0 评论 -
Properties
1、Properties特点:1>、实现了Map 可以使用Map中的所有方法2>、键是String 值也是String 没有泛型3>、唯一一个可以和IO流直接结合使用的集合2、常用方法:getProperty(String key,String value)getProperty(String key)Set< String> stringPropertyName()public static void main(String[] args) {原创 2021-09-17 17:16:04 · 69 阅读 · 0 评论 -
I/O流问题
1、IO分类根据操作的数据不同分为:字节流和字符流字节流:操作字节的流,计算机中所有的数据都是由字节构成,所以字节流可以操作计算机中一切内容,无论是视频、音频、文件都可以使用字节流操作字符流:字符流操作的流,字符流只能操作文本文件什么是文本文件:使用记事本打开不乱码的文件就是文本文件,比如txt html css js xml java注意:word excel不是文本文件2、IO流的类字节输入流超类:InputStream read 字节其子类:FileInputStream原创 2021-09-17 11:12:36 · 97 阅读 · 0 评论 -
Writer
Writer字符输出流的超类,抽象类方法:write(int c) 写一个字符write(char[ ] chas) 写一个字符数组write(char[ ] chas,int offset, int length) 写字符数组的一部分write(String s) 写字符串flush()将缓冲区的内容刷新到硬盘close()关闭资源flush()和close()区别:flush就是刷新一下缓冲区,将缓冲区的数据刷新到硬盘上,flush之后可以继续写数据close()就是关闭前刷新一次,原创 2021-09-17 11:07:57 · 118 阅读 · 0 评论 -
Reader
Reader是所有字符输入流的超类,抽象类方法:int read() 读一个字符int read(char[ ] chs)读一个字符数组常用子类:FileReader构造方法:构造方法,绑定数据源头FileReader(File file)FileReader(String path)Reader r = new FileReader("/Users/daiyuanru/Downloads/1.txt");int len = r.read();System.out.println(le原创 2021-09-17 09:25:50 · 217 阅读 · 0 评论 -
InputStream
InputStreamInputStream字节输入流的超类,抽象类方法:public int read() 调用一次读一个字节,续读public int read(byte[ ] b) 读一个字节数组常用子类:FileInputStream构造方法:绑定数据源FileInputStream(File file)FileInputStream(String path)操作流程:1、创建字节输入流对象2、调用read()方法读数据3、关闭资源 inputStream = ne原创 2021-09-16 16:56:02 · 144 阅读 · 0 评论 -
OutputStream
OutputStream方法OutputStream是抽象类,也是超类,所以不能创建对象常用子类:FileOutputStream 文件字节输出流构造方法:构造方法要绑定数据目的public FileOutputStream (File file)public FileOutputStream (String path)OutputStream的方法:write(int b)写一个字节write(byte[ ] bytes)写一个字节数组write(byte[ ] bytes,原创 2021-09-16 11:17:35 · 1496 阅读 · 0 评论 -
File类
1、静态常量static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。String pathSeparator = File.pathSeparator;String separator = File.separator;System.out.println(pathSeparator); //返回windows ; linux原创 2021-09-15 16:37:03 · 45 阅读 · 0 评论 -
线程池问题
线程池的好处:1、降低资源消耗2、提高响应速度,当任务到达的时候,不需要等待线程创建就可以立即执行3、提高线程的可管理性,使用线程池可以统一分配、调度Executor类创建线程池类对象的工厂方法,使用此类可以创建线程池对象static ExecutorService newFixedThreadPool(int nThread) 创建一个可重用固定线程数的线程池static ExecutorService newCachedThreadPool() 创建一个可根据需要创建新线程的线程池sta原创 2021-09-10 17:48:51 · 138 阅读 · 0 评论 -
Callable
Callable 接口和Runable都是线程任务,他们的区别:Runable没有返回值Runable没法抛异常,只能try…catchCallable返回结果并且可能抛出异常的任务Thread 构造方法Thread(Runable target)构造方法需要的是Runable的实现类,FutureTask就是Runable的实现类,FutureTask有一个构造方法:FutureTask(Callable callable)...原创 2021-09-09 14:26:09 · 66 阅读 · 0 评论 -
阻塞队列问题
含义:是一个支持两个附加操作的队列,这两个附加操作分别是:在队列为空的时候,获取元素的线程等待队列变为非空,当队列满时,存储元素的线程会等待队列可用接口:BlockingQueue< E>他的所有超级接口:Collection,Iterable,Queue常用方法:public Boolean add(E e)将指定的元素插入到此队列中,成功后返回 IllegalStateException,如果当前没有可用空间,则抛出IllegalStateException。public bool原创 2021-09-05 16:46:13 · 162 阅读 · 0 评论 -
线程的问题
基本概念并发:指两个或者多个在同一时间段内发生并行:指两个或多个在同一时刻发生进程:在计算机上运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程线程:进程中的一个执行单元,负责当前进程中程序的执行,一个进程至少有一个线程线程的调度:多个线程处于就绪状态等着CPU,JVM就负责线程的调度,JVM采取抢占式调度继承Thread类的原理1、Thread类就是线程类,规定了线程应该具备的属性和行为,继承了线程类就具备了这些功能比如继承了Thread类就可以调用start原创 2021-09-04 18:33:57 · 191 阅读 · 2 评论 -
克隆的问题
克隆的前提:被克隆的对象必须实现Cloneable接口必须重写clone方法Cloneable接口只是一个标记型接口,接口里面是没有内容的,但是想要达到克隆的效果,必须implement这个接口ArrayList可以克隆 ArrayList<Integer> list = new ArrayList<>(); list.add(3); list.add(5); Object o =list.clone(); ArrayList<In原创 2021-08-31 15:05:26 · 251 阅读 · 0 评论 -
可变参数基本使用
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-08-30 10:59:47 · 61 阅读 · 0 评论 -
Map的子类
Map<K,V>是接口,不可以创建对象,可以创建其实现类对象。结构图和Collection的Set结构一致,HashMap<K,V>和TreeMap<K,V>是Map的实现类类,LinkedHashMap<K,V>是HashMap<K,V>的子类HashSet底层就是用的HashMap<K,V>的键TreeSet底层就是利用TreeMap<K,V>的键LinkedHashSet底层就是利用的LinkedHashMa原创 2021-08-30 10:29:29 · 229 阅读 · 0 评论 -
Iterable
Iterable目的:实现这个接口允许对象成为”foreach“语句的目标。是Collection的超级接口,所以Collection下的所有实现类都是可以用foreach原创 2021-08-26 19:33:30 · 115 阅读 · 0 评论 -
HashSet
HashSet特点:无序、唯一如何保证元素唯一1、比较两个对象的hashCode()方法,如果不同,就添加到集合中2、如果相同,再调用equals(),如果不同就添加到集合中,如果还是相同,就不添加最后都是用equals()方法比较,为什么不直接用这个方法比较,而是要先用hashCode()比较?因为hashCode()是数字的计算,效率很高,equals()方法的效率低,所以先用hashCode()方法,提升效率hashCode存储自定义类型,自定义类型必须重写hashCode()和equ原创 2021-08-26 17:25:41 · 88 阅读 · 0 评论 -
TreeSet
TreeSet特点:1、可以对集合中的元素进行排序(前提:集合中元素必须实现Comparable接口,或者在构造方法中传入比较器comparator)2、保证集合中元素的唯一性构造方法:public TreeSet()集合元素 必须实现Comparable接口public TreeSet(Compator c)构造方法中传入比较器可以参照Comparable接口和比较器注意事项:如何保证元素唯一?通过比较器或者自然排序的比较,如果两个对象比较的值为0,则不添加...原创 2021-08-26 15:18:29 · 90 阅读 · 0 评论 -
Collections工具类
Collections集合工具类,用来对集合进行操作的常用方法:1、public static void shuffle(List<?> list) 打乱集合顺序2、public static < T> void sort(List< T> list) 根据元素的自然顺序,对指定列表按升排序,注意list必须是Comparable接口的实现类,String、Integer等已经是实现了Comparable接口 ArrayList<Person>原创 2021-08-26 11:38:19 · 119 阅读 · 0 评论 -
Collection的子类
List特点:有序,有索引,元素可以重复List是接口,不能直接使用,需要创建其实现类list下常用实现类:1、ArrayList集合底层结构是:数组,所以查询快,增删慢,线程不安全但是效率高2、LinkedList集合,底层结构是:链表,所以查询慢,增删快3、Vector集合,底层结构是:数组,已经不用了...原创 2021-08-25 15:13:37 · 404 阅读 · 0 评论 -
泛型的问题
泛型的定义定义泛型: 泛型可以定义在类、方法、接口上益处:可以预先使用未知的类型 将数据类型作为参数传递格式:泛型类修饰符 class 类名<泛型变量名1,泛型变量2,……>{}例子:public class className< E>{}泛型方法修饰符<泛型变量名> 返回值类型 方法名(参数)例子:public < E> void method(E e){}泛型接口修饰符 interface<泛型变量名1,原创 2021-08-25 14:06:07 · 124 阅读 · 0 评论 -
增强for循环遍历
增强for循环遍历 JDK1.5用来遍历集合或者数组,底层使用的是迭代器格式:for(存储元素的数据类型:变量名){变量 就是集合或者数组中每个元素} for(int i =0;i<arr.length;i++){ System.out.println(arr[i]); //i是索引 } for(int i :arr){ System.out.println(i);// i是元素 }...原创 2021-08-25 10:10:45 · 243 阅读 · 0 评论 -
Iterator迭代器
作用:想要遍历collection集合,就要获取该集合迭代器完成迭代操作。Iterator iterator(); 获取迭代器,此方法是抽象方法,collection接口的任意实现类都会重写此方法,并返回Iterator的实现类对象:迭代器对象Collection<String> c=new ArrayList<>();c.add("张三");c.add("李四");Iterator<String> it = c.iterator(); //获取当前集合的迭代原创 2021-08-24 17:57:25 · 143 阅读 · 0 评论 -
集合的问题
1、概述集合:集合是java中提供的一种容器,可以用来存储多个数据集合和数组都是容器,区别是什么?1、数组长度是固定的,集合的长度可变2、数组中存储的是同一类型的元素,可以存储任意类型数据,集合存储的都是引用类型主要分类:Collection、Map2、collection常用体系3、collection中常用方法collection中定义了单列集合的共性功能,接口不能直接使用,但是可以创建其实现类对象ArrayList等接口 变量= new 实现类()利用多态,调用子类重写的方法p原创 2021-08-24 16:28:27 · 86 阅读 · 0 评论 -
Regex正则表达式
Regex 正则表达式 在java中就是一种用来匹配规则的字符串java.lang.String boolean matches(String regex) 匹配正则的方法正则规则的API:pattern类X 字符X,matches的参数比如和String一样才能返回boolean[ ] 里面的内容任选其一[A-Za-z] :A到Z或a到z任选其一[^ ] :除了里面的内容都可以. 代表任意字符,如果只想要. 可以用[.] 和\.+代表至少出现一次,例如:a+*代表出现任原创 2021-08-24 13:52:13 · 471 阅读 · 0 评论 -
异常处理问题
异常的处理一:Throwable,具备可抛性,其子类也具备可抛性1、Error 错误,程序员无法解决2、Exception类 程序员可以解决2.1编译异常2.2 RuntimeException运行异常:数组索引越界、空指针等异常的处理方式try{ // 可能出现的异常代码 }catch(异常的类名 变量名){ // 打印异常的信息 }finally{ /* 此处的代码,必须执行 无论是否有异常,无论是否捕获到了异常 这里的代码都会执行*/ }多catch中异原创 2021-08-24 11:14:02 · 98 阅读 · 0 评论 -
部分API(五)
基本类型包装类基本类型对应的包装类(java.lang包中)byteByteintIntegerlongLongfloatfloatdoubleDoublecharCharcaterbooleanBooleanInteger类构造方法:public static Integer ValueOf(int i) 将int—>Integerpublic static Integer ValueOf(String i)原创 2021-08-19 15:20:10 · 58 阅读 · 0 评论 -
部分API(四)
Math类构造方法私有,所有的方法均为静态方法,调用方式均为:类名.方法名(参数)1、静态常量 圆周率 Math.PI2、public static int abs(int a) 返回参数的绝对值3、public static double cell(double a) 向上取整4、public static double floor(double a) 向下取整5、public static int round(float a) 四舍五入返回最接近参数的int值6、public s原创 2021-08-18 20:55:22 · 59 阅读 · 0 评论