`

空字符串与null的区别

 
阅读更多
"分配了内存 ;null没有
调用null的字符串的方法会抛空指针异常。
""是一个字符串(String).它在内存中是存在的.它可以使用Object对象中的方法(如"".toString();"".equals())
而null它是一个空对象.在内存中是不存在的.它不可以使用Object对象中的方法
""占内存.. 在内存中会分配一个空间.
null不占内存. 为空引用.
String str1 = null; str引用为空
String str2 = ""; str应用一个空串
也就是null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,而[size=medium][/size]str2已经实例化。
注意因为null不是对象,""是对象。所以比较的时候必须是 if(str1==null){....}和if(str2.equals("")){}
对象用equals比较,null用等号比较。因此,如果str1=null;下面的写法错误:
if(str1.equals("")||str1==null){//如果str1没有值,则....
//。。。。
}
正确的写法是 if(str1==null||str1.equals("")){ //先判断是不是对象,如果是,再判断是不是空字符串
//...
}

Java里面,类的对象都是用句柄来访问的,就像C里面的指针。
而在Java里面有两个比较相等的方法一个是用“==”,另一个是String 里面的equals()方法,两个的区别是,前者比较的是地址,后者比较的 是内容。

例如你写了这样的一个语句
String str1,str2;
那就是定义了两个指向不同String实例的句柄,现在他们都是指向null 的所以str1==str2==null,此时你不能用length()方法,因为,他们 都没有指向具体的对象,如果调用这个方法的话,会返回一个 NullPointerException。 之后,如果你写了这样的语句 str1=new String(); 那么str1将指向一个具体的String实例,所以str1!=str2,str1!=null, 而且更重要的是str1!="",因为""与str1所指的是两个不同的地址。 但方法str1.length()的返回值就是0了,也就是字符串为空。 同样即使你再这样写
str2=new String(); 这个时候依然是str1!=str2,因为他们指向的是两个不同的地址, 但如果你用str1.equals(str2)的话,返回值就是true,因为他们的内 容相同,都为空
分享到:
评论

相关推荐

    js判断输入字符串是否为空、空格、null的方法总结

    判断字符串是否为空 var strings = ''; if (string.length == 0) { alert('不能为空'); } 判断字符串是否为“空”字符即用户输入了空格 var strings = ' '; if (strings.replace(/(^s*)|(s*$)/g, )....

    判断字符串是否是空

    此方法比较字符串与空字符串`@""`是否相等。 ### 3. 使用`isKindOfClass:`和`NSNull` ```objc if ([string isKindOfClass:[NSNull class]]) { NSLog(@"字符串是NULL"); } else if (string == nil) { NSLog(@...

    js中null与空字符串""的区别讲解

    在JavaScript编程中,理解null和空字符串""之间的区别是非常重要的,因为这两者在很多情况下看似相似,实际上却有着根本的不同,尤其是在类型和内存分配上。首先我们来看一下null的含义。null在JavaScript中表示的是...

    精彩编程与编程技巧-将包含有Null结尾的字符串转换为VB字符串...

    如果`nullpos`等于0,表示字符串中没有NULL字符,函数则直接返回空字符串。 ### 三、总结与应用 通过上述解析,我们了解到`LPSTRToVBString`函数的核心逻辑在于定位并移除字符串中的NULL字符,确保转换后的字符串...

    js判断为空Null与字符串为空简写方法

    空值通常包括null、undefined、空字符串以及仅包含空白字符的字符串。本文将详细介绍如何使用简写方法来判断变量是否为空以及如何处理字符串为空的情况。 首先,让我们看看传统的判断方法。在早期的JavaScript编程...

    js中null与空字符串””的区别讲解

    “”表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ; 2、内存分配 String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间; String...

    Python判断字符串是否为空和null方法实例

    Python中,空字符串、`False`、`None`、零(0)和空列表等会被转换为`False`,其他任何非空值会被转换为`True`。因此,可以通过`bool()`函数来判断字符串是否为空: ```python test1 = '' if not bool(test1): ...

    C#实现实体类与字符串互相转换的方法

    本篇文章将详细介绍如何使用C#实现实体类与字符串之间的互相转换,主要涉及到了C#的反射(Reflection)技术以及对象和字符串的转换技巧。 首先,我们来看如何将实体类转换为字符串。这个过程通常涉及到遍历实体类的...

    DB2字符串处理 字符串处理 db2 函数

    DB2 字符串处理函数 DB2 中的字符串处理函数可以分为多种类型,包括字符转换函数、去空格函数、取子串函数、字符串比较函数和字符串操作函数等。 一、字符转换函数 * ASCII() 函数:返回字符表达式最左端字符的 ...

    将字符串传递到 DLL 过程

    未初始化的String变量以NULL传递,而不是空字符串,如果你想要明确地传递NULL,可以使用vbNullString常数。 对于那些专门设计为使用Automation数据类型(如BSTR)的DLL,VB可以直接以ByRef方式传递String参数,因为...

    C语言字符串比较程序

    在实际开发中,这样的修改对于处理用户输入或者从文件、网络读取的数据时非常有用,因为这些数据可能包含空字符串或者未初始化的内存区域,使用`cmpstr1()`和`cmpstr2()`可以避免因意外的NULL值而导致的运行时错误,...

    判断字符串是否为空

    如果要检查字符串是否为空字符串(即@""),可以这样做: ```objc NSString *str = @""; // 空字符串 if ([str isEqualToString:@""]) { NSLog(@"字符串为空"); } else { NSLog(@"字符串非空"); } ``` 除了`...

    字符串处理函数列表,字符串处理函数列表

    27. strncpy:拷贝字符串的前n个字符,注意它不保证在目标字符串末尾添加空字符。 28. strpbrk:查找字符串中第一个出现在一组指定字符中的字符。 29. strrchr:查找字符串中最后一个出现的指定字符。 30. strspn...

    字符串切割子字符串

    - 使用`strtok`函数切割字符串`pstr`,并指定空字符串作为分隔符,这意味着将按照默认的空白字符(包括空格、制表符等)进行切割。 - 循环读取切割结果,并将每个子字符串存入`std::string`数组`s`中。 - 输出前...

    java json不生成null或者空字符串属性(详解)

    总结来说,生成不包含null或空字符串属性的JSON字符串是一个在数据交换与存储优化方面十分重要的实践。通过合理使用Gson库的自定义序列化选项,可以有效地提升数据处理的效率和性能,确保系统的高效运作。开发者应当...

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

    总结来说,理解Java中`null`、空字符串`""`的区别,以及如何安全地进行比较,是编写健壮代码的关键。同时,了解字符串对象的内存地址和内容相等性的差异,可以帮助我们更好地理解和调试程序。在实际开发中,应始终...

    字符串、字符和正则表达式

    此外,`null`和空字符串`""`是两个不同的概念,`null`代表未初始化或无值,而空字符串是一个长度为零的字符串,包含零个字符(常见编程错误12.3)。 总结来说,理解和熟练运用字符串、字符和正则表达式对于任何C#...

    习惯了oracle10g写法的朋友们注意了,oralce11g有变化了,小谈空字符串与null的区别

    这是因为oracle中字段时空字符串等同与null,也就是nvl(字段,‘’)也是null,不会得到‘’,所以这个条件在oracle11g上永远是不成立的。 但是要特别注意的是字段时空字符串与null在where条件时不相同,不信可以测试...

Global site tag (gtag.js) - Google Analytics