Java使用BigDecimal进行高精度计算
首先看如下代码示例:System.out.println(0.05 + 0.01);System.out.println(0.05 - 0.03);System.out.println(1.025 * 100);System.out.println(305.1 / 1000);输出结果为:0.0600000000000000050.020000000000000004 …… 阅读全文
首先看如下代码示例:System.out.println(0.05 + 0.01);System.out.println(0.05 - 0.03);System.out.println(1.025 * 100);System.out.println(305.1 / 1000);输出结果为:0.0600000000000000050.020000000000000004 …… 阅读全文
在Java开发中,我们经常用到将对象转换成String类型这一功能,常用的有如下三种方式(String)[对象][对象].toStringString.valueOf([对象])(String)这是标准的类型转换,将对象强制转换为String类型,前提是该对象必须能保证转成String类型,否则将抛出ClassCastException异常toStringAPI源码 …… 阅读全文
代理模式:代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理的实现分为静态代理:代理类是在编译时就实现好的,也就是说Java编译完成后代理类是一个实际的class文件动态代理:代理类是在运行时生成的,也就是说Java编译完之后并没有实际的class文件,而 …… 阅读全文
类加载器基本概念顾名思义,类加载器(class loader)用来加载Java类到Java虚拟机中。一般来说,Java虚拟机使用Java类的方式如下:Java源程序(.java文件)在经过Java编译器编译之后就被转换成Java字节代码(.class文件)。类加载器负责读取Java字节代码,并转换成java.lang.Class类的一个实例。每个这样的实例用来表示一个Java类。通过此实例的n …… 阅读全文
概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使 …… 阅读全文
ThreadLocal含义ThreadLocal叫做线程本地变量,也有叫线程局部变量。ThreadLocal提供了一种访问某个变量的特殊方式:访问到的变量属于当前线程,即保证每个线程的变量不一样,而同一个线程在任何地方拿到的变量都是一致的,这就是所谓的线程隔离应用场景ThreadLocal通常用来共享数据,当需要在多个方法中使用某个变量,这个变量是当前线程的状态,其他线程不依赖这个变量 …… 阅读全文
前言在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其他更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。第二:提高响应速度。第三:提高线程的可管理性。 …… 阅读全文
在页面上使用EL表达式进行统计计算${energyBO.min + energyBO.max}, 结果显示的是科学计数法,现在要改为原始数据并保留两位小数可使用<fmt:formatNumber>标签进行格式化<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <fmt:formatNumber type="num …… 阅读全文