`
grossofans
  • 浏览: 2806 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

关于null、“”、“null”的一个问题

阅读更多
这个问题在论坛发过一次,这里记录一下吧。
就是一个a=null那打印a会是什么呢?
结果是"null"字符串。
有人说原因是
对String的+操作实际上是通过StringBuilder实现的,也就是append方法
该方法会将将null转换为“null”字符串,所以得到的结果是c="null"
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class testNull {
	/**
	 * @param grossofans
	 */
	public static void main(String[] args) {
		String a = null;
		String b = "";
		String c = b + a;
		// null+""=null ""+null=null
		if (c == null) {
			System.out.println("null 空");
		}
		if ("null".equalsIgnoreCase(c)) {
			System.out.println("null 字符串");
		}
		if ("".equalsIgnoreCase(c)) {
			System.out.println("空字符串");
		}
		System.out.println(c == null);
		System.out.println(a == null);
		String bb = "|";
		String aa = null;
		Integer i = null;
		Object o = null;
		boolean s1 = true;
		boolean s2 = false;
		String cc = aa + bb + i + bb + o + bb + null + bb + s1 + bb + s2;
		System.out.println(cc);

	}
}

分享到:
评论
3 楼 JeffLan 2011-10-13  
grossofans 写道
JeffLan 写道
引用
对String的+操作实际上是通过StringBuffer实现的,也就是append方法

在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。

<去这看一下,你应该有收获,我也是当时问了一下才大概明白的,你说那个情况应该也没什么问题,原来我也是这样理解的>http://www.iteye.com/problems/65463


String的“+”操作是通过StringBuffer将两字符串拼接在一起,然后再调用toString方法构造一个新的String对象
2 楼 grossofans 2011-10-13  
JeffLan 写道
引用
对String的+操作实际上是通过StringBuffer实现的,也就是append方法

在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。

<去这看一下,你应该有收获,我也是当时问了一下才大概明白的,你说那个情况应该也没什么问题,原来我也是这样理解的>http://www.iteye.com/problems/65463
1 楼 JeffLan 2011-10-12  
引用
对String的+操作实际上是通过StringBuffer实现的,也就是append方法

在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。

相关推荐

    NOT NULL 和NULL

    如果既不指定NULL也不指定NOT NULL,列被认为指定了NULL 在 MySQL 中, 为一个 NOT NULL 字段设置 NULL 值 , 它并不会出错, MySQL 会自动将 NULL值转化为该字段的默认值, 那怕是你在表定义时没有...

    null移动端崩溃问题

    在移动应用开发中,"null移动端崩溃问题"是一个常见的挑战,尤其当应用程序处理来自后台服务或网络请求的数据时。在很多情况下,这些数据可能包含null值,如果前端代码没有适当地处理这种情况,就可能导致程序崩溃。...

    解决了IoTDB第一值为null取最近一个有值的记录值返回的bug

    本次更新针对IoTDB的一个关键问题进行了修复,即当查询的第一个值为null时,系统无法正确返回最近一个非null的记录值。这个问题可能对数据分析和应用产生严重影响,因为无法获取到有效的历史数据。 IoTDB的核心功能...

    修复win10闪退 null.sys null.zip

    标题 "修复win10闪退 null.sys" 描述的是一个针对Windows 10系统中Git闪退问题的解决方案。在Windows 10操作系统中,有时用户可能会遇到Git客户端或者其他应用程序因null.sys驱动程序问题而异常退出的情况。这个问题...

    关于sql中求平均值出现null值的解决方案

    在SQL查询中,当我们尝试计算平均值(AVG)时,遇到null值是一个常见的问题。null值在数据库中表示未知或未定义的数据,而在数学计算中,任何数值与null相加或相乘都会得到null。因此,当你在SQL中对包含null的列...

    解决git报错问题Null系统资源文件

    在使用Git进行版本控制时,有时可能会遇到一个错误提示:“fatal: open /dev/null or dup failed: No such file or directory”。这个错误表明Git在尝试访问或操作`/dev/null`设备文件时遇到了问题。`/dev/null`在...

    C语言头文件 _NULL

    C语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _NULLC语言头文件 _...

    数据库中复杂的Null问题

    在数据库设计中,"复杂的Null问题"是一个常见且重要的议题,尤其对于数据库开发人员来说,理解和处理Null值是日常工作中不可或缺的一部分。Null在SQL中表示“未知”或“无值”,但它的行为并不像常规的空字符串或者0...

    mysql中null(IFNULL,COALESCE和NULLIF)相关知识点总结

    我们如果将NULL值与另一个NULL值或任何其他值进行比较,则结果为NULL,因为一个不知道是什么的值(NULL值)与另一个不知道是什么的值(NULL值)比较,其值当然也是一个不知道是什么的值(NULL值)。 然而我们通常,使用...

    git报错需要的null.sys

    1. **文件系统问题**:`/dev/null`是一个内建的设备文件,存在于系统根目录下。如果文件系统出现问题,比如磁盘故障、权限问题或者系统未正确初始化,都可能导致无法访问这个文件。 2. **临时文件问题**:Git在某些...

    Java中String判断值为null或空及地址是否相等的问题

    `null`表示变量没有引用任何对象,而`""`则表示一个长度为零的字符串。在Java中,String对象是不可变的,这意味着一旦创建,就不能更改其值。 错误用法1:`if (name == "")`,这种情况下,即使name为空字符串,条件...

    解决服务器返回null的问题.zip

    在IT行业中,服务器返回null是一个常见的问题,尤其是在处理JSON数据或者API交互时。"解决服务器返回null的问题.zip"这个压缩包文件提供了解决这一问题的方案,特别关注于文本和富文本中的null值处理。下面将详细...

    null and not null

    null and not null

    Oracle NULL值的比较函数(是NULL=NULL为真的函数)

    你是否也为在Oracle里如何实现NULL的比较而犯愁呢?

    null.sys 修复Git异常

    在Windows操作系统中,null.sys通常是一个设备驱动程序,用于处理空设备或NULL设备。这种设备在编程中常用于丢弃输入数据或提供无源输出。在Git上下文中,null.sys异常可能源于驱动程序与Git命令的交互出现问题,...

    win10专业版 null.sys

    `/dev/null`在Linux和Unix-like系统中是一个特殊设备文件,它用于丢弃所有写入的数据,同时对读取它的操作返回空数据。然而,在Windows系统中,并没有直接对应的实体。 Git本身是为类Unix系统设计的,因此在Windows...

    深入Java关键字null

    在Java语言中,`null`是一个非常重要的关键字,用于表示一个未确定的对象引用。这意味着你可以将`null`赋给任何引用类型变量,而不能将其赋给基本类型变量。例如: - 错误示例:`int a = null;` - 正确示例:`...

    Git bash闪退 sc start null

    `null` 在这里是一个服务名,可能代表一个不存在或者损坏的服务。在命令提示符(cmd)中输入 `sc query null` 可以查询名为“null”的服务是否存在,而 `sc start null` 则尝试启动这个服务。 当Git Bash闪退时,...

    Null系统资源文件

    在使用Git进行版本控制时,有时可能会遇到一个错误提示:“Null系统资源文件 fatal: open /dev/null or dup failed: No such file or directory”。这个错误信息表明Git在尝试打开或复制/dev/null设备文件时遇到了...

    Git闪退的替换文件-null.sys文件

    null.sys是一个系统文件,它在Windows操作系统中扮演着基础驱动的角色,主要负责处理与NULL设备相关的I/O操作。NULL设备通常是一个虚拟设备,用于接收或发送零个字节的数据,主要用于测试或调试目的。在某些情况下,...

Global site tag (gtag.js) - Google Analytics