diff --git a/docs/java.md b/docs/java.md
index 1743aa8..cae6fa8 100644
--- a/docs/java.md
+++ b/docs/java.md
@@ -1307,6 +1307,94 @@ Method[] methods = clazz.getDeclaredMethods();
 Annotation annotation = field.getAnnotation(MyAnnotation.class);
 ```
 
+方法引用
+---
+
+### 方法引用
+<!--rehype:wrap-class=row-span-3-->
+
+Java 的 `Consumer` 接口里的 `accept` 方法接受参数但不返回值。要让它打印传入的参数,可以这样做:
+
+```java
+Consumer<String> test = new Consumer<String>() {
+    @Override
+    public void accept(String s) {
+      System.out.println(s);
+    }
+  };
+test.accept("test");
+```
+
+更简单的,我们可以直接传入Lambda表达式
+
+```java
+Consumer<String> test = System.out::println;
+```
+
+方法引用通过方法的名字指向一个方法,使语言构造更简洁,减少冗余代码。
+
+#### 使用方式
+
+- 引用方法
+- 引用构造方法
+- 引用数组
+
+### 静态方法引用
+
+```java
+Comparator<Integer> comparator = Math::max;
+
+int result = comparator.compare(1, 2); 
+// 返回 2
+```
+
+### 实例方法引用
+
+```java
+String str = "HELLO";
+
+String lowerCase = str::toLowerCase; 
+// 返回 "hello"
+```
+
+### 构造方法引用
+
+```java
+Supplier<String> supplier = String::new;
+
+String str = supplier.get(); 
+// 返回一个空字符串
+```
+
+### 数组构造方法引用
+
+```java
+Function<Integer, String[]> function = String[]::new;
+
+
+String[] array = function.apply(5); 
+// 返回 5 个空字符串的数组
+```
+<!--rehype:className=wrap-text-->
+
+### 对象中的方法引用
+
+```java
+String someStr = "HELLO";
+
+String lowerCase = someStr::toLowerCase; 
+// 返回 "hello"
+```
+
+### 对象中的静态方法引用
+
+```java
+SomeClass someObject = new SomeClass();
+
+int result = someObject::staticMethod; 
+// 调用静态方法
+```
+
 杂项 Misc
 ----
 
@@ -1470,71 +1558,6 @@ int frequency = Collections
       .frequency(list, 2); // frequency = 2
 ```
 
-### 方法引用
-<!--rehype:wrap-class=col-span-2-->
-有一种函数式接口叫做`Consumer`,里面有个抽象方法`accept`能够接受一个参数但是没有返回值,加入我想实现这个方法,让他打印我传入的参数,那么我可以这样:
-
-```java
-Consumer<String> test = new Consumer<String>() {
-    @Override
-    public void accept(String s) {
-      System.out.println(s);
-    }
-  };
-test.accept("test");
-```
-
-更简单的,我们可以直接传入Lambda表达式
-
-```java
-Consumer<String> test = System.out::println;
-```
-
-这就是方法引用,方法引用通过方法的名字来指向一个方法,让语言的构造更紧凑简洁,减少冗余代码。
-
-#### 使用方式
-
-- 引用方法
-- 引用构造方法
-- 引用数组
-
-#### 引用方式
-
-- 实例对象::实例方法名
-
-```java
-Consumer<String> myConsumer = System.out::println;
-myConsumer.accept("test");
-```
-
-- 类名::静态方法名
-
-```java
-Function<Long, Long> myFunction = Math::abs(x);
-Long result = myFunction.apply("-2L");
-```
-
-- 类名::实例方法名
-
-```java
-BiPredicate<String, String> myBiPredicate = String::equals;
-System.out.println(myBiPredicate.test("test", "test"));
-```
-
-- 引用构造器
-
-```java
-Function<Integer, String> myFunction = StringBuffer::new;
-StringBuffer sb = myFunction.apply(10);
-```
-
-- 引用数组
-
-```java
-Function<Integer, int[]> myFunction = int[]::new;
-int []arr = myFunction.apply(123);
-```
-
 另见
 ---