JavaSE
文章平均质量分 73
Cloud_N
这个作者很懒,什么都没留下…
展开
-
String、StringBuilder和StringBuffer
StringBuffer和StringBuilder Stringbuilder是非线程安全的,是java5.0新提供的一个对StringBuffer的简单替代,StringBuffer是线程安全的,所以处理单线程的时候StringBuilder效率要高于StringBuffer。String S1 = “This isonly a” + “ simple” + “ test”;原创 2017-10-03 21:42:42 · 6881 阅读 · 0 评论 -
HashMap源码解析(初始化及put方法)
Map初始化及put过程:首先通过默认的构造方法在堆内存中开辟一块地址。并指定默认负载因子。 HashMap底层是一个数组+链表的结构。即一个线性数组结构,Map中有一个内部Entry接口,HashMap在自己的静态内部类Node中实现了它。有三个属性key/value/next。即键值和下一指向。 当调用map的put方法时,调用hashmap的getNode方法,它返回一个Node节点。pu原创 2017-12-28 15:18:27 · 1313 阅读 · 0 评论 -
ArrayList源码解析(初始化、add()、remove())
ArrayList的源码并不难,ArrayList根本就是个数组,一个Object数组。Static变量会被jdk提前初始化好,且只有一份,独一无二。与HashMap不同,Arraylist的初始化容量是10.另外之所以New两个arraylist,两者均指向在堆中的Object数组。主要为了避免反复创建无用数组,造成性能上的浪费。初始化过程:通过默认构造方法初始化一个空Object数组。执行add原创 2017-12-28 15:24:33 · 779 阅读 · 0 评论 -
apache commons工具集
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件功能介绍BeanUtils提供了对于JavaBean进行各种操作,克隆对象,属性等等.BetwixtXML与Java对象之间相互转换.Codec处理常用的编码方法的工具类包 例如DES、SHA1、MD5、Base64等.Col...转载 2018-04-16 15:29:58 · 256 阅读 · 0 评论 -
对象所占内存空间的计算
基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Java代码 Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Ja...转载 2018-05-13 20:15:20 · 897 阅读 · 0 评论 -
java spi机制(动态接口实现)
SPI 简介SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,而后,把新加的实现,描述给JDK知道就行啦(通过改一个文本文件即可) 公司内部,目前Dubbo框架就基于SPI机制提...转载 2018-06-02 20:54:23 · 2297 阅读 · 0 评论 -
匿名内部类(闭包)与lambda
以前一直以为匿名内部类传入的参数之所以是final的是由于匿名内部类新开了个线程去处理,现在一看完全不是这么回事public class test<T> { @FunctionalInterface public interface Supplier<T>{ T add(T add); } public Supplier...原创 2018-08-05 21:27:14 · 420 阅读 · 0 评论 -
重新学习javaSE——枚举
1.枚举类被编译器自动声明为final,不可被子类继承。枚举类隐式地继承java.lang.Enum,且枚举类中每一个生成的enum元素,都是枚举类中的static & final 枚举类实例,有点像内部类。如果想扩展枚举,只能通过接口实现,枚举默认实现了Comparable接口和序列化接口,可以直接重写其compareTo方法自定义比较逻辑。2.枚举的ordinal可用于表示枚举的声...原创 2019-01-01 15:14:58 · 511 阅读 · 0 评论 -
面试中常见的集合类问题
注意ConcurrentHashMap是并发包下的,其实现的也是并发包下的ConcurrentMap接口,该接口继承了Map接口。Hashmap基于链表数组(红黑树),arraylist就是数组,linkedList基于双向链表。注意set从没规范是否有顺序,只是规范了不能重复。例如LinkedHashSet即是有序的。HashMap和LinkedHashMap区别HashMap和原创 2017-10-02 14:02:27 · 1274 阅读 · 0 评论 -
Java集合类面试题
1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如转载 2017-10-03 21:35:57 · 5474 阅读 · 1 评论 -
匿名内部类是什么?为什么其访问外部变量必须是finally的?
先来看看使用匿名内部类创建线程和初始化HashMap的示例代码:使用匿名内部类创建线程:new Thread() { public void run() { System.out.println(“匿名内部类创建线程并启动”); }}.start();使用局部内部类初始化HashMap:Map map = new HashMap(){ {转载 2017-10-03 21:19:49 · 441 阅读 · 0 评论 -
Java泛型参数T详解
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定的java类型 S、U、V - 2nd、3rd、4th types泛型就是变量类型的参数化。在使用泛型前,存入集合中的元素可以是任何类型的,转载 2017-10-03 21:30:57 · 11478 阅读 · 2 评论 -
java里是先有的class还是现有的object?
Java的对象模型中:所有的类都是Class类的实例,Object是类,那么Object也是Class类的一个实例。所有的类都最终继承自Object类,Class是类,那么Class也继承自Object。 这个问题看起来就像是先有鸡还是先有蛋,但实际上1是错误的,准确来说,所有的类对象都是Class的实例。Object是一个抽象的结构,没有实例化的Object并不是原创 2017-10-02 00:55:50 · 890 阅读 · 0 评论 -
java.io.File中的绝对路径和相对路径
转载自:http://www.cnblogs.com/qiuh/archive/2013/04/07/3003711.htmlFile类是用来构造文件或文件夹的类,在其构造函数中要求传入一个String类型的参数,用于指示文件所在的路径.以前一直使用绝对路径作为参数,其实这里也可以使用相对路径.使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?按照jdk转载 2016-09-30 20:17:34 · 285 阅读 · 0 评论 -
Java中parse()和valueOf(),toString()的区别
1.parse()是SimpleDateFomat里面的方法,你说的应该是parseInt()或parsefloat()这种方法吧,顾名思义 比如说parseInt()就是把String类型转化为int类型。如 String a= '123';int b = Integer.parseInt(a);这样b就等于123了。2.ValueOf()方法比如说 Integer.valu原创 2016-09-30 18:32:10 · 411 阅读 · 0 评论 -
java poi实现excel表格导入导出
java poi工具提供了对excel表格的操作功能。 但如果想要通过一个导出模板实现导出多种excel表格,就可以通过反射获取模板excel的字段,读取ORM模型时将其属性注入到该字段中。 下面是代码实现,注释写的也比较全面。public class ExportExcelUtil<T> { private static final org.apache.commons.logging.原创 2017-10-16 16:16:08 · 576 阅读 · 0 评论 -
重新学习javaSE——类型系统
1.java识别类型信息通过两种方式:一是RTTI,所谓的运行时类型识别,另一种是反射。2.RTTI用于实现oop的多态,oop推崇面向接口编程而不是面向实现,面向接口编程可以更好地解耦代码,以达到更高的可扩展性。在多态的情况下,一个接口存在多个实现,实现类通常会向上转型为接口的类型,再通过接口暴漏的api调用实现类的具体方法,即所谓的 “泛化调用”。在语法级别上,RTTI主要应用于三种场景下...原创 2019-01-02 15:47:39 · 479 阅读 · 0 评论