空字符串、NULL、空格串的区别

article/2025/10/30 23:34:23

1、表示区别

     string str1 = "";    //空字符串      str1.length() 等于 0

     string str2 = null; //NULL

     string str3 = " ";   //空格串          str2.length() 等于 1


2、内存区别

      ""    :分配了内存 ,分配了一个空间

     null  :未分配内存

      " "   :分配了内存


3、使用区别

     调用null的字符串的方法会抛出异常。

     ""是一个字符串(String).它在内存中是存在的.它可以使用Object对象中的方法(如"".toString();"".equals()) 。

     null它是一个空对象,在内存中是不存在的。它不可以使用Object对象中的方法。


备注:

      空格:本质上和abc一样,它是一个字符。它的数值(ASCII)是32

      '\0'   :代表字符串的结束,数值(ASCII)是0




在开发的过程对字符的判断是最正常的事,问题是我们可能很容易对java中的""(空串)和null造成混淆,现加以说明:

比如声明一个 String str ;
      如果说str是null,那么内存根本没创建字符串对像,并由str引用。
      如果说str是空串,那么确实存在一个由str引用的字符串对像,只不过这个字符串的值是""
     null用来表示一个引用没有实例存在,而""本身是一个实例,有自己的对象空间,和"zzyyxx"这样的String没什么区别。两个都是有值 !!!
其次需要注意:
     (1)当oracle 字段里面的值为空时,从oracle读出来的是字符串"null"(可能是程序读出来的时,将空对象转换成为了字符串“null”)。
     (2)还有URL得参数时如:oylin.jsp?id=<%=id%>,当id为空对象是,有可能也将空对象转换成为了字符串“null”,在写程序的时候要多加注意。
       另一个问题就是String的null或空值的判断处理:有以下两种方法
       f (name != null && !name.equals("")) {
         //do something
         }

        或者

       if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。
               //do something
         }





要判读String是否为空字符串,比较简单,只要判断该String的length是否为0就可以,或者直接用方法isEmpty()来判断。

    但很多时候我们也会把由一些不可见的字符组成的String也当成是空字符串(e.g, space, tab, etc),这时候就不能单用length或isEmpty()来判断了,因为technically上来说,这个String是非空的。这时候可以用String的方法trim(),去掉前导空白和后导空白,再判断是否为空。

例:

public class TestEmpty

   {
       public static void main(String[] args){
              String a = "       ";      
              // if (a.isEmpty())
             if (a.trim().isEmpty())
             {
                System.out.println("It is empty");
             }
            else 
            {
               System.out.println("It is not empty");
            }
       }
  }

结果:It is empty



声明一个String str

如果说str是null,那么内存根本没有创建字符串对象,并由str引用。

如果说str是空串,那么确定存在一个由str引用的字符串对象,只不过这个字符串的值是空

null用来表示没有实例存在,而“”本身就是一个实例,有自己的对象空间,和“123456”这样的字符串没有区别。

其次要注意:

           1)当oracle 字段里面的值为空时,从oracle读出来的是字符串"null"(可能是程序读出来的时,将空对象转换成为了字符串“null”)。

     (2)还有URL得参数时如:oylin.jsp?id=<%=id%>,当id为空对象是,有可能也将空对象转换成为了字符串“null”,在写程序的时候要多加注意。
另一个问题就是String的null或控制的判断处理:有以下两种方法
(name  != null && !name.equals("")){
    dosomething();
}
或者
if(!"".equals(name)){//将“”写在前面,不管name是否为null,都不会报错
   dosomething();
}



http://chatgpt.dhexx.cn/article/0dPM5Dap.shtml

相关文章

如何输入带空格的字符串

转载自&#xff1a;https://www.cnblogs.com/houchen/p/10356396.html 问题一&#xff1a;带空格的字符串输入(c) 对于string类 getline(cin, str) 对于字符数组 方法一&#xff1a;getline() 读入整行数据&#xff0c;使用回车键输入的换行符来确定输入结尾。 调用方法&am…

C++ 空字符

C 空字符 本来想定义一个空的字符&#xff0c;想当然的就写成了下面的样子&#xff1a; #include <iostream>using namespace std; int main() {char ch ;cout<<ch<<endl;return 0; } 运行直接报错 加上\0 就对了 &#xff0c; 哎 基础呀。。。。。 #i…

【Java】Java中空字符的写法

首先要明确空字符和空格字符的区别 空字符表示数据为空&#xff1b; 空格字符表示数据不为空&#xff0c;为一个空格字符。 Java和C中使用\0表示空字符&#xff0c;Python使用表示空字符。 public class Test {public static void main(String[] args) {char s[] new char[…

MySQL中的空值 Null 和空字符‘‘

目录 1. 空值 Null 和空字符 2. 空值 Null 和空字符 在查询方式上的对比2.1. 创建 SQL 脚本2.2. 查询 username 列为空字符串 的所有数据2.3. 查询 username 列为空值 null 的所有数据2.3.1. 错误 SQL2.3.2. 正确 SQL 2.4. 查询 username 列不为空值 null 的所有数据2.4.1. 错…

空字符'\0'与字符串

from&#xff1a; https://blog.csdn.net/bairenxinmo/article/details/17662983 空字符\0 空字符即NUL字节&#xff0c;是一个ASCII值为0的控制字符&#xff0c;在程序代码中通常以转义序列\0表示&#xff0c;在C语言中&#xff0c;空字符非常重要&#xff0c;主要体现在字符…

空字符和空格字符有什么区别?

char ch1 \0 ,ch2 ;System.out.println(""(int)ch1);System.out.println(""(int)ch2); 运行结果 由此可见&#xff0c;空字符(\0)的ascii值是0&#xff0c;实际应用上是字符串结尾自动补上的一个字符 有的时候用来判断是否到了字符串结尾 而空格字符…

认真理清 一一空字符('\0')、空指针(NULL)、\0、0

在C/C语言中我们经常看到’\0’、NULL。从概念上看两者完全不同&#xff0c;但是本质上他们都可以用数值0来表示。空指针是指针类型&#xff0c;而空字符是整形类型&#xff0c;两者有时很容易混淆。 NULL 空指针有一个值&#xff0c;该值不会与任何数据的有效值地址对应。通…

空字符 空格字符(字符) 空字符串 NULL的区别

【1】 空字符 空格字符&#xff08;字符&#xff09;【2】空字符串 【3】 NULL的区别 1.1 字符 &#xff08;1&#xff09;首先必须明确字符型&#xff08;char&#xff09;是整数类型&#xff0c;其在内存单元是以整数形式存放。 &#xff08;2&#xff09;其次&am…

CSS属性值的计算过程

属性值的计算过程 一个元素一个元素依次渲染&#xff0c;顺序按照页面文档的树形目录结构进行 渲染每个元素的前提条件&#xff1a;该元素的所有CSS属性必须有值 一个元素&#xff0c;从所有属性都没有值&#xff0c;到所有的属性都有值&#xff0c;这个计算过程&#xff0…

Java 反射设置/获取对象属性值

✨大家好&#xff0c;我是【zhuzicc】~ &#xff0c;一位主攻【Java】的 攻城狮&#xff01;✨ 欢迎对【Java】感兴趣的大佬&#xff0c;关注我 &#x1f61c; ———————————————— ❤️ ❤️ ❤️ 如果觉得本文还不错&#xff0c;点赞 评论 关注 收藏。有补充…

字段与属性

字段的使用: 1.关于字段 a.字段又称为&#xff1a;“成员变量”&#xff0c;一般在类的内部做数据交互使用。 b.字段命名规范&#xff1a;camel命名法&#xff08;Camel 命名法是指第一个单词小写&#xff0c;从第二个单词开始每个单词的首字母大写&#xff09;。 2.通俗的理解…

jQuery获取标签属性值(一)

1、box-shadow属性可以设置盒子阴影的效果其参数为&#xff1a; box-shadow: h-shadow v-shadow blur spread color inset; h-shadow必需的。水平阴影的位置。允许负值v-shadow必需的。垂直阴影的位置。允许负值blur可选。模糊距离spread可选。阴影的大小color可选。阴影的颜…

如何获取对象的属性及属性值

for(key in attr){//key:属性名//attr[key]:属性值 } 转载于:https://www.cnblogs.com/wanlibingfeng/p/10070080.html

JS中如何通过属性获取属性值

JS中如何通过属性获取属性值 const mySymbol Symbol()let obj {name:cwl,1: 1,true:bool,[mySymbol]: sym, }当属性名是字符串 一般通过 . 来访问 obj.name当属性名是数字时 obj[1] //√ obj.1 //报错当属性值是bool类型 obj[true] obj.true obj[true]当属性值为Symbol类…

获取object对象中的属性值

获取object对象中的属性值 先创建一个实体类并向上转型为Object类 假设实体类如下 public class WordDto {private String uuId;private Long id;private Long aid;private String content;}WordDto dtonew WordDto();dto.setAid(10000002L).setId(12L).setUuId("12345…

值类型属性??

再一次由于C#中值类型和引用类型的区别 犯了错误。 假设在类中包含一些值类型的成员&#xff08;比如结构&#xff0c;数组&#xff09;&#xff0c;你希望为外部程序提供访问和修改这些成员的能力&#xff0c;同时又不想直接暴露成员&#xff0c;在c#中最常见的做法就…

计算属性

1、什么是计算属性 计算属性&#xff1a;可以理解为能够在里面写一些计算逻辑的属性。 作用&#xff1a;1&#xff09;减少模板中的计算逻辑 2&#xff09;数据缓存。当我们的数据没有变化时&#xff0c;不在执行计算的过程 3&#xff09;依赖固定的数据类型&#xff08;响应式…

根据属性名获取、设置属性值

1.根据属性名获取属性值 可以通过JDK自带的反射下的getClass下的getDeclaredField并传递一个属性名字来获取该属性 属性名&#xff1a;fileName&#xff0c;对象&#xff1a;Object object&#xff1b; Field field object.getClass().getDeclaredField(fileName); 设置对象…

常用属性 属性值

文本属性&#xff08;用来修饰文本&#xff09; 1、font-size:数值单位&#xff1b; 字体大小 页面中默认字号大小为16px 2、font-family:字体名&#xff1b; 如果字体名为中文&#xff0c;引号可加可不加&#xff1b;如果字体名为一个英文单词&#xff0c;引号可不加&#…

.39属性名和属性值

一、属性名 对象的属性名可以随便起&#xff0c;但使用特殊字符时&#xff0c;需要用下面的形式 语法&#xff1a;对象[属性名]属性值 输出时也要采用该种形式 这种形式&#xff0c;更加常用&#xff0c;并且可以直接传递变量 二、属性值 属性值可以为任意的数据类型&…