`
liubey
  • 浏览: 107246 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Java中未被初始化的字符串打印出“null”的问题的分析

    博客分类:
  • Java
阅读更多
今天在研究Java面试题的时候发现了这道题,觉得挺有意思,记录下来。
一个为null的字符串被println出来会是什么呢。
	public static void main(String[] args) {
		String s  = null;
		System.out.println(s+"aaaa");
	}

输出是“nullaaaa”
这是为什么呢,String未被初始化是不可能成为“null”的,因为它是null的。
翻看了一下PrintStream,发现在他打印的时候做了马脚,源码是这样子的
    public void print(String s) {
        if (s == null) {
            s = "null";
        }
        write(s);
    }


还有一个附加的问题是如果打印s+s会发生什么情况,两个null变量相加被打印,首先执行的是相加,查看反编译的Java代码知道是执行了StringBuilder的append方法,我们查看源码
    public AbstractStringBuilder append(String str) {
        if (str == null) str = "null";
        int len = str.length();
        ensureCapacityInternal(count + len);
        str.getChars(0, len, value, count);
        count += len;
        return this;
    }

发现一样对null的字符串进行了特殊的处理。

PS:新浪SAE怎么这么不给力啊,我的网站上不去。http://www.liubey.org
分享到:
评论

相关推荐

    Java 推荐系统 字符串 余弦相似度 算法

    根据给定的文件信息,本文将详细介绍如何使用Java实现基于字符串的余弦相似度算法,并应用于推荐系统中。 ### 一、引言 在推荐系统领域,为了衡量两个字符串之间的相似性,通常会采用多种算法,其中余弦相似度算法...

    work2_分割字符串_字符串处理_

    在处理字符串时,还需要注意内存管理和边界条件,防止缓冲区溢出和未初始化的指针等问题。例如,当你使用 `strcat()` 连接字符串时,确保目标字符串有足够的空间容纳新的字符。 字符串处理不仅是C语言的基本操作,...

    Java基础之字符串及String

    在Java中,字符串被视为对象,主要通过`String`类进行操作。`String`类的实例是不可变的,意味着一旦创建,就不能更改其内容。这种特性确保了字符串对象的线程安全性,但同时也意味着每次修改都会创建一个新的`...

    java字符串-用户名和密码-加密解密

    本示例通过Java实现了字符串的加密与解密功能,采用DES加密算法,提供了基本的加密解密功能及字符串与十六进制之间的转换。这种实现方式适用于简单的加密需求,但对于更复杂的安全场景,建议考虑使用更先进的加密...

    ibatis拼接字符串

    在本篇文章中,我们将深入探讨如何使用 Java 编程语言结合 iBatis 框架进行 SQL 字符串的动态拼接。通过分析提供的代码片段,我们可以了解到在实际开发过程中,这种动态 SQL 的构建方式非常常见,尤其是在处理复杂的...

    java分析文本中字符出现的概率

    在Java编程环境中,分析文本中字符出现的概率是一项常见的任务,特别是在自然语言处理、文本挖掘或数据分析等领域。这个任务可以通过读取文本文件,统计每个字符的出现次数,然后除以总字符数来实现。以下是实现这一...

    两个字符串中最大相同的子串。 "qwerabcdtyuiop" "xcabcdvbn"

    ### 两个字符串中最大相同的子串 #### 问题描述 本题目主要关注的是在两个给定的字符串中找到最长的相同子串。给定的两个字符串分别为 `"qwerabcdtyuiop"` 和 `"xcabcdvbn"`。目标是找出这两个字符串中的最长相同...

    String字符串注入类静态字段

    在Java编程中,"String字符串注入类的静态字段"是一个常见的需求,特别是在初始化配置或设置全局常量时。本文将详细讲解如何实现这一功能,并探讨相关的编程知识点。 首先,我们来看`StringInjector.java`,这个类...

    JAVA字符串及习题[归类].pdf

    Java字符串在编程中扮演着重要角色,它们是不可变的对象,这意味着一旦创建,就不能更改其内容。本资料主要涵盖了字符串的比较、转化以及操作运算符的相关知识点。 1. 字符串的比较: Java中提供了两种主要的字符...

    Java实训教程 Java软件开发实战 Java类库 第2章 字符串处理 共49页.pptx

    在Java编程语言中,字符串处理是非常重要的一个环节,尤其是在实际的应用开发中。本篇将基于提供的文件信息进行深入解析,重点介绍字符串处理的相关知识点。 #### 一、Java字符串处理概述 Java中的字符串处理主要...

    java-leetcode题解之第443题压缩字符串.zip

    在本压缩包“java-leetcode题解之第443题压缩字符串.zip”中,包含的是针对LeetCode平台上的第443题“压缩字符串”的Java解决方案。LeetCode是一个在线编程挑战平台,它提供了各种算法题目,帮助程序员提升技能并...

    Java语言程序设计:ch04 数组、字符串、向量与哈希表.ppt

    Java语言程序设计:数组、字符串、向量与哈希表 Java语言程序设计的第四章中,讨论了数组、字符串、向量与哈希表等数据结构。下面是本章的知识点总结: 一、数组 * 数组是一种静态的数据结构,元素类型相同,占用...

    java 取出汉语字符串各汉字拼音首字母并大写

    在Java中实现提取汉语字符串各汉字拼音首字母并将其转换为大写是一项常见的需求,尤其是在处理中文文本数据时。本篇文章将详细介绍如何通过Java代码来实现这一功能,并对相关的知识点进行深入探讨。 #### 一、需求...

    字符串最长回文实现

    在编程领域,字符串处理是常见的任务之一,而寻找字符串中的最长回文子串是一个经典问题。回文是指正读反读都一样的字符串,比如“上海自来水来自海上”。本篇文章将探讨如何实现寻找一个字符串中最长回文子串的算法...

    Java语言程序设计课件第四章 数组、字符串、向量和哈希表

    本章节将涵盖数组、字符串、向量和哈希表的定义、特点、创建、初始化、操作及注意事项,帮助读者全面掌握这些集合数据结构在Java中的应用。正确地使用这些结构对于编写高效、可维护的Java程序至关重要。在实际开发中...

    ajax json java 用法 json 将List、Object转换为Json格式字符串

    ### AJAX JSON Java 用法:将 List 和 Object 转换为 Json 格式字符串 在现代 Web 开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于创建交互式的 Web 应用程序。其中,JSON(JavaScript Object ...

    JAVA 对word 内容的提取返回String

    在本文中,我们将详细介绍如何使用 Java 语言来提取 Word 文档的内容,并将其返回为字符串。我们将通过两种方式来实现这个目标,分别是使用 Java 流读取 Word 内容和使用 Jacob 读取 Word 内容。 使用 Java 流读取 ...

    Java数组与字符串PPT教案学习.pptx

    在Java编程中,数组和字符串是经常使用的工具,理解它们的声明、实例化、初始化以及操作方法对于编写高效、可靠的程序至关重要。学习这些基本概念是成为熟练Java程序员的第一步。在实际编程中,还需要掌握如何处理...

    Java获取字符串的拼音码

    // 初始化映射表,这里只列出两个例子 PINYIN_MAP.put('你', "ni"); PINYIN_MAP.put('好', "hao"); } public static String getPinYin(char c) { return PINYIN_MAP.getOrDefault(c, ""); } public static...

Global site tag (gtag.js) - Google Analytics