早上上班看到一友的关于null的帖子,到中午才折腾明白个一二,提问的代码和结果如下:
- class Test{
- public static void main(String[] args) {
- StringBuilder sb = new StringBuilder();
-
- sb.append("abc");
- //sb=null; 题外话:但是如果将null赋值给包装类object,然后将object赋给各自的基本类型,编译器不会报,但是你将会在运行时期遇到空指针异常。
- insert(sb);
-
- System.out.println(sb);
- }
- public static void insert(StringBuilder sb) {
- sb.append("def");
- sb = null;//使用静态方法来使用一个值为null的引用类型变量。因为静态方法使用静态绑定,不会抛出空指针异常。
- //让一个非null的引用类型变量指向null,等待JVM垃圾回收机制去回收,内存中的内容任然存在。
- //在sb被回收前,sb的内容能被打印出来。
- //你可以试试其它的引用类型变量赋值后指向null;我试过数组也能打印出来。
- }
- }
复制代码
另附有我搜集到的关于null1的知识点:
黑马程序员-JAVA的null说明 |
|