Java中String类的isEmpty方法、null以及""的区别

2023-11-10

一直以来对String的这三个空挺晕的,刚好同事问我,我也学习下。

从别人博客上看到的是这样的:
    isEmpty()
        分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)  
    ""
        分配了内存空间,值为空字符串,是相对的空,是一种有值(值 = 空字串)  
    null
        是未分配内存空间,无值,是一种无值(值不存在)


然而我还是挺晕忽 所以写了个demo验证下~

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String a = new String();
    String b = "";
    String c = null;
    testString(a);
    testString(b);
    testString(c);
}

private void testString(String str){
    if (str == null){
        Log.e("testNull", "null");
    }
    if (str.isEmpty()){
        Log.e("testNull", "isEmpty");
    }
    if (str.equals("")){
        Log.e("testNull", "引号");
    }
    Log.e("testNull", "----------------");
}

由于只会玩Android,就写了个Android的demo。效果一样啦~
打log结果为:
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引号
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引号
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: null

再然后str就报空指针错误了~这里可以发现好像isEmpty和""的效果是一样滴啊。
又看了下isEmpty的源码:

public boolean isEmpty() {
    return count == 0;
}
就是说只要String的文本数量为0就返回true,而""里面文本数量就是为0。

综上所述:
    null是未分配内存空间的“空”~
    isEmpty和引号这两个“空”与null相对(即它们 != null),且都是已分配内存(好像差不多一个意思)

(PS:尚不清楚isEmpty和""是否有何不同之处,有知道的小伙伴希望可以评论告知,谢谢~)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中String类的isEmpty方法、null以及""的区别 的相关文章

  • StringBuilder append() 和 null 值

    我有一个清单Strings 我想将它们与中间的空格连接起来 所以我正在使用StringBuilder 现在如果有任何一个Strings are null 它们被存储在StringBuilder字面意思是 空 下面用一个小程序来说明这个问题
  • 在 C++ 中将对象数组设置为 null

    假设我有一个 C 中 Foo 类型的对象数组 Foo array 10 在 Java 中 我可以简单地通过以下方式将此数组中的对象设置为 null array 0 null the first one 我怎样才能在 C 中做到这一点 使用指
  • JavaScript 未定义替换为 null

    在 JavaScript 中undefined可以重新分配 因此通常建议创建一个自执行函数 以确保 undefined 实际上是未定义的 作为备选null and undefined肯定是 但任何其他值都大致相当于null undefine
  • 替换 LEFT OUTER JOIN 中返回的空值

    SELECT WO BreakerRail ID indRailType RailType indRailType RailCode WO BreakerRail CreatedPieces WO BreakerRail OutsideSo
  • null 和空 ("") Java 字符串之间的区别

    有什么区别null和 空字符串 我写了一些简单的代码 String a String b null System out println a b false System out println a equals b false 两个语句都
  • WordPress 数据库 insert() 和 update() - 使用 NULL 值

    WordPress 附带wpdb处理 CRUD 操作的类 我感兴趣的这个类的两个方法是insert CRUD 中的 C 和update CRUD 中的 U 当我想将 NULL 插入 mysql 数据库列时出现问题 wpdb类将 PHP 空变
  • 如何在Rcpp代码中返回R的NULL?

    假设我有一个 C 代码要使用 Rcpp 编译 并将在 R 中调用 Rcpp export SEXP to env List x if x hasAttribute names return x else return NULL 应该做什么N
  • 为什么要检查 if (*argv == NULL)? [复制]

    这个问题在这里已经有答案了 在我目前正在学习的数据结构课程中 我们的任务是用 C 编写一个网络爬虫 为了让我们抢占先机 教授为我们提供了一个从给定 URL 获取源代码的程序 以及一个简单的 HTML 解析器来剥离标签 该程序的 main 函
  • 如果字符串中间出现空字符怎么办?

    我知道字符串的结尾由空字符表示 但我无法理解以下代码的输出 include
  • 如何检查 params[:some][:field] 是否为零?

    我尝试了代码 这让很多人受益匪浅 如何测试rails中是否存在参数 https stackoverflow com questions 5629402 how to test if parameters exist in rails 但它不
  • 如何将空日期变量传递到 SQL Server 数据库

    我正在寻找最佳实践 真正的解决方案 以发送Null当日期未知时 到 SQL Server 2008 R2 数据库表 我从表单视图中读取了一些输入 并且日期字段可能未知 数据库允许字段中存在 Null 值 但 VB 在参数化查询更新之前存储
  • Haskell 中的 undefined 和 Java 中的 null 有什么区别?

    两者的类型都是所有类型的交集 无人居住 两者都可以在代码中传递而不会失败 直到尝试评估它们为止 我能看到的唯一区别是 在 Java 中 有一个漏洞允许null仅针对一个操作进行评估 即引用相等比较 而在 Haskell 中undefined
  • 如何检查 VBA DAO 记录集中是否为空?

    我在数据库中有一个可选字段 我正在使用 DAO 记录集提取该字段 在将字段与其他字段连接之前 我需要检查该字段是否已设置 到目前为止 我已经尝试过以下代码片段Is and 这是明显错误的语法 Is 无济于事 看来如果我使用 它不会正确地与N
  • C++ 无法将指针对中的指针初始化为 NULL

    我正在使用 g 4 4 7 进行编译 目前不能再更高 并使用 std gnu 0x编译器开关 它应该允许第三行的语法 typedef std vector
  • 什么时候使用Q_NULLPTR?

    I see Q NULLPTR在 Qt 源代码和示例中被广泛使用 但我没有找到关于它到底是什么以及何时应该使用的文档 例如在这个官方示范 http doc snapshots qt io qt5 5 6 qtserialbus can ma
  • java方法中的可选参数

    我想制作一个需要 1 个必需参数和 1 个可选参数的方法 但我发现如何制作一个可选数组 方法是在参数 int b 中制作 但这是一个数组 我想制作它只是这个值是 null 或用户输入它 我可以通过创建 2 个同名的方法来实现它 但一个具有单
  • 了解 Collection.isEmpty() 和 Collection.size() == 0 之间的区别? [复制]

    这个问题在这里已经有答案了 我读过很多关于两者之间差异的文章isEmpty and size gt 0 用于检查collection是否为空并发现isEmpty 表现超过size 但我无法轻易理解为什么性能isEmpty 即使 isEmpt
  • 带汇总总计和小计

    我有一个脚本可以生成几乎已经存在的结果集 我正在尝试获取小计和总计 我在年份栏中得到了小计 在最后得到了总计 我的目标是让最终结果显示 总计 而不是小计 请注意 由于汇总函数 我的最后一行 位置 也返回为空 SELECT YEAR COUN
  • 在 C# 中追加到空字符串是如何工作的?

    我很惊讶地看到一个字符串被初始化为 null 然后在生产环境中附加一些内容的示例 只是闻起来不对劲 我确信它会抛出空对象异常 但这个大大简化的示例也有效 string sample null sample test sample equal
  • 如何在无 null 设计中实现 List、Set 和 Map?

    当您在大多数情况下可以返回 null 空对象以避免 null 时 这很好 但是像 Collection 这样的对象呢 在爪哇 Map回报null if key in get key 地图上没有找到 我能想到的最好的避免方法null在这种情况

随机推荐

  • vim终极配置:spf13-vim

    spf13 vim介绍 1 没有超户的linux操作系统如何安装vim最新版 spf13 vim常用插件介绍 1 NERDTree 2 neocomplcache 3 EasyMotion 4 ctags 5 tagbar 1 spf13
  • Python下pefile的使用

    其实在pefile主页的Wiki上已经详细介绍了 https code google com p pefile wiki UsageExamples这里给出了使用例子 同时参照着看雪http bbs pediy com showthread
  • Count Color 【POJ - 2777】【线段树】

    题目链接 这道题一开始觉得处理颜色很繁琐 但是后来发现了个东西 T lt 30 对于这个数据 似乎可以开成比特位 二进制 然后进行处理 会发现 这就是区间更新的线段树了 有几个坑 我跳进去过了 一个是初始化要为1 颜色1 其次A和B的大小是
  • 手把手教你构建一个web前端项目,全网最详细教程!

    1 选择现成的项目模板还是自己搭建项目骨架 搭建一个前端项目的方式有两种 选择现成的项目模板 自己搭建项目骨架 选择一个现成项目模板是搭建一个项目最快的方式 模板已经把基本的骨架都搭建好了 你只需要向里面填充具体的业务代码 就可以通过内置的
  • asp.net core linux生成word方案 aspose

    代码 using System using System Diagnostics using Microsoft AspNetCore Mvc using Microsoft Extensions Logging using AsposeD
  • 智能优化算法:战争策略算法-附代码

    智能优化算法 战争策略算法 摘要 WSO 是 Ayyarao 等人于 2022 年提出一种基于古代战争策略的新型元启发式优化算法 该算法灵感来自于古代战争中的攻击策略和防御策略 并通过士兵在战场上的位置更新来达到求解优化问题的目的 具有寻优
  • LittlevGL在PC端运行

    上面是我的微信和QQ群 欢迎新朋友的加入 参考官网指导 https github com littlevgl pc simulator sdl visual studio 获取到vs的工程 打开解决方案 编译运行 在源码目录下 打开main
  • 黑马程序员MySQL-视图SQL笔记

    对应课程地址 视图 准备数据 create database if not exists mydb6 view use mydb6 view create table dept deptno int primary key dname va
  • 【推荐】LiveVideoStackCon 2017 音视频技术大会

    最近收到了LiveVideoStackCon 2017召开的消息 从介绍来看 这次技术大会对音视频行业的从业者不失为一次绝佳的学习和交流机会 与其他技术会议相比 LiveVideoStackCon 2017专注于音视频 流媒体行业的研究 产
  • Win10家庭版没有本地组策略编辑器的解决办法

    本篇博客会教大家手动安装本地组策略编辑器 因为win10家庭版并不自带这个编辑器 所以需要我们自己手动安装 第一步 创建一个批处理文件 1 同时按下键盘上的WIN R键 输入notepad回车 打开记事本 2 将以下代码复制到记事本的空白文
  • 同步电机模型的SIMULINK仿真

    2 2 坐标变换 坐标变换的目的是简化原有电机模型非线性和多变量等困难 它的基本思路是在保证变换前后的磁动势等效即维持功率不变的情况下 用一组新的方程组来取代原方程组 用一套新的变量来代替原方程组里的旧变量 实现减少变量和简化模型的目的 基
  • js-时间的增减

    个人日志 文章目录 前言 一 时间的增减 二 使用 1 引入库 2 读入方法 总结 前言 小记 苟日新 日日新 又日新 提示 工作小难题和写的小方法 一 时间的增减 示例 有时候我们会根据后台处理时间的加减或者天数的增减 把它写成一个小方法
  • 基于Matlab的最低有效位(LSB)数字水印嵌入与提取

    基于Matlab的最低有效位 LSB 数字水印嵌入与提取 数字水印是一种在数字媒体中隐藏信息的技术 可用于版权保护 身份验证和数据完整性验证等领域 最低有效位 LSB 数字水印是一种简单但有效的数字水印算法 它将水印信息嵌入到图像的最低有效
  • Vue中利用计算属性computed进行模糊搜索

    data return search 模糊查询内容 tableList 从数据库获取到的列表 computed 模糊搜索 tables const search this search if search filter 方法创建一个新的数组
  • 本地缓存的几种技术及对比

    在漫长的前端开发过程中 我们常用的几种本地缓存机制 Cookie LocalStorge SessionStorge 1 Cookie的特点 1 cookie的大小受限制 cookie大小被限制在4KB 不能接受像大文件或邮件那样的大数据
  • C++笔记 16.4 模板实参推断

    primer C 笔记 模板实参推断 类型转换与模板类型参数 派生类向基类的转换不能应用于函数模板 引用形参接收数组 需要传递维度 维度也是类型的一部分 函数模板显示实参 正常类型转换应用于显示指定的实参 尾置返回类型与类型转换 进行类型转
  • 前端VUE渗透测试的一些技巧和思路

    Webpack是一个前端资源加载 打包工具 它将根据模块的依赖关系进行静态分析 然后将这些模块按照指定的规则生成对应的静态资源 但一般情况下所有打包的文件都会被加载 导致了泄露一些敏感信息 如敏感的path api接口等 案例一 未授权泄露
  • java oracle 插入_oracle 连接java 并且用java向数据库数插入数据------在dept表格中 插入 新的部门编号 部门名称 部门位置...

    package oracledemo import java sql import java util Scanner import javax sql public class moxie0926 param args public st
  • 二叉树常见的问题和解决思路

    文章目录 整体思路 一 判断是否为AVL 二 判断是否对称 三 判断是否为BST 四 各种遍历 五 将二叉树进行中心对称反转 六 求某种遍历顺序中的倒数第k个节点 七 求二叉树的节点个数 八 求二叉树的层数 九 搜索BST中指定区间的元素
  • Java中String类的isEmpty方法、null以及""的区别

    一直以来对String的这三个空挺晕的 刚好同事问我 我也学习下 从别人博客上看到的是这样的 isEmpty 分配了内存空间 值为空 是绝对的空 是一种有值 值 空 分配了内存空间 值为空字符串 是相对的空 是一种有值 值 空字串 null