Java基础
写好每一个BUG
这个作者很懒,什么都没留下…
展开
-
最详细的HashMap的put方法中文解释
点赞再看,养成习惯,微信公众号搜索【虚竹讲程序经】,获取更多技术干货!所有代码已经提交到GitHub上:https://github.com/xuzhuli废话不多说,直接上代码注释public V put(K key, V value) { return putVal(hash(key), key, value, false, true);} final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boole.原创 2021-05-28 20:56:43 · 365 阅读 · 0 评论 -
JDK源码添加中文注释后编译乱码
点赞再看,养成习惯,微信公众号搜索【虚竹讲程序经】,获取更多技术干货!在进行JDK源码阅读的时候,一般都会加上注释,当我们添加中文注释重新编译源码时,会出现“编码 ascii 的不可映射字符“的错误提示,解决方案如下:// 进入以下目录cd jdk/make/common//编辑文件vi SetupJavaCompilers.gmk // 找到“-encoding ascii“,并删除,然后重新编译笔者下载的是jdk13,不同JDK版本文件可能存在差异,但是基本上都在同一个目录下,.原创 2021-05-19 16:58:44 · 612 阅读 · 3 评论 -
MacOS编译OpenJDK源码
点赞再看,养成习惯,微信公众号搜索【虚竹讲程序经】,获取更多技术干货!当我们搭建完JDK源码阅读环境,如果修改了源码,执行断点的时候会发现出现“source code does not match the bytecode”,其实就是依赖的JDK环境和你修改的不匹配,所以我们需要手动编译JDK,当修改了源码之后,重新编译就不会出现上面的错误信息。基础环境准备不同的软件环境编译执行的结果和报错信息会存在差异macOS Big Sur 11.3.1Xcode 12.5(直接从AppStor.原创 2021-05-18 11:03:53 · 352 阅读 · 0 评论 -
Mac搭建JDK源码阅读环境
点赞再看,养成习惯,微信公众号搜索【虚竹讲程序经】,获取更多技术干货!想要读懂JDK源码,需要在自己电脑上搭建JDK的源码阅读环境,正所谓,工欲善其事,必先利其器。下面演示如何在Mac上结合Idea搭建JDK1.8的源码阅读环境。新建一个空的Java项目在Idea中选择File–>New–>Project–>Java,然后Next到Finish,然后项目就创建完成了。添加源码找到本机JDK安装路径,路径如下:/Library/Java/JavaVirtualMachines.原创 2021-05-12 22:07:59 · 575 阅读 · 0 评论 -
每日一点涨薪小知识-手写Autowired
上期我们聊到了Java反射的一些基础知识,相信大家对于反射的基本用法应该有一定的了解了。本期我们使用Java反射的知识,手写一个Spring中的Autowired注解。如果还有同学对Java反射不了解的,可以查看上期文章讲解。每日一点涨薪小知识-JAVA反射定义一个名为:Autowired的注解package com.xuzhu.reflect;import java.lang.annotation.ElementType;import java.lang.annotation.Reten.原创 2021-04-28 09:21:49 · 241 阅读 · 0 评论 -
每日一点涨薪小知识-JAVA反射
什么是反射反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取信息及动态调用对象方法的功能叫Java的反射机制。如何获得一个类的字节码文件使用类的全路径Class<?> clazz = Class.forName("com.xuzhu.reflect.Person");类型.classClass clazz = Person.class;对原创 2021-04-27 14:57:04 · 127 阅读 · 2 评论 -
Java泛型简介
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Generic有“类的,属性的”之意,在Java中代表泛型。泛型作为一种安全机制而产生。泛型的类或接口在取出对象时将不需要再进行向下类型转换,因为存储的时候就是该类型。泛型的使用让安全问题在编译时就报错而不是运行后抛出异常,这样便于程序员及时准确地发现问题。泛型类定义class ClassName<T> class ClassName<?>表示接收..原创 2021-02-25 20:11:07 · 83 阅读 · 0 评论 -
Java8新特性之Function
Function是一个接口,在java.util.function包中,下面看一下具体的代码package java.util.function;import java.util.Objects;@FunctionalInterfacepublic interface Function<T, R> { R apply(T t); default <V> Function<V, R> compose(Function<? s.原创 2021-02-22 16:31:04 · 415 阅读 · 0 评论 -
Java8特性之Lambda表达式
Lambda表达式简介Lambda表达式就是一种匿名函数,如果不了解什么是匿名函数,可以参考:Java匿名内部类Lambda表达式语法:(argument) -> (body),例如:(arg1, arg2) -> {body}(a1 arg1, a2 arg2) -> {body}下面来看一些例子:(int a, int b) -> {return a + b;};(a, b) -> {return a + b; };..原创 2021-02-19 20:32:04 · 91 阅读 · 0 评论 -
Java8特性之接口default和static方法
Java8之前,在编写一个接口时,接口中只定义方法,不能有方法体,方法的实现全部交由实现类去完成。例如:public interface Car { void painting();}public class AudiCar implements Car { @Override public void painting() { System.out.println("奥迪喷漆"); }}public class BMWCar impleme.原创 2021-02-18 16:43:55 · 198 阅读 · 0 评论