java 中 String str = null; 和 String str = new String();

查看:250
本文介绍了java 中 String str = null; 和 String str = new String();的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

程序是获取用户输入的一个字符串,然后将其逆转输出
代码:

import java.util.Scanner;
import java.util.Stack;
public class ReverseString {
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        String string = in.next();
        System.out.println(reString.strResult(string));
    }
    
}

class reString
{
    public static String strResult(String str) {
        Stack<Character> reverseStr = new Stack<>();
        for (int i = 0; i < str.length(); i++) {
            reverseStr.push(new Character(str.charAt(i)));
        }
        String reString = new String();//
        while (!reverseStr.isEmpty()) {
            reString += reverseStr.pop();
        }
        return reString;
    }
} 

当reString = new String 程序可以正常运行,如输入uyfky输出ykfyu
可是如果reString = null 的话,输入uyfky输出就成了nullykfyu 我想知道null为什么会在输出中?

解决方案

http://blog.xiaohansong.com/2016/03/13/null-in-java-string/

编译器对字符串相加(注:也就是+)会进行优化,首先实例化一个StringBuilder,然后把相加的字符串按顺序append,最后调用toString返回一个String对象。

append函数如果判断对象为null,就会调用appendNull,填充"null"

这篇关于java 中 String str = null; 和 String str = new String();的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆