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以及""的区别 的相关文章

  • 如何通过 JOIN 组合(合并)相似的列以删除 NULL

    问题简介 我有一个名为 客户 的超类表和两个从客户继承的名为 个人 和 公司 的子表 因此 客户实体与 人 或 公司 具有一对一的关系 客户只能是 个人 或 公司 但不能同时是两者 如下所示 Customer Person Company
  • Java 中将对象与 null 进行比较

    我正在尝试验证一个对象是否是null或不 使用以下语法 void renderSearch Customer c System out println search customer rendering gt try if c equals
  • 在C语言中,NULL指针和指向0的指针有区别吗?如果是这样,那又怎样?

    在C语言中 NULL指针和指向0的指针有什么区别 ISO IEC 9899 TC2 中规定6 3 2 3 Pointers 3 值为 0 的整型常量表达式 或这样的表达式 强制转换为 void 类型 称为空指针常量 55 如果 null 指
  • 如何检查 GAS 中是否存在文件(通过 id)

    我知道有关如何检查文件是否存在的问答by name using hasnext 不过我需要检查一下按文件 ID 最好没有高级 Drive API 披露 我写了一个基于错误处理的解决方案 function ifFileExists id tr
  • Shell Linux:grep 带有 NULL 字符的精确句子

    我有一个像这样的文件 key 0value n akey 0value n key2 0value n 我必须创建一个以单词作为参数的脚本 我必须返回具有与参数完全相同的键的每一行 I tried grep aF key x0 但 grep
  • Groovy 中 Null Object 类的用途是什么?

    我已经使用 Groovy 五个小时了 刚刚发现Groovy NullObject http groovy codehaus org api index html org codehaus groovy runtime NullObject
  • 当Where子句中的术语不在数据库中时,如何从MySQL数据库返回0?

    如果 WHERE 子句中的邻域不存在 如何让 mysql 数据库返回 0 因此 在下面的示例中 旧城区不在数据库中 我希望数据库返回 0 个事件而不是空结果 SELECT incidents neighborhoods FROM myTab
  • 如何删除非空约束?

    假设创建了一个表 如下所示 create table testTable colA int not null 您将如何删除非空约束 我正在寻找类似的东西 ALTER TABLE testTable ALTER COLUMN colA DRO
  • 如果一列没有值,MySQL 返回最大值或 null

    我尝试获取 mysql select 的最大值 但如果有一行不包含时间戳 则希望将其设置为 null empty 0 表统计数据 简化 ID CLIENT ORDER DATE CANCEL DATE 1 5 1213567200 2 5
  • 无法在 JavaScript for 循环中读取 null 的属性“长度”

    我正在尝试制作一个像 Stack Overflow 那样的 Markdown 编辑器 如果我实际上没有在文本区域中键入星号和包含短语的 http 我会收到标题中列出的此错误 如果我只输入包含星号的短语 则错误指的是这一行 if linkif
  • 如何测试 UITextField 是否为零?

    我正在尝试制作我的应用程序的一部分 如果该人不更改我的 UITextField 中的空白文本 那么他 她将无法继续下一步 基本上 我想测试 UITextField 的 nil 文本 我已经使用了 if text 方法 但是如果用户单击 UI
  • C# 和 SQL Server:如果字符串值为空,如何在命令参数中插入 DBNull.Value?

    我已经搜索了几个小时 但找不到解决方案 我正在将一些字符串插入 SQL 但是有时 我用来执行此操作的方法可能包含空字符串 即 因此我想在 SQL Server 中插入一个空值 首先我测试我的方法以确保我能够插入DBNull Value通过使
  • 使用 rpy2 将 NULL 从 Python 转换为 R

    在 R 中经常NULL值用作默认值 使用 Python 和 RPy2 如何显式提供NULL争论 None不可兑换 NotImplementedError 字符串 NULL 只会被转换为字符串 并在执行过程中导致错误 采取以下示例 使用tsi
  • Python 日志记录 - 如何检查记录器是否为空

    我刚刚在我的应用程序中实现了日志记录 我想知道是否有一种方法可以检查记录器是否为空 我的想法是在我的脚本中设置两个处理程序 一个用于带水平仪的控制台WARNING 一个用于带级别的文件DEBUG 在脚本的最后 我需要检查是否CONSOLE记
  • 将 Null 与 MySQL 触发器中的另一个值进行比较

    所以这是我的问题 我在更新表行时比较新值和旧值 但新值或旧值有时会为空 所以下面的代码不起作用 我可以解决这个问题吗 谢谢 BEFORE UPDATE ON mytable FOR EACH ROW BEGIN IF OLD assigne
  • 为什么C++中没有“NULL引用”?

    我正在阅读 C 常见问题解答 8 6 什么时候应该使用引用 什么时候应该使用指针 http www parashift com c faq lite refs vs ptrs html 特别是以下声明 可以时使用引用 必要时使用指针 上述情
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • 使用空合并运算符的独特方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道使用的标准方法空合并运算符 https en wikipedia org wiki Null coalescing operator在C
  • 无法使用 Node.JS 将 null 值发送到 MySQL 数据库

    我正在尝试发送null使用 Node JS 到我的 MySQL 数据库 con query INSERT INTO Routes routeTrigger VALUES null title test function err result
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I

随机推荐

  • 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