JAVA基础
文章平均质量分 75
帷幄庸者
这个作者很懒,什么都没留下…
展开
-
深究一个静态代码块不被执行问题
深究一个静态代码块不被执行问题问题现象:spring环境中的bean 的静态代码块会被自动执行工具类中的静态代码块不被自动执行,工具类第一次被调用时静态代码块执行通过子类调用继承的父类的方法,子类静态代码块不被执行复习ClassLoadJava类加载 会初始化的情况有且仅有以下五种:(也称为主动引用)1.遇到new(用new实例对象),getStatic(读取一个静态字段),putstatic(设置一个静态字段),invokeStatic(调用一个类的静态方法)这四条指令字节码命令时2.原创 2020-05-22 20:16:02 · 3808 阅读 · 1 评论 -
Java中的Sort
Java中的SortArrayslegacyMergeSort归并排序 // 数组排序 public static <T> void sort(T[] a, Comparator<? super T> c) { // 如果没有自定义比大小条件则直接比较 if (c == null) { sort(a...原创 2019-12-04 18:47:09 · 289 阅读 · 0 评论 -
DIY主题讨论20:哈希码的计算
DIY主题讨论20:哈希码的计算1)自主选择一个类,说明它hashCode方法的设计理念和代码核心逻辑。2) 举例说明。HashCodehashCode意义在编写类的时候,如果覆盖了Object的equals方法,那么必须要覆盖hashCode方法,并且如果两个对象用equals方法比较返回true,那么这两个对象hashCode返回的值也必须是相等的,并且对于同一个对象,equals...原创 2019-10-29 01:14:42 · 326 阅读 · 0 评论 -
DIY主题讨论12:ThreadLocal的问题根源
DIY主题讨论12:ThreadLocal的问题根源ThreadLocal理解ThreadLocal意义:实现对象在线程内的透传,可以跨类跨方法传递数据ThreadLocal变量的定义:ThreadLocal变量必须定义为static,非static的threadLocal也就失去了跨类跨方法传递数据的能力。private static final ThreadLocal<T&...原创 2019-07-13 18:44:19 · 315 阅读 · 3 评论 -
DIY主题讨论6:泛型
【DIY主题讨论6:范型】1. Java如果没有泛型会有什么灾难?泛型是参数化类型,在使用时告诉编辑器使用什么类型。程序可控性:泛型有限定类型,泛型可以使程序执行时的类型是确定的,避免了程序的不可控性。在泛型引入之前,对于不确定类型需要使用Object,然后类型强转,此处带来的问题,Object含义不清,使代码不易懂,同时类型无界限限定,很可能会想当然使用错误类型。泛型的引入,在开发是对类...原创 2019-06-01 13:43:56 · 154 阅读 · 0 评论 -
DIY主题讨论5:条件控制
二、 如何解决if-else多层嵌套的问题?使用策略模式,if-else中执行的逻辑可以理解为策略,可以将策略方法抽离成接口与实现,然后通过工厂类创建对象实现策略逻辑,这样可以是解决逻辑比较清晰,后期维护增加修改策略也吧比较方便。使用状态模式,if-else的设计思想是当什么条件下做什么事情,而状态模式则是将不同的操作与不同的状态值对应,通过设置状态值来控制逻辑的执行。此处还可以拓展使用二进...原创 2019-06-01 13:39:26 · 188 阅读 · 0 评论 -
DIY主题讨论7:Lambda表达式
【DIY主题讨论:Lambda表达式】函数式编程是什么函数式编程,是一种使用函数进行编程的方式,一个“函数”对应于一个数学函数:它接受零个或多个参数,生成一个或多个结果,并且不会有任何副作用,函数式函数无论在何处、何时、何地对于同样的输入总会返回相同的结果。一、函数式编程优劣势对比匿名类与Lambda表达式代码简洁,相较于匿名内部类,Lambda表达式大大简化了代码量,代码可读性也会...原创 2019-05-31 23:16:29 · 162 阅读 · 0 评论 -
DIY主题讨论8:锁
【第8次讨论主题:锁】1)锁有哪些,分别用来干嘛?锁来源于数据同时被多客户端修改,五花八门的锁其实就是在特定的场景下给出优化解决方案,解决问题的同时也引入了新的问题。乐观锁与悲观锁乐观锁与区别悲观锁的是加锁心态,悲观锁认为自己使用数据时总会有其他线程修改数据,因此悲观锁采取同步措施,对资源加锁,同一时间只有一个客户端(java里指线程,数据库指连接)可以操作数据,synchroniz...原创 2019-05-31 23:14:38 · 238 阅读 · 0 评论 -
DIY主题讨论9:浮点数
#【第9次讨论主题:浮点数】1)包装类Float中为什么有两个常量来表示最小值:MIN_VALUE和MIN_NORMAL?MIN_NORMAL = 2^(-126):A constant holding the smallest positive nonzero value of type最小正非零值,对应于IEEE754浮点数标准MIN_VALUE = 2^(-149):A cons...原创 2019-05-31 23:05:37 · 373 阅读 · 0 评论 -
DIY主题讨论10:集合转数组
#【DIY主题讨论:集合转数组】1)ArrayList.toArray()推荐有参数,还是无参数,为什么?Object[] toArray() :无参方法,返回一个数组,数组包含容器中的所有元素,但是返回时object,会造成类型丢失。< T > T[] toArray(T[] a) :有参方法,返回一个数组,数组包含容器中的所有元素,返回结果的运行时类型和参数数组a的类型相同,...原创 2019-05-31 23:02:48 · 153 阅读 · 0 评论 -
JVM内存分析操作
JVM内存分析操作JPS用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程,可以把jps理解为ps的一个子集。查看当前运行的java项目的jvm配置jps -v常用参数说明常用参数说明-q 忽略输出的类名、Jar名以及传递给main方法的参数...原创 2019-02-16 23:28:40 · 202 阅读 · 0 评论 -
Java 字节码分析 i=i++的结果
示例代码public static void main(String[] args) { int i =3; i=i++; System.out.println(i);}运行结果是3分析关键还是对i++即 IINC 1 1的理解。i++是直接在局部变量表上做自加操作。而i=i+1是先从局部变量表拷贝i的值到操作栈,在操作栈执行i+1操作,最后将操作栈的运算...原创 2019-02-09 15:28:08 · 293 阅读 · 0 评论 -
Iterator使用与迭代器设计模式
Iterator使用迭代器(Iterator)对应与迭代器设计模式。Iterator提供三个方法:hasNext() 判断是否还有下一个元素next() 获取下一个元素remove() 删除元素forEachRemaining() jdk1.8以后新增的方法,可以在动态迭代过程中自定义操作逻辑子接口ListIterator:提供了对list的双向遍历及add、set方法,但是不...原创 2018-12-30 13:36:30 · 244 阅读 · 0 评论 -
在Ubuntu apt自动安装Oracle Java 8
参考:https://medium.com/coderscorner/installing-oracle-java-8-in-ubuntu-16-10-845507b13343第1步:将Oracle的PPA(个人包档案)添加到您的源列表中,以便Ubuntu知道在哪里检查更新。使用add - apt - repository命令。sudo add-apt-repository ppa:webup...转载 2018-11-11 17:40:40 · 765 阅读 · 0 评论 -
Java 高级基础——反射
Java 高级基础——反射反射的意义:Java 强类型语言,但是我们在运行时有了解、修改信息的需求,包括类信息、成员信息以及数组信息。基本类型与引用类型基本类型,(固定的 8 种)整数:byte, short, int, long小数:float, double字符:char布尔值:boolean引用类型所有的引用类型都继承自 java.lang.Object类,枚举,数...原创 2018-09-28 20:25:10 · 178 阅读 · 0 评论