拼接字符串的优雅方式
一般我们拼接字符串的时候会是以下的这种方式:
String[] strs = {"a","b","c"};
StringBuilder b = new StringBuilder();
for (int i = 0; i < strs.length; i++) {b.append(strs[i]);b.append(", ");
}
b.delete(b.length()-2, b.length());// 删掉最后一个","
优雅方式:
public static String toString(Object[] a) {if (a == null)return "null";// 为什么减1呢,看后边循环(将imax看出索引)int iMax = a.length - 1;if (iMax == -1) // 空字符串的话,索引认为是-1return "";StringBuilder b = new StringBuilder();for (int i = 0; ; i++) {b.append(String.valueOf(a[i]));// 当为最大长度时,表示已经拼接完成,不再链接“,”if (i == iMax)return b.toString();b.append(", ");}
}
1)如果数组为 null,那就返回“”字符串,考虑很周全,省去了 NullPointerException
的麻烦。
2)如果数组长度为 0,那就返回“”字符串。注意,此处没有使用 a.length == 0
进行判空,而是用了 a.length - 1 == -1
,又为之后的 for 循环中的 i == iMax
埋下了伏笔,资源一点也没有浪费。
3)for 循环中字符串的拼接更是巧妙,for 循环的条件中没有判断 i < a.length
,而在循环体内使用了 i == iMax
拼接字符串的优雅方式相关推荐
- Go语言如何高效的进行字符串拼接(6种方式进行对比分析)
前言 哈喽,大家好,我是asong 日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?本 ...
- 【String拼接】Go语言字符串如何高效的进行拼接(6种方式进行对比分析)
string类型 我们首先来了解一下Go语言中string类型的结构定义,先来看一下官方定义: // string is the set of all strings of 8-bit bytes, ...
- 【Flutter】Dart 数据类型 字符串类型 ( 字符串定义 | 字符串拼接 | 字符串 API 调用 )
文章目录 I . 字符串定义 I . 字符串拼接 III . 字符串 API 调用 IV . 字符串 Demo 示例 I . 字符串定义 使用单引号 ' ' 和 双引号 " " 都 ...
- python循环拼接字符串_Python字符串拼接
问题描述 在解析文件的时候,需要将解析出来的数据字符串拼接成新的字符串.正常来说这个,过程是一个循环,不断拼接字符串.如果这个过程循环的次数不多的话,不同的方式拼接方式差别不大.如果循环次数超过100 ...
- 最优雅的Java字符串拼接是哪种方式?
title shortTitle category tag description head 最优雅的Java字符串拼接是哪种方式? Java字符串拼接 Java核心 数组&字符串 Java程 ...
- Python拼接字符串的七种方式
♚ 豌豆花下猫,某985高校毕业生, 兼具极客思维与人文情怀 .公众号Python猫, 专注python技术.数据科学和深度学习,力图创造一个有趣又有用的学习分享平台. 忘了在哪看到一位编程大牛调侃, ...
- 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
文章目录 一.逐行遍历文件文本数据 1.获取文件中的文本行 2.查询文本行数据 3.追加文件数据 4.使用占位符方式拼接字符串 二.完整代码示例 一.逐行遍历文件文本数据 1.获取文件中的文本行 调用 ...
- es6拼接字符串的方式。
文章:es6拼接字符串的方式. 转载于:https://www.cnblogs.com/Tpf386/p/9519007.html
- JavaScript中字符串连接/拼接的四种方式
JavaScript中连接字符串的方式有4种,分别是使用加号运算符连接.使用${}配合反引号连接.使用concat()函数连接.使用join()函数连接. 1. 使用加号运算符 示例代码如下: let ...
最新文章
- linux下的arm仿真,使用QEMU仿真ARM Linux系统
- maven 整合支付宝,导入alipay-sdk-java包到本地仓库,远程仓库
- 4. Median of Two Sorted Arrays
- c#以文件流的形式输出xml(可以解决内存溢出)-XmlTextWriter
- MYSQL数据库导入出错:#1046 - No database selected
- vi/vim 三种模式及命令 (简单粗暴,轻松搞懂)
- 第一次使用mysql_第一次使用mysql,求帮忙
- 2021年中国养老前景调查报告
- Team Foundation Server 2010 安装、部署与配置(四):设置 .
- MySQL Hex函数使用详解
- 问题二十四:怎么模拟ray tracing图形中介质材料的颜色(dielectric)
- GetUserName()第二个参数中指明缓冲区长度
- Docker数据持久化与容器迁移
- 使用Duilib做的程序封装成DLL的显示加载与卸载问题
- 模糊数学与matlab
- JLink驱动设备管理器中显示黄色感叹号
- CSS YUI reset
- 组策略本地计算机策略导出,关于win10系统本地组策略备份和设置的详细步骤
- 093 一个人的固执里,藏着低水平的认知
- php blowfish 解密,php blowfish加密解密算法
热门文章
- 互为质数的勾股数c语言,c语言 寻求勾股数满足x2+y2=z2的正整数x,y和z称为一组勾股数(pythagorean...
- 任务管理器显示不全 - 确定谁占用了我们的端口
- java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信
- github 修改项目为public_在GitHub上为开源项目做贡献
- html修改span中的内容,在HTML中抓取span的内容
- python工程师认证证书_python工程师-day83
- python画爱心原理_程序员式优雅表白,教你用python代码画爱心
- Win10上rabbitmq 安装
- 【eclipse】配置author和commiter,git配置user.name和user.email
- UDP客户端向服务器发送文件,基于UDP协议的客户端与服务器端的文件传送