Java
锋少的博客
一个茁壮成长的程序猿
展开
-
深入理解Java中的反射
目录什么是反射:反射的API:反射的应用:反射的缺点:什么是反射: 先来一个定义:对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制(注意关键词:运行状态)换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(...原创 2020-02-15 18:51:17 · 625 阅读 · 1 评论 -
Java中的内存泄漏
1.什么是内存泄漏 简单地讲,内存泄漏就是一个不在使用的对象或者变量一直占用内存,导致 GC 不能回收此对象。2.为什么会产生内存泄漏呢 java里面不是有垃圾回收机制嘛,怎么又会造成内存泄漏(GC不回收的情况呢)? 我们先来了解一下两种比较常用的对象存活判断的方法:引用计数法与可达性分析法 引用计数法:每个对象有一个引用计数属性,新增一个引用时...原创 2020-02-03 15:36:13 · 623 阅读 · 0 评论 -
最为基础的Java知识
1.接口与抽象类 资料:https://www.jianshu.com/p/7efced731cab 定义类的过程就是抽象与封装的过程。而接口与抽象类则是对实体类更高一层次的抽象,仅仅是定义公共行为和特征规范。 抽象类被继承时候,体现的是 is-a的关系。抽象类可以定义普通方法,继承抽象类的时候,可以共用该方法。接口是can-do关系(模板式设计)abstrac...原创 2019-11-28 20:45:43 · 139 阅读 · 0 评论 -
分析排序的Map: TreeMap 和 LinkedHashMap
TreeMap: 一种键值按照自然顺序排序的Map,底层保证有序的结构是红黑树 自然排序:基本数据类型会按照ASCII码表排序,String类会按照字典序排序。 也可以自己自定义排序,看TreeMap的构造函数 public TreeMap(Comparator<? super K> comparator) { this...原创 2019-11-17 10:53:25 · 392 阅读 · 1 评论 -
java中的stream平时最常用的几个方法
public class Demo { public static void main(String[] args) throws ClassNotFoundException { List<Goods> list = new ArrayList<>(); Goods goods = new Goods("内裤", 33); Goods goods2 =...原创 2019-11-16 19:44:22 · 727 阅读 · 0 评论 -
Java 集合中的一些问题
1.数组转集合 1.使用 Arrays.asList()public class Demo { public static void main(String[] args) { String[] array = {"he","jianfe","sa"}; List<String> list = Arrays.asList(array); list.add(...原创 2019-11-16 17:13:31 · 638 阅读 · 0 评论 -
hashCode与equals详解
我们先看一下Java之中的所有类的父类 Object 里面的hashCode与equals方法: public native int hashCode(); public boolean equals(Object obj) { return (this == obj); }我们知道 “==”这个比较方式比较的是 hashcode的值,也就是说在...原创 2019-11-13 21:25:52 · 435 阅读 · 0 评论 -
comparable与comparator
先来说说基本的认识:comparable与comparator两者都是接口,实现的方法都是对对象进行排序。 comparable 这个词是以able结尾的,说明是一种能力,一种属性,可参见Serializable,继承了该接口就可以实现序列化了。那么继承 comparable并且重写compareTo方法,就可以让该类的对象拥有与其他同类对象的比较能力。 这是该...原创 2019-11-11 18:05:32 · 237 阅读 · 0 评论 -
LinkedList 与 ArrayList 操作的效率详解
ArrayList : 动态的数组, 底层实现是基于数组,所谓的动态就是在增加元素时候判断元素个数是否要超过当前容量,依次判断是否需要扩容。扩容的机制就是:赋值一个原来数组大小的1.5倍的数组空间来存放。 相关源码分析:https://www.cnblogs.com/zhangyinhua/p/7687377.html#_label3_1_3_0 Array...原创 2019-11-09 10:29:19 · 736 阅读 · 0 评论 -
自定义注解
//定义一个工具类public class JudgeUtils { public static void checkAge(Object object) throws Exception { List<String> alarmMessageList = Annotation.judge(object); if(alarmMessageList != null...原创 2019-11-06 18:26:41 · 263 阅读 · 0 评论 -
Java实现本地缓存
对于缓存的作用不言而喻,可以提高查询效率,比去DB查询的速度要快。项目中我们经常会使用Nosql数据库,如Redis等做缓存。但是对于数据量很小的,访问非常频繁的,我们也可以存在本地缓存中。我将利用concurrentHashMap等集合容器实现一个本地缓存。1.基于concurrentHashMap的本地缓存。 本地缓存一般使用键值对方式的存储,那么在Java中肯定是选用map...原创 2019-10-05 09:56:35 · 7052 阅读 · 0 评论 -
Java8的语言特性总结
虽然现在的JDK版本已经到达了11,但是jdk1.8版本的改变依然是浓墨重彩的一笔。本篇博文为自己梳理一些1.8版本的特性。由最重要的开始关键点 1.lambda表达式 2.流以及流的实际编程使用情况3..函数式编程 4.相关的面试题目3.5 默认方法 3.6用Optional博客推荐:https://blog.csdn.net/yitian_66/article/detai...原创 2019-07-05 17:46:52 · 263 阅读 · 0 评论 -
谁是代码界3%的王者
最近《Java开发手册(华山版)》推出了,几道易错的问题也随之而来,据说全部答对的人只有2.8%,接下来分析一下这几道题目。(题目来自阿里技术)1.public class FloatPrimitiveTest { public static void main(String[] args) { float a = 1.0f - 0.9f; ...原创 2019-06-29 14:23:23 · 485 阅读 · 0 评论 -
关于hashcode与equals
关于hashcode与equals1.什么是hashcode,意义何在?object类中提供了方法 public native int hashCode();从Object角度看,JVM每new一个Object,它都会将这个Object丢到一个Hash表中去,这样的话,下次做Object的比较或者取这个对象的时候(读取过程),它会根据对象的HashCode再从Hash表中取这个对象。这...原创 2019-05-29 10:15:35 · 1488 阅读 · 0 评论