
JavaSE
donCoder
这个作者很懒,什么都没留下…
展开
-
JAVA 接口及Java8更新相关内容
定义接口使用的是接口是interface接口型引用:如果接口的子类实现了接口中的所有的功能,那么这个子类就可以被实例化,子类就符合这个规则,所以接口型引用指向的都是自己的子类对象(多态)。对于接口中常见的成员,而且这些成员都有固定的修饰符(不写帮你加):1、全局常量:public static final(不定义为常量的话会被接口所实现的类到处修改,且接口名可以直接调用)...原创 2018-10-17 12:07:09 · 283 阅读 · 0 评论 -
JAVA IO(3)流转换
流的操作规律:想要知道开发时用到哪些对象,通过四点1、明确源和目的地 源:InputStream、Reader 目的:OutputStream、Writer2、明确数据是否是纯文本数据 源:是:Reader 否:InputStream 目的: 是:Writer 否:OutputStr...原创 2019-02-08 16:14:22 · 119 阅读 · 0 评论 -
JAVA IO(4)PrintWriter/PrintReader
PrintStream、PrintWriter:1、他们提供了打印方法可以对多种数据类型只进行打印,并保持数据的表示形式2、他们不抛IOException3、他们也是装饰类 PrintStream:构造函数,接收三种类型的值:1、字符串路径2、File对象3、字节输出流import java.io.*;public class Main{ ...原创 2019-02-08 16:26:47 · 1542 阅读 · 0 评论 -
JAVA IO(5)使用序列流进行文件切割和合并
import java.io.*;import java.util.*;public class Main{ /* 文件切割 */ private static final int SIZE = 1024*1024; public static void splitFile(File file) throws IOException { ...原创 2019-02-08 16:41:31 · 222 阅读 · 0 评论 -
JAVA IO(6)Serialiazable
import java.io.Serializable;public class Main{ /* * Serialiazable:用于给被序列化的类加ID号 * 用于判断类和对象是否是同一个版本 * 默认的ID号是根据类中各个属性签名算出的。自定义序列号后即使改动权限关键字也可以反序列化。 * * * tra...原创 2019-02-08 17:13:22 · 333 阅读 · 0 评论 -
JAVA IO(7)管道流
普通输入输出流必须通过变量或者数组中转。而管道输入输出流可以直接关联。管道流要结合多线程使用。因为read()会阻塞,如果输入输出流在同一个线程,read()没有数据一直等待,造成死锁。管道输入流提供要写入管道输出流的所有数据字节。import java.io.IOException;import java.io.PipedInputStream;import java.io.Piped...原创 2019-02-08 17:15:29 · 156 阅读 · 0 评论 -
Java 集合体系与List
一、集合体系1)Collection接口在Java类库中,Collection是集合最基本的接口。Collection定义了一系列集合常用操作(获取迭代器、添加、删除、包含、转化数组、判断是否为空、大小)以及default默认方法接口 ( 大部分与流相关( 除removeIf,其用来删除满足符合某个条件的元素 ))。AbstractCollection实现了部分Collection方法。...原创 2019-04-26 23:40:16 · 202 阅读 · 0 评论 -
Java 反射获取类信息
//部分参考至Core Javapackage reflection;import java.lang.reflect.*;import java.util.Scanner;public class ReflectionTest { public static void printConstructers(Class c1) { Constructor[] ct = c1.ge...原创 2019-05-06 20:42:56 · 617 阅读 · 0 评论 -
Java (多)生产者与消费者模式
生产者与消费者模型是Java多线程中的常见经典模型。为此特写一篇博客记录该模式中线程不安全问题的产生以及解决方案。一、单消费者与单生产者模式所谓生产者消费者模式,就是指一个/多个线程生产东西(往资源中赋值等),另一个/多个线程消费资源中的东西(输出资源中的内容等)。下面这个例子为一个线程赋值名字和性别,另一个线程负责输出名字和性别。class Resource{ String n...原创 2019-05-15 15:24:44 · 1056 阅读 · 0 评论 -
[转]Java并发 Volatile关键字解析
转自:https://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volat...转载 2019-05-23 23:40:57 · 111 阅读 · 0 评论 -
JAVA IO(2)BufferedReader与BufferedWriter与装饰者设计模式
BufferedReader和BufferedWriter各自带了数组缓冲,但读取方式仍然是使用的FileReader的read()方法。有很多人说带缓冲会减少IO次数,但从读取方式IO次数并不会减少,只是会减少IO频率。缓冲去大小为8k,当调用BufferedReader的read()方法时会从缓冲区中挨个读取一个字符。BufferedReader还带了一个readLine()方法,可以每次读取...原创 2019-01-22 19:03:54 · 2346 阅读 · 0 评论 -
JAVA 内部类
部分内容参考Core Java为什么要使用内部类:1、内部类方法可以访问外围类作用域中的数据,包括private类型数据。2、内部类可以对同一个包中的其他类隐藏起来。3、当想要定义一一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷(Java8以后可以使用lamba表达式)一、成员内部类 //OuterClass public class Talkin...原创 2019-01-25 15:29:16 · 279 阅读 · 0 评论 -
JAVA 抽象类
抽象:笼统、模糊、看不懂、不具体如果这个类中有抽象的方法,则这个类一定是抽象类。但抽象类里面可以有非抽象的方法特点:1、方法只有声明没有实现时,该方法就为抽象方法,需要abstract修饰 抽象方法必须定义在抽象类中,该类也必须被abstract修饰2、抽象类不能被实例化(创建对象),因为调用抽象方法没意义3、抽象类必须由其子类覆盖了所有的抽象方法后,该子类才可以...原创 2018-10-17 12:13:10 · 143 阅读 · 2 评论 -
JAVA 函数的重载
重载(overload):在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。比如,如果没有重载,我们在写求和这个方法时,必须写一个对整数的,再写一个对小数的。这样非常麻烦且不易调用。但有了重载以后,我们可以把对整数和小数的求和整合到一个方法中,不论往里面传的是小数还是整数都可以通过一次调用解决。 特点:与返回值类型无关,只看参数列表(参数的个数、参数的类型、...原创 2018-10-17 12:20:57 · 17362 阅读 · 0 评论 -
JAVA static关键字
比如创建一个中国人的程序,则每个对象的国籍属性都为China。如果每个对象都存一份,会浪费空间。因此需要用static关键字将此变量设置为类变量(相当于默认/公有属性),该数据被该类的对象所共享。(比如学校的饮水机(static),在没来学校之前他便已经存在。而教室里的人需要用自己的杯子(非static)来接水才可以喝。饮水机随着教室(相当于类)的消失而消失,而杯子随着每个同学(相当于对象)的消失...原创 2018-10-17 12:25:42 · 112 阅读 · 0 评论 -
JAVA 多态(运行时多态和编译时多态)及其内存图解
定义:某一类事物的多种存在方式(一个对象,两种形态)对象的多态:父类或者接口的引用指向其子类的对象多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容多态弊端: 前期定义的内容不能使用(调用)后期子类的特有方法(就是多态调用的只能是父类)。但如果是继承子类覆盖了父类方法,多态调用的仍是子类的方法!多态前提:1、必须有关系(继承、实现)2、要有覆盖多态实际...原创 2018-10-21 19:01:37 · 15093 阅读 · 4 评论 -
JAVA 继承与重写
继承时候,每个子类都有一份父类变量的拷贝,但是如果修改当前子类中从父类继承的成员变量的话,该子类中父类中的变量也随着子类的变化而变化。一个子类修改并不影响另一个子类中父类成员变量的值,因为每个子类都有自己的拷贝:public class Test2 { public int num=0; void print() { System.out.println("T...原创 2018-11-02 14:53:58 · 349 阅读 · 0 评论 -
JAVA 异常
异常:在java中用类的形式对不正常情况进行了描述和封装,将正常流程代码和问题处理代码进行分离,提高阅读行。 问题很多,意味着描述的类很多,将其共性进行向上抽取,形成了异常体系。不正常情况分成了两大类:Throwable:|——1、不可处理的:Error。 特点:比如运行文件不存在,内存溢出,这是错误不是异常。由JVM抛出的严重性问题,一般不处理,直接修改程序...原创 2018-11-02 19:22:29 · 137 阅读 · 0 评论 -
JAVA Comparable与Comparator小结
https://www.cnblogs.com/xujian2014/p/5215082.html#4070338一、Comparable简介 Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接...转载 2018-11-23 22:08:38 · 113 阅读 · 0 评论 -
JAVA 参数传递
https://www.cnblogs.com/hpyg/p/8005599.htmljava参数传递(到底是值传递还是引用传递?)结论:Java中都是按值传递!1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。Java中的参数传递机制一直以来大家都争论不休,究竟是“传值”还是...转载 2018-11-24 15:31:37 · 144 阅读 · 0 评论 -
JAVA 集合List迭代器及其子类
List中除了vector(1.0版本出现,后并入集合)全是非同步:效率高Vector:底层数组,也自动增长缩短(100%延长),同步的(线程安全,效率低)。所以几乎不用,增删查都很慢,垃圾。ArrayList:底层数组,50%延长,不同步(线程不安全,但效率高),查询快。LinkedList:底层链表,不同步,增删很快,也有角标(Link集合的特点)。为什么数组查询比链表快?Ar...原创 2018-11-26 11:02:28 · 283 阅读 · 0 评论 -
JAVA IO(1) Reader与Writer
流操作分为两种 :1、字节流 2、字符流:字节流读取文字字节数据后,不直接操作而是先查找指定的编码表,获取对应的文字, 再对这个文字进行操作。简单说:字节流+编码表。输入流(读):把外设数据加载进内存。输出流(写):把内存数据写入到外设中。 IO常用基...原创 2019-01-19 19:54:15 · 141 阅读 · 0 评论 -
Java 深入理解泛型的强制转型及自动转型
前言:Java的泛型真是狗屎!一、泛型里的强制转换在阅读 Core Java 和 ArrayList 源码时,一直有一个问题困扰着我:既然泛型都会被擦出成raw type(这里被擦除为Object),那么为什么还会有(T) 或(T[ ])这种强制转换呢?这岂不是闲的没事儿干?public class Test<E> { private Object[] elem;...原创 2019-06-01 23:49:22 · 12824 阅读 · 5 评论