Java
文章平均质量分 72
name_s_Jimmy
每天坚持学习10小时,坚持锻炼1小时。吃好睡好。
展开
-
Java8新特性:集合遍历forEach方法
Java8给所有的集合都添加了一个新的方法forEach,该方法遍历集合中的元素并为每个元素执行指定的动作。注意,这里说的是集合的forEach方法,方法是在接口Iterable中的。而不是流Stream中的forEach方法,这两个特别容易混淆,两个方法的功能类似,但是使用场景有所区别。下面这个就是集合的Iterable接口和Map接口中的forEach方法,它有一个默认实现,子类无需实现这个方法,集合对象可以直接调用forEach方法。原创 2023-01-13 15:24:48 · 1975 阅读 · 0 评论 -
Java8新特性:Lambda表达式与函数式编程
Java8已经发布好久了,说是新特性其实早就不算新特性了,之前一直想补上这块内容,现在来讲讲我对Lambda表达式和函数式编程的理解。函数式编程在框架类代码中很常见,尤其是Spring源码中特别多,它的最主要作用就是简化代码,封装变化。后面我们在讲Spring源码时会再次讲到函数式编程。原创 2023-01-10 18:33:45 · 2263 阅读 · 1 评论 -
com4j学习(1):Java操作Visio之Java读取Visio图形关系并存储到XML文件中
前言:MicroSoft Visio是微软旗下一款非常非常出色的绘图软件,可以用来绘制各种各样的图形(如流程图、UML、工程图等)。现在有这样一个需求,我们想读取visio中的图形的形状、属性、连接关系等到程序中(java、c++、python都行),这样我们就可以将Visio中的图形之间存在的关系以其他的形式(XML、JSON等)进行存储。这样一来,就扩展了Visio的功能,不仅能得到图形文...原创 2018-08-06 11:16:32 · 9252 阅读 · 9 评论 -
com4j学习(2):Visio自定义模具和形状,并添加连接点
前言:既然我们想绘制跟自己业务相关的图形,并读取Visio图形中的结构信息,那么我们自然会想到要自定义图形,本文详细讲解如何自定义图形。正文:首先我们要明白什么是模具,什么是形状,以及两者之间的关系?模具就相当于一个容器,里面有很多个形状,我们可以在模具中添加或者删除形状,如下图所示: 一、下面来看如何新建模具点击更多形状–新建模具,然后模具栏里面出现新的模具。 右...原创 2018-08-07 11:14:49 · 10063 阅读 · 0 评论 -
java内部类(1):java内部类的创建以及对外提供的访问方式,匿名内部类详解
前言我们在描述事物的时候,事物的内部还有事物,这个内部事物还要访问外部事物中的内容时。那么,这个内部事物就可以用内部类来描述。内部类也叫内置类,嵌套类。正文顾名思义,内部类就是一个类嵌套在另一个类中。内部类可以在外部类的成员位置,也可以在外部类的局部位置,也就是成员函数中。一般,我们在定义内部类时设置其访问权限为私有private,并在外部类中提供访问它的方法。下面来看例子:package com.原创 2017-05-18 18:00:10 · 1891 阅读 · 0 评论 -
javaIO(1):OutputStream和FileOutputStream源码分析及“装饰者模式”在IO中的应用
前言一,IO体系从现在起,我们将详细介绍java.io包中的关于输入输出有关的类。了解过这个包的都知道,里面的类继承关系错综复杂,光是弄清楚这些类的关系就够喝一壶的了。说实话,我也没有什么好的方法来一下子就能弄清这些类,但是如果你了解“装饰者模式”的话,了解了其中一类流体系的话,就能类比记忆其他体系。其中的类大致分成5类体系,其中流体系有4类:1,File类。包里面有一个单独的File类,这个类是文原创 2017-05-30 17:15:25 · 4199 阅读 · 1 评论 -
javaIO(2):InputStream和FileInputStream源码分析
前言我们说过,IO体系中的类虽然繁多,但是只要掌握了“装饰者模式”,并将IO体系按功能分为4类,那么只要掌握了其中一类,其他3类可类比学习。上一章(点击)我们已经讲解了OutputStream体系常用类的源码,以及“装饰者模式”在其中的应用,那么本文再来讲InputStream体系就轻松多了。正文一,InputStream源码package java.io;/** * 此抽象类是表示字节输入流的原创 2017-05-31 11:00:19 · 2303 阅读 · 0 评论 -
JavaIO(3):Writer,OutputStreamWriter和FileWriter源码分析
前言设计Reader和Writer继承层次结构主要是为了国际化。老的IO流继承层次结构仅支持8位的字节流,并且不能很好的处理16位的Unicode字符,所以添加Reader和Writer继承层次结构就是为了在所有的IO操作中都支持Unicode。然而在某些场合,我们不得不面临着字符编码的问题,即字符和字节之间按照什么编码方式(GBK,UTF-8,ISO-8859-1等)来编解码的问题。这时我们将用到原创 2017-05-31 20:12:46 · 2004 阅读 · 0 评论 -
javaIO(4):Reader,InputStreamReader和FileReader源码分析
前言前面把OutputStream,InputStream和Writer体系讲了,同时也讲了“装饰者模式”在IO体系中的应用。Reader体系跟前面的很相似。本文就将最后一个Reader体系给讲了。正文一,Reader源码package java.io;/** * 用于读取字符流的抽象类。 * 子类必须实现的方法只有 read(char[], int, int) 和 close()。 * 但原创 2017-06-01 10:33:47 · 1376 阅读 · 0 评论 -
java集合(7):TreeSet源码分析(jdk1.8)
前言TreeSet是基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。这句话什么意思呢?就是说,跟HashSet底层是一个HashMap来维护类似,TreeSet的底层实现就是一个TreeMap,自然也就具备了对元素排序的功能。正文源码分析1,TreeSet类名及类成员原创 2017-05-27 11:06:36 · 1712 阅读 · 0 评论 -
java集合(6):TreeMap源码分析(jdk1.8)
前言TreeMap的基本概念:TreeMap集合是基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。这句话是什么意思呢?就是说TreeMap可以对添加进来的元素进行排序,可以按照默认的排序方式,也可以自己指定排序方式。根据上一条,我们要想使用TreeMa原创 2017-05-26 20:24:14 · 6370 阅读 · 2 评论 -
java学习之代理(2):静态代理和动态代理
一,代理的概念代理是一个对象,代理对象为其他对象提供一种代理,以控制对这个对象的访问,代理对象起到中介作用,可以去掉或者增加额外的服务。如:火车票代售点就是火车站售票处的一个代理对象,可通过访问代售点进行业务处理。二,静态代理的2种实现方式:继承和聚合静态代理中的代理和被代理对象在代理之前关系是确定的。它们都实现了相同的接口或者继承相同的抽象类。下面的例子分别讲述了所有的类实现原创 2016-12-26 15:27:06 · 468 阅读 · 0 评论 -
java学习之日期类(3):Date类,DateFormat类,SimpleDateFormat类的说明与使用
前言:java开发中经常会使用到日期,jdk提供了一套完善的关于日期的处理方法。原创 2017-02-18 11:49:27 · 1205 阅读 · 0 评论 -
java字符串(1):String,StringBuffer,StringBuilder的使用与区别
前言java中最常用的类之一就是String类,java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。更多描述请查阅API文档综述。本文介绍String类的使用和一些注意事项,以及与String类相关的StringBuffer和StringBuilder类。正文一,String类字符串类的使用是大家编程中使用频率最高的。常见的使用不再赘述,这里只介绍一些注意事项。1,字符串是常量,同原创 2017-05-24 11:47:28 · 746 阅读 · 0 评论 -
java集合(1):集合框架体系之Collection接口及迭代器Iterator接口
前言集合跟数组一样,也是容器。集合与数组的区别:数组长度固定,存同一类型元素,可以存基本数据类型。集合长度可变,可存不同类型元素,存储的都是对象, 基本数据类型会自动装箱为对象类型。jdk1.0版本中提供的可用容器比较少,到了jdk1.2版本,为了满足更多的需求,出现了更多的集合来完成不同的需求。这些容器如何区分?每一种容器的数据结构不同。学习集合体系原则:看顶层,用底层。正文一,集合概述集原创 2017-05-24 17:43:57 · 1487 阅读 · 0 评论 -
java集合(2):ArrayList源码分析
前言List列表接口及其实现类是Collection体系结构中的重要一环。List是有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。接口的定义:public interface List<E>extends Collection<E>正文一,List接口概述List接口解原创 2017-05-24 19:48:08 · 492 阅读 · 0 评论 -
java集合(3):LinkedList源码分析
前言LinkedList集合类是List 接口的链接列表实现。实现所有可选的列表操作,并且允许包含所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。上面这段话什么意思呢?简单说就是LinkedList类不仅实现了List接口,具备列表原创 2017-05-25 17:22:32 · 433 阅读 · 0 评论 -
java集合(5):HashSet源码分析
前言HashSet实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。Set集合取出元素的方式只有一个,那就是迭代器。Set接口中的方法与Collection接口中的方法相同。HashSet底层依赖于HashMap,关于HashMap源码详解见:HashMap源码详解正文HashSet原创 2017-05-26 16:37:01 · 559 阅读 · 0 评论 -
java集合(4):HashMap源码分析(jdk1.8)
前言Map接口虽然也是集合体系中的重要一个分支,但是Map接口并不继承自Collection,而是自成一派。public interface Map<K,V>Map集合存储键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值。Map接口最常用的两个实现类就是HashMap和TreeMap。前者以哈希表结构存储元素,后者以二叉树结构存储元素,而且Set接口下的HashSet底原创 2017-05-26 10:01:08 · 826 阅读 · 0 评论 -
JAVA学习之反射(1):Class类和java.lang.reflect包的使用
一,能够分析类能力的程序称为“反射”,反射库(java.lang.reflect)提供了精心设计的工具集,以便编写能够动态操作Java代码的程序。二,在程序运行期间,java运行时系统始终为所有的对象维护一个类型标识。这个标识跟踪着每个对象所属的类。虚拟机利用该标识选择相应的方法执行。可以通过专门的Java类访问这些信息。保存这些信息的类被称为Class类。如同一个Person对象原创 2016-12-20 21:53:57 · 2418 阅读 · 0 评论