Java
Gene Xu
个人博客:https://blog.xujun.pro;个人公众号:Sakura动漫ACG
展开
-
Tool -- 01 -- xml与map相互转换
由于最近开发微信模板消息,需要将多层的map转换为xml,这里主要整理了下xml与map之间的相互转换一、(单层)xml转换为map /** * XML格式字符串转换为Map * * @param xml XML字符串 * @return XML数据转换后的Map * @throws Exception */ ...转载 2018-07-06 11:20:48 · 5096 阅读 · 1 评论 -
Tool -- 02 -- byte[]与hex互相转换
import java.util.Arrays;import java.util.stream.IntStream;/** * @title: BytesHexUtils.java * @description: bytes与hex互相转换 * @author: xj * @date: 2020/9/15 */public class BytesHexUtils { /** * @method: hexToBytes * @description: 16进制字原创 2020-09-15 17:03:18 · 490 阅读 · 0 评论 -
Collection -- 02 -- BlockingQueue源码解析
BlockingQueue,即阻塞队列,其继承于 Queue,用于提供可阻塞的入队和出队操作BlockingQueue 主要用于生产者 - 消费者模式,在多线程场景时,生产者线程在队列尾部添加元素,而消费者线程则在队列头部消费元素,通过这种方式能够达到将任务的生产和消费进行隔离的目的一、队列实现ArrayBlockingQueue一个由数组结构组成的有界阻塞队列该队列容量是有有限的,在初始化时,必须指定容量大小,容量大小一旦指定,就无法改变该队列以先进先出 (FIFO) 的方法原创 2020-07-26 21:11:05 · 202 阅读 · 0 评论 -
CoreJava -- 02 -- Java静态代码块、构造代码块、普通代码块的区别以及加载顺序
一、静态代码块定义使用 static 进行修饰,定义在类中 (static {}),当类加载的时候执行,且只执行一次一个类中可以存在多个静态代码块,按照定义的先后顺序进行执行当调用类的静态变量或静态方法时,只会执行静态代码块中的代码当创建对象时,静态代码块优先于构造方法执行当创建对象时,静态代码块优先于构造代码块执行举例说明public class CodeBlockTest { static int i; static {原创 2020-06-22 21:30:38 · 202 阅读 · 0 评论 -
CoreJava -- 01 -- Java静态变量、成员变量、局部变量之间的区别
一、静态变量静态变量 (类变量) 使用 static 进行修饰,有默认值,定义在类里,方法体外,存储在方法区中方法区用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据Java 8 之前,方法区的具体实现为永久代;Java 8 开始,方法区的具体实现为元空间永久代使用的是虚拟机的内存;元空间使用的是本地内存静态变量在类加载的时候创建,直到该类被销毁前一直存在,是类级别的变量类的生命周期加载 --> 验证 --> 准备原创 2020-06-21 19:44:47 · 234 阅读 · 0 评论 -
Collection -- 01 -- Comparable和Comparator的区别
在 Java 中,我们可以使用 Comparable 或者 Comparator 来实现两个元素之间比较与排序,现在让我们一起来看看它们之间有什么区别一、ComparableComparable 是一个内部比较器,表示有能力比较的,其核心方法是 compareTo(T o)当一个类实现了 Comparable 接口时,除了要实现 compareTo(T o) 方法外,我们还要覆盖 equals(Object obj) 和 hashCode() 方法,这是遵守了 Object.hashCode原创 2020-06-21 15:55:03 · 236 阅读 · 0 评论 -
Java8 -- 07 -- IntStream类常用方法解析
在了解完流的常用方法后,我们接着来了解下数值流的常用方法在 Java8 中,引入了三个数值流 (原始类型流特化),分别是:IntStream、LongStream、DoubleStream,它们会将流中的元素分别特化为 int、long、double,从而避免了暗含的装箱成本映射到数值流mapToInt()将对象流映射为 int 数值流mapToDouble()将对象流映射为 double 数值流mapToLong()将对象流映射为 long 数值流转换原创 2020-06-21 11:28:46 · 631 阅读 · 0 评论 -
Java8 -- 06 -- Stream类常用方法解析
在了解完 Stream 的定义以及 Collectors 的常用方法之后,我们再来看看 Stream 类的常用方法Student.javapublic class Student { private String name; private int age; private double score; public Student(String name, int age, int score){ this.name = name;原创 2020-06-20 23:04:12 · 478 阅读 · 0 评论 -
Java8 -- 05 -- Collectors类常用方法解析
在使用流之前,我们先来了解下 Collectors 类,因为在使用流的过程中,会经常用到该类的相关方法Collectors 工具类提供了许多静态工具方法来创建收集器,比如将元素装进一个集合中、将元素分组、根据不同标准对元素进行汇总等,现在我们就来看看它具体使用Student.javapublic class Student { private String name; private int age; private double score; public原创 2020-06-20 17:36:22 · 1398 阅读 · 4 评论 -
Java8 -- 04 -- 引入Stream
在 Java8 中还引入了一个十分重要的成员,那就是流 (Stream),它允许我们使用声明性方式来处理数据集合,我们可以将它看作是一个遍历数据集的高级迭代器,流有以下特点:声明性:更简洁、更易读可复合:更灵活可并行:性能更好一、流的定义简短的定义就是:从支持数据处理操作的源中生成的元素序列元素序列跟集合一样,流提供了一个接口,用于访问特定元素类型的一组有序值与集合不同的是,流的目的在于表达计算,而集合的目的在于以特定的时间/空间复杂度存储和访问元素流原创 2020-06-20 13:33:23 · 281 阅读 · 0 评论 -
Java8 -- 03 -- lambda表达式
Java8 中的一个重要特性就是支持了 lambda 表达式,所谓 lambda 表达式可以简单地理解为传递匿名函数的一种方式,它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表,有以下几点特点:匿名lambda 表达式不想普通方法那样拥有一个明确的名称函数lambda 表达式不想普通方法那样属于某个特定的类,但和方法相同的是,lambda 表达式也有参数列表、函数主体、返回类型,以及可能还有一个可以抛出的异常列表传递lambda 表达式可以作为参原创 2020-06-19 22:02:28 · 358 阅读 · 0 评论 -
Java8 -- 02 -- 函数式接口
函数式接口,是指只定义了一个抽象方法的接口,它可以拥有多个非抽象方法,同时可以被隐式转换为 lambda 表达式一、函数式接口在 Java8 中,接口可以拥有默认方法 (即在类没有对方法进行实现时,其主体为方法提供默认实现的方法),哪怕有很多默认方法,只要一个接口只定义了一个抽象方法,它就仍然是一个函数式接口,此外我们将函数式接口的抽象方法的签名称为函数描述符举例说明// 下面哪些接口是函数式接口public interface Adder { int add(int a, in原创 2020-06-19 15:24:19 · 300 阅读 · 0 评论 -
Java8 -- 01 -- 行为参数化
Java8中出现了许多新特性,行为参数化就是其中之一,所谓行为参数化,就是可以帮助你处理频繁变更的需求的一种软件开发模式;简单来说,就是拿出一个代码块,把它准备好却不执行它,这个代码块以后可以被程序的其他部分调用,这就意味着我们可以推迟这个代码块的执行在软件开发中,一个众所周知的问题就是,不管你做什么,需求总是会在变。比如说,有个程序帮助农民了解自己的库存,第一天农民想知道库存中绿色的苹果有多少个,你写好了代码,但第二天,农民想知道自己的库存中有多少重量大于150克的,这次你又修改好了代码,之后农民又想知原创 2020-06-19 14:48:37 · 293 阅读 · 0 评论 -
Calculation -- 07 -- Java生成前N个斐波那契数列
常规方法private static int[] getFibonacci1(int n) { int[] fibonacci = new int[n]; if (n < 1) { return null; } if (n == 1) { fibonacci[0] = 1; return fibonacci; } if (n == 2) { fibonacci[0] = fibonac..原创 2020-06-19 13:46:05 · 290 阅读 · 0 评论 -
Calculation -- 06 -- Java遍历打印文件内容
常规方法private static String printFileContent1(String path) { InputStream is = null; StringBuilder builder = new StringBuilder(); try { is = new FileInputStream(path); int length; byte[] data = new byte[1<<10]; ..原创 2020-06-19 11:14:47 · 197 阅读 · 0 评论 -
Calculation -- 05 -- Java给定两个数字列表,返回所有的数对
常规方法private static List<int[]> getNumberPairs1(List<Integer> list1, List<Integer> list2) { List<int[]> list = new ArrayList<>(); for (Integer i : list1) { for (Integer j : list2) { list.add(new i..原创 2020-06-18 23:28:53 · 258 阅读 · 0 评论 -
Calculation -- 04 -- Java获取1到N之间的勾股数
常规方法private static List<double[]> getPythagoras1(int n) { List<double[]> list = new ArrayList<>(); for (int i = 1; i <= n; i++) { for (int j = i; j <= n; j++) { double sqrt = Math.sqrt(i * i + j * j);..原创 2020-06-18 11:09:09 · 369 阅读 · 0 评论 -
Calculation -- 03 -- Java分解质因数
分解质因数:把一个合数用质因数相乘的形式表示出来,分解质因数只针对合数 (如 30=2×3×5)每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数private static List<Integer> list = new ArrayList<>();private static boolean isPrime(int number) { if (number < 2) { return false; } fo原创 2020-06-17 22:50:38 · 187 阅读 · 0 评论 -
Calculation -- 01 -- Java判断一个数是否为质数
质数 (素数):在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数合数:在大于 1 的自然数中,除了能被 1 和它本身整除外,还能被其他数 (0 除外) 整除的数public static boolean isPrime(int number) { if (number < 2) { return false; } for (int i = 2; i <= Math.sqrt(number); i++) { if (numbe原创 2020-06-17 20:13:29 · 177 阅读 · 0 评论 -
Java -- 01 -- Linux上源码包安装Java
最近想把到现在为止学到的知识都整理一遍,巩固巩固自己的基础,先从java的配置开始吧一、下载jdk首先上官网,下载对应版本的jdk原创 2018-06-22 13:19:19 · 860 阅读 · 0 评论 -
Exception -- 02 -- NoClassDefFoundError和ClassNotFoundException的区别
NoClassDefFoundError 和 ClassNotFoundException 这两个异常乍看之下,名字十分相似,但它们是两个完全不同的概念,NoClassDefFoundError 是一种 Error,是程序无法处理的系统错误,而 ClassNotFoundException 是一种 Exception,是程序可以处理的异常,现在我们来看看它们之间的具体区别一、NoClassDefFoundError当虚拟机在加载一个类时,如果该类在编译时是可用的,但是在运行时找不到该类的定义时,则原创 2020-05-31 15:03:52 · 147 阅读 · 0 评论 -
Exception -- 01 -- Error和Exception的区别
在日常的开发过程中,我们会碰到许多错误异常,可分为两类:一类是 Error,一类是 Exception,这里让我们来了解下它们之间的区别一、Java 异常体系二、Error 和 Exception 的区别Error是程序无法处理的系统错误,编译器不做检查Exception是程序可以处理的异常,捕获后可能恢复三、RuntimeException 和非 RuntimeException 的区别RuntimeException不可预知的,程序应当自行避免原创 2020-05-30 22:42:58 · 197 阅读 · 0 评论