![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 70
程序员行一
自己选的路,自己走到黑!!!!!
展开
-
【经验杂谈】为什么静态方法不能调用非静态方法?
前言今天分析一下为什么静态方法不能调用非静态方法,但是反过来却可以调用。本文将从字节码的角度分析底层原因。原理分析这里先说结论:静态方法属于类,方法的参数列表没有默认隐含的this引用,这也说明了调用静态方法不需要当前对象的引用this,但是调用非静态方法需要当前对象的引用才能调用,所以这就是不能调用非静态方法的主要原因,非静态方法属于实例对象,方法的参数列表有默认隐含的this引用,同时调用静态方法不需要this,因此可以调用。示例代码package com.github.xfc.stati原创 2021-09-03 00:54:11 · 1802 阅读 · 0 评论 -
【经验杂谈】一个使用transient不慎带来的坑
前言说明:如果您对transient关键字非常了解或熟悉,请忽略,不喜勿喷。本文主要介绍本人最近在重构线上代码时,发现组内小伙伴用了transient关键字带来的一个问题,因此在这里记录一下,同时巩固一下transient关键字的作用和原理,如果您对transient关键字非常了解或熟悉,本文可以跳过不看。问题复现说明:本文的序列化主要用了fastjson作为序列化测试工具pom依赖<dependency> <groupId>org.projectlombok原创 2021-07-31 08:19:13 · 586 阅读 · 0 评论 -
【经验杂谈】JDK源码总是将实例变量赋值到本地变量再操作?
前言我们在源码中总是看到源码作者将实例变量赋值到本地变量后再操作,我们平时写业务代码会很少这么干,为什么人家这么写?有什么好处?本文深入了解一下final Object[] items = this.items;final ReentrantLock lock = this.lock;猜测 ?源码中很多的类似final Object[] items = this.items;操作,这里分析一下为什么要这么做。猜想:局部变量都是存在于栈中,但是实例引用都存在于堆中,因此猜测这个处理是为了性原创 2021-07-21 14:36:42 · 197 阅读 · 0 评论 -
HashMap使用遇到的坑
大家好,我是程序员行一本文介绍一下我在使用java.util.HashMap中遇到的一个NPE问题,实际上是因为个人对API了解不深入导致使用时出现意想不到的问题先来介绍bug现象// 这段代码编译时没有任何问题的@Testpublic void testPutIfAbsentBug() { final HashMap<String, Boolean> hashMap = new HashMap<>(2); String key = "行一"; // 这里想表达原创 2021-07-17 17:34:35 · 556 阅读 · 0 评论