为什么这种印刷方法有效?不应该失败吗?

时间:2014-10-17 02:05:21

标签: java println

我有一个返回String的函数,但首先我检查String是否为null,如果是,我返回null。

我的功能

String decode(String input);
如果输入为null,则返回null 所以,如果我decode(null()),它应该返回null,对吗? 并且println(null)不应该打印"null",对吧?

代码的链接,可以运行:http://ideone.com/bLreXJ

import java.util.*;
import java.lang.*;
import java.io.*;

class Testing
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String input = null;
        // get input in some manner

        input = "www.me%20.com";
        System.out.println(decode(input));  // returns "www.me .com"

        input = "https://www.google.com/webhp?#q=java%20hi%20there";
        System.out.println(decode(input)); // returns "https://www.google.com/webhp?#q=java hi there"

        input = " ";
        System.out.println(decode(input)); // returns ""

        input = null;
        System.out.println(decode(input)); // returns "null" , but why?

        // System.out.println(null); // this fails because println doesn't accept null
    }

    public static String decode(String input){
        if(input == null)
            return null;
        String[] strArr = input.split("%20");
        StringBuilder sb = new StringBuilder("");
        for(String a : strArr){
            sb.append(a).append(" ");
        }
        return sb.toString().trim();
    }
}

1 个答案:

答案 0 :(得分:2)

你写了

    // System.out.println(null); // this fails because println doesn't accept null
你确定这个吗?

PrintStream.println调用String.valueOf,将null转换为字符串"null"