Java 基础考察代码

在学习Java Reference时,无意中浏览到一篇博客,看到了下面代码。

请问下面代码输出什么?为什么?

此段代码很细节,遂记录。

 1 import java.lang.ref.WeakReference;
 2 import java.util.WeakHashMap;
 3 
 4 /**
 5  * 很不错的一个示例
 6  * 考察对象的内存分配,常量池,字符串对象的创建细节
 7  * 弱引用,异常的处理逻辑
 8  */
 9 public class WeakDemo {
10     public static void main(String[] args) {
11         System.out.println(get());
12 
13     }
14 
15     public static String get(){
16         // 使用下面 两种字符串创建的方式,得出的结果相同吗
17         //String a = new String("a"); // 1
18         String a = "a"; // 2
19         WeakReference<String> b = new WeakReference<>(a);
20         WeakHashMap<String, Integer> weakHashMap = new WeakHashMap<>();
21         weakHashMap.put(b.get(), 1);
22         a = null;
23         System.gc();
24         String c = "";
25         try{
26             c = b.get().replace("a", "b");
27             return c;
28         }catch (Exception e){
29             c = "c";
30             return c;
31         }finally {
32             c += "d";
33             return c + "e";
34         }
35     }
36 }

知识点1: 字符串对象的初始化

知识点2: 异常的处理逻辑

知识点3: 弱引用

原文地址:https://www.cnblogs.com/yelao/p/12582457.html