java string is empty_从源码分析java.lang.String.isEmpty()
今天在写代码的时候用到了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()相关推荐
- 深入源码分析Java线程池的实现原理
转载自 深入源码分析Java线程池的实现原理 程序的运行,其本质上,是对系统资源(CPU.内存.磁盘.网络等等)的使用.如何高效的使用这些资源是我们编程优化演进的一个方向.今天说的线程池就是一种对 ...
- Android研发中对String的思考(源码分析)
1.常用创建方式思考: String text = "this is a test text "; 上面这一句话实际上是执行了三件事 1.声明变量 String text; 2. ...
- 【转】源码分析C++的string实现
转自:源码分析C++的string实现 - 知乎 我们平时使用C++开发过程中或多或少都会使用std::string,但您了解string具体是如何实现的吗,这里程序喵给大家从源码角度分析一下. 读完 ...
- 视频教程-Spring底层源码分析-Java
Spring底层源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大促活动技术保 ...
- 视频教程-RPC服务框架(Dubbo)源码分析-Java
RPC服务框架(Dubbo)源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大 ...
- 视频教程-手把手实现Java图书管理系统(附源码)-Java
手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...
- JAVA多小区物业管理系统源码,Java物业系统源码
JAVA多小区物业管理系统源码,Java物业系统源码 查看更多数据 源码功能介绍 1. 统计分析 以小区为单位,统计如下数据: 小区总栋数 小区总户数 小区总人数 小区租户数量 小区每月收费金额统计 ...
- 死磕java并发cas_死磕 java并发包之AtomicInteger源码分析
问题 (1)什么是原子操作? (2)原子操作和数据库的ACID有啥关系? (3)AtomicInteger是怎么实现原子操作的? (4)AtomicInteger是有什么缺点? 简介 AtomicIn ...
- Java集合篇:LinkedList源码分析
(注:本文内容基于JDK1.6) 一.概述: LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口 ...
最新文章
- 【怎样写代码】小技巧 -- 关于引用类型的两种转换方式
- 2021院士候选人,近150人获提名!看看有没有自己的母校~
- 电力竞价(广东规则)详解与代码
- 整合公司3个网站后台管理子系统的经验总结 - 实现多系统的单点登录(ASP.NET + ASP)...
- 截断 四舍五入 进位php,PHP取整,四舍五入取整、向上取整、向下取整、小数截取 四舍五入是什么意思 四舍五入就是一个亿 excel数值四舍五...
- springboot使用logback日志,部署到tomcat不生效问题解决
- [缓存]迅雷(XUNLEI)的工作原理揭密
- SQL SERVER 2008如何卸载干净
- 重拾阅读--朝花夕拾啊
- Ubuntu 16.04出现chmod: 无效模式:a的问题解决
- 社交网络图形可视化工具Gephi使用教程
- 打造全功能的NERO
- 图像边缘检测新方向--量子算法
- 《概率论》大学课堂笔记——高分笔记,考试复习专用
- Java代码如何运行的?
- 华为鸿蒙型号,华为鸿蒙2.0正式版系统来了!可升级名单公布!你的机型在么?...
- [数据分析方法论]互联网人必须要懂的“幸存者偏差”
- 线性表之线性表与数组的区别
- intel realsense 深度相机深度图像处理API总结
- H5+ 调用Barcode 实现二维码扫一扫