![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA-语法
wjjiang2333
这个作者很懒,什么都没留下…
展开
-
Java-深入理解ServiceLoader类与SPI机制
Java-ServiceLoader类与SPI机制引子对于Java中的Service类和SPI机制的透彻理解,也算是对Java类加载模型的掌握的不错的一个反映。了解一个不太熟悉的类,那么从使用案例出发,读懂源代码以及代码内部执行逻辑是一个不错的学习方式。一、使用案例通常情况下,使用ServiceLoader来实现SPI机制。 SPI 全称为 (Service Provider Inte...原创 2019-11-11 20:32:45 · 947 阅读 · 0 评论 -
使用命令行来运行Java程序
使用记事本写入以下代码:public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello Java"); }}注意事项:将文件名存为.java格式即可,并且不需要改变编码类型,为默认的ANSI即可,否则会报错:错误: 需要class, interface或enum...原创 2019-10-26 14:32:30 · 227 阅读 · 0 评论 -
Java-IO 流的Close方法
一、在Java中为何要关闭流GC运行的时间点是不确定的(因为是一条单独存在的线程),所以很多时候你不能直接控制什么时候发生GC。这个带来的问题有两点,一个是有时候你的内存不足需要立刻回收而GC并不会立刻运行;另外一个是因为GC运行期间会占用大量系统资源所以某些情况下你会希望把它推后,或者干脆关掉以便根据性能需求在合式的时候手动执行。另外,GC只能回收内存。至于各种stream之类,他们下边一般...原创 2019-10-24 14:18:04 · 4966 阅读 · 0 评论 -
Java-输入输出流的简单看法与总结
Java-输入输出流的简单看法与总结 为什么Java中关于输入输出流(IO流)的对象为什么这么多,实在难以记忆,这可能是绝大多数人在学习关于Java此内容的问题,下面就来总结一下这个知识点,让这个困难得到解决。一、理解Java的IO模型和框架实际上对于Java输入输出流的所有概念在下图中就已经完整地体现了:还有不得不提一下Java的IO框架:弄明白上面两张图,你就可以说已经理解了Ja...原创 2019-10-21 20:17:17 · 600 阅读 · 1 评论 -
java – 为什么InputStream#read()返回一个int而不是一个字节?
这个是一个有意思的问题,所以我在这里记录一下。首先字节正好是8位,所以使用8位的char类型数据来与字节数据相互一一对应是最好的选择?但是为何方法InputStream#read()需要返回int类型值呢?首先,我们要完成一个EOF(End of File)判断,在Java中就是以-1来表示数据读完了,但是如果返回的char类型值,那么根本没有-1这个数值;如果换种方式,返回一个特殊的char...原创 2019-10-21 11:56:18 · 705 阅读 · 1 评论 -
Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等
如题,做个重新认识的总结,只供参考,如果不准确的,请回复,谢谢bit: 1 bit位 = 1 二进制数据byte: 1 byte = 8 bit位 (-128 ~ 127)字母: 1 字母 = 1 byte = 8 bit(位)short: 16位char: Unicode字符,16bit位int: 32bit位,比如int 类型占用4个字节,32位long: 64bit位floa...转载 2019-10-21 10:33:44 · 331 阅读 · 0 评论 -
Java8-Collectors.groupingBy()-JDK源码分析
引子 groupingBy方法有多个重载方法,但是根本上只有一个方法。之所以提供这么多方法的重载,主要目的还是为了开发者调用方便。通过对于此分组静态方法的学习,我们可以更好地了解Java在收集器collector接口实现上的设计模式以及设计思想。源码分析CodeBlock-1: public static <T, K> Collector<T, ?,...原创 2019-08-20 09:56:29 · 1571 阅读 · 0 评论 -
Java-Sink接口源码分析以及继承关系
idea继承图例说明:实线箭头是指继承关系虚线箭头是指接口实现关系绿色代表接口蓝色代表接口以及抽象类 Sink继承于Consumer,实际上就是比Consumer接口多了几个方法:begin、end、cancellationRequestedofDouble/ChainedDouble/ChainedReference都是Sink接口的内部接口,理解它们三者的继承关系对于理解...原创 2019-08-25 10:26:58 · 1035 阅读 · 0 评论 -
Java8-自定义收集器的实现及源码代码调用分析
1.引子: Java8带给Java的最大特点就是函数式编程,其中一个重要的更新就是对于流的支持,这使得开发者可以使用一行代码就能完成从一个数据结构转化为另一个数据结构,编程效率大大提高。为了充分理解收集器Colleector接口,最好的方法就是自定义一个收集器,并分析其代码执行过程。2.自定义收集器Collector:CodeBlock-1:import java.util.*;impo...原创 2019-08-18 11:23:15 · 172 阅读 · 0 评论 -
Java-ThreadGroup类源代码分析与学习
/** * A thread group represents a set of threads. In addition, a thread * group can also include other thread groups. The thread groups form * a tree in which every thread group except the initial ...原创 2019-08-26 17:36:29 · 277 阅读 · 0 评论 -
Java-异常抛出后代码的执行情况
一、异常被抛出但使用了try-catch 测试代码:public class TempTest { public static void main(String[] args) throws Exception { TestException1.method(1,2); System.out.println("--------------------...原创 2019-08-30 17:56:54 · 272 阅读 · 0 评论 -
Java-多线程:Callable接口和Runnable接口之间的区别
Callable接口和Runnable接口之间的区别一、源代码角度分析两接口间的区别想学习好Future设计模式,我们应当首先将Callable、以及Runnable接口之间的区别弄明白:不妨首先给出他们俩的源代码:@FunctionalInterfacepublic interface Callable<V> { /** * Computes a resu...原创 2019-09-19 17:16:12 · 1142 阅读 · 0 评论 -
Java并发-当compareAndSwapObject遇到自动装箱问题详解
一、引子 这篇文章用于记录我在尝试测试使用CAS机制下的compareAndSwapObject方法所遇到的问题:我的目的是想通过compareAndSwapObject方法调用是否能够满足“若不相同,则不更新”的性质,但是发现其总是返回false,后来意识到是int值自动装箱所导致的问题。接下来就来看代码吧。compareAndSwapObject方法简介: /**...原创 2019-09-20 21:02:00 · 1023 阅读 · 0 评论 -
Java多线程-Furetue接口源代码详解
一、Furetue接口源代码详解1.1 Future的应用场景 不管是继承thread类重写run方法还是实现runnable接口实例对象后作为参数输入至Thread类的构造器中,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果,而这就是我在上一篇关于Callable和Runnabe接口对比中的博客中所提到的,要彻底理解它们两者之间的差别...原创 2019-09-20 21:40:22 · 296 阅读 · 1 评论 -
Java并发-AbstractQueuedSynchronizer(AQS)JDK源代码分析
一、概要分析:1.1 引子 学习Java并发编程不得不去了解一下java.util.concurrent这个包,这个包下面有许多我们经常用到的并发工具类,例如:ReentrantLock,CountDownLatch,CyclicBarrier, Semaphore等。而这些类的底层实现都依赖于AbstractQueuedSynchronizer这个类,由此可见这个类的重要性。所以在Java并...原创 2019-09-22 12:43:52 · 402 阅读 · 0 评论 -
Java-“this”和“类名.this”以及“类名.class”的区分和详解
引言:对于以上三个语法结构的区分,需要先理解Class类所有对象的类以及调用了静态方法的类都需要在对象创建之前在JVM虚拟机中加载,加载内容被称为“类对象”,每个类的类对象是唯一且是不可变的。而在对象创建的时候,由于类对象已加载,所以可以添加上类型标签。1. Class类介绍:此类的介绍是为了解释 类名.class的含义。1.1 Class类简介:Class类只有私有的构造方法,所...原创 2019-08-06 22:56:57 · 10070 阅读 · 5 评论 -
Java中静态代码块、构造代码块、构造函数、普通代码块
一、格式区分及其性质1.静态代码块 Java使用static{//Code...}的格式代表静态代码块。位置:位于类内,与方法同层次public class Test{ static{ //Code... }}静态代码块会随着类的加载而执行,而且只执行一次,并且优先于各种代码块以及构造函数。一个类中若有多个静态代码块,则顺序执行它们。另一方面,静态的代码块也不能访问非...原创 2019-07-28 11:10:24 · 151 阅读 · 0 评论 -
Java-Optional类源码分析
1.引出我们在对象调用对象的方法、域的时候总是要进行判断对象是否为空的操作,即空指针异常(NullPointerException)。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional是Java8提出的新特性,就是为解决空指针异常,方便函数式编程的新特性。1.1空指针异常所需的常见操作我们从一个简单的用例开始。在 Java 8 ...原创 2019-08-05 14:24:59 · 413 阅读 · 1 评论 -
Java-正则表达式学习总结
学习背景在计算机诞生之初,主要用于相关科研计算了,但是随着其逐步地平民化,在编程领域可以看到越来越多的字符串的利用,而正则表达式作为一种语法,其方便之处就在于可以利用简短的规则,将目标字符串操作实现,并且其目前已经被大多数编译器所支持。Java中Pattern类、Matcher类介绍Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次...原创 2019-07-04 13:48:56 · 173 阅读 · 0 评论 -
Java-方法的重载和重写都是多态实现的一种途径
多态的含义:多态是指同一个方法的调用,由于对象的不同可能会有不同的行为。上述是一般对于多态的定义,实际上由于函数入口参数的不同也能构成多态,不过此处与前者定义不同之处在于不在强调对象不同。两种不同时期的多态编译时期多态:其又被称为静态多态,编译时期的多态是靠重载实现的,根据参数个数,类型和顺序决定的(必须在同一个类中)运行时的多态:运行时期的多态是靠方法的重写实现的,在编译期间被视作相同...原创 2019-06-30 10:12:51 · 2557 阅读 · 0 评论 -
Java-Lambda表达式和“方法引用”的对比和详解
Lambda表达式一、Lambda表达式简介1.1什么是Lamdba表达式? Lambda表达式是Java 8 添加的一个新特性,可以认为,Lambda是一个匿名函数(相似于匿名内部类)。1.2为什么使用Lambada表达式? 使用Lambda表达式对比于其他接口实现方式显得非常简洁。(详见3种接口实现的方法代码块CodeBlock-1)1.3Lambda对接口的要求? 虽然Lamb...原创 2019-07-31 21:54:04 · 3549 阅读 · 3 评论