今天在写代码的时候用到了java.lang.String.isEmpty()的这个方法,之前也用过,今天突发奇想,就看了看源码,了解了解它的实现方法,总结出来,大家可以交流交流。

通常情况下,我们使用这个方法的时候是这样的:

"hello wudb".isEmpty();

上面的代码返回的是false,然后我们打开源码分析,isEmpty()这个方法在很多类里面都有,我们今天分析的是String里面的,所以找到java.lang.String这个类,然后去找idEmpty()这个方法

/*** Returns {@codetrue} if, and only if, {@link#length()} is {@code0}.

*

*@return{@codetrue} if {@link#length()} is {@code0}, otherwise

* {@codefalse}

*

*@since1.6*/

public booleanisEmpty() {return value.length == 0;

}

源码里面已经所得很清楚了,当且仅当字符串的长度为0的时候返回的是true,否则返回的是false这两个布尔类型的值,方法中出现的value是什么呢,继续找

/**The value is used for character storage.*/

private final char value[];

在String这个类的上方定义了一个char类型的一维数组,由此可以看到String的实现是基于char类型实现的(实际上是Unicode字符序列)。这一点在Stirng的另一个方法length()上面也有体现:

/*** Returns the length of this string.

* The length is equal to the number of Unicode

* code units in the string.

*

*@returnthe length of the sequence of characters represented by this

* object.*/

public intlength() {returnvalue.length;

}

这里的字符串长度也是使用的char数组的长度属性。

所以当字符串为""的时候"".isEmpty返回的是true,当字符串为null时null.isEmpty是会报错的。所以在使用isEmpty这个方法的时候,要先确保字符串时不能为null的。

工作之余看一看源码还是很有帮助的,我看网上就有讨论null、""和isEmpty之间的区别,其实像这样的问题,我们完全可以通过阅读源码来解决。

java string is empty_从源码分析java.lang.String.isEmpty()相关推荐

  1. 深入源码分析Java线程池的实现原理

    转载自   深入源码分析Java线程池的实现原理 程序的运行,其本质上,是对系统资源(CPU.内存.磁盘.网络等等)的使用.如何高效的使用这些资源是我们编程优化演进的一个方向.今天说的线程池就是一种对 ...

  2. Android研发中对String的思考(源码分析)

    1.常用创建方式思考: String text = "this is a test text "; 上面这一句话实际上是执行了三件事  1.声明变量 String text; 2. ...

  3. 【转】源码分析C++的string实现

    转自:源码分析C++的string实现 - 知乎 我们平时使用C++开发过程中或多或少都会使用std::string,但您了解string具体是如何实现的吗,这里程序喵给大家从源码角度分析一下. 读完 ...

  4. 视频教程-Spring底层源码分析-Java

    Spring底层源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大促活动技术保 ...

  5. 视频教程-RPC服务框架(Dubbo)源码分析-Java

    RPC服务框架(Dubbo)源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大 ...

  6. 视频教程-手把手实现Java图书管理系统(附源码)-Java

    手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...

  7. JAVA多小区物业管理系统源码,Java物业系统源码

    JAVA多小区物业管理系统源码,Java物业系统源码 查看更多数据 源码功能介绍 1. 统计分析 以小区为单位,统计如下数据: 小区总栋数 小区总户数 小区总人数 小区租户数量 小区每月收费金额统计 ...

  8. 死磕java并发cas_死磕 java并发包之AtomicInteger源码分析

    问题 (1)什么是原子操作? (2)原子操作和数据库的ACID有啥关系? (3)AtomicInteger是怎么实现原子操作的? (4)AtomicInteger是有什么缺点? 简介 AtomicIn ...

  9. Java集合篇:LinkedList源码分析

    (注:本文内容基于JDK1.6) 一.概述: LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口 ...

最新文章

  1. 【怎样写代码】小技巧 -- 关于引用类型的两种转换方式
  2. 2021院士候选人,近150人获提名!看看有没有自己的母校~
  3. 电力竞价(广东规则)详解与代码
  4. 整合公司3个网站后台管理子系统的经验总结 - 实现多系统的单点登录(ASP.NET + ASP)...
  5. 截断 四舍五入 进位php,PHP取整,四舍五入取整、向上取整、向下取整、小数截取 四舍五入是什么意思 四舍五入就是一个亿 excel数值四舍五...
  6. springboot使用logback日志,部署到tomcat不生效问题解决
  7. [缓存]迅雷(XUNLEI)的工作原理揭密
  8. SQL SERVER 2008如何卸载干净
  9. 重拾阅读--朝花夕拾啊
  10. Ubuntu 16.04出现chmod: 无效模式:a的问题解决
  11. 社交网络图形可视化工具Gephi使用教程
  12. 打造全功能的NERO
  13. 图像边缘检测新方向--量子算法
  14. 《概率论》大学课堂笔记——高分笔记,考试复习专用
  15. Java代码如何运行的?
  16. 华为鸿蒙型号,华为鸿蒙2.0正式版系统来了!可升级名单公布!你的机型在么?...
  17. [数据分析方法论]互联网人必须要懂的“幸存者偏差”
  18. 线性表之线性表与数组的区别
  19. intel realsense 深度相机深度图像处理API总结
  20. H5+ 调用Barcode 实现二维码扫一扫

热门文章

  1. 透过现象看本质:Java类动态加载和热替换
  2. 十八般武艺玩转GaussDB(DWS)性能调优(二):坏味道SQL识别
  3. 基于Docker快速搭建ELK
  4. Memcached与Redis有什么区别
  5. 大前端的自动化工厂(1)——Yeoman
  6. c语言中因式分解的题目,因式分解相关练习题
  7. 红橙Darren视频笔记 网络请求优化方案 OOP面向对象 6大基本原则
  8. Java 复习笔记 异常Exception
  9. filedialog 函数用法
  10. 使用Python为《围城》做一个图云