java遍历字符串的方法

 

在 java中,我们需要遍历字符串,如何遍历呢?首先我们先了解一下遍历的概念: 在我们的计算机中,存储的都是二进制数据,为了方便存储和管理,我们把一段数据分成多个字符串。在 java中,遍历字符串是使用 set ()方法进行的。 set ()方法可以使用构造函数和自动构造函数进行遍历操作。另外还可以通过 findall ()方法进行遍历操作。在下面我们就来介绍一下如何通过 set ()方法进行遍历字符串:

  • 1、使用构造函数

    首先我们使用构造函数来遍历字符串: 在这里我们调用构造函数 set ()方法,调用此方法会自动创建一个空列表。然后我们把这个空列表的内容拷贝到字符串的末尾,并赋值给 str。这样就遍历完成了。set ()方法在使用的时候会进行一下检查,看是否为空,如果不是空的话,就会返回 true,否则会返回 false。 通过上面的代码我们可以看到: 第一行和第二行使用了构造函数遍历字符串,但是并没有创建空列表;第三行和第四行使用了自动构造函数遍历字符串,但是并没有创建空列表;第五行和第六行使用了构造函数和自动构造函数都创建了一个空列表,第六行使用了构造函数和自动构造函数都创建了一个空列表,第七行和第八行使用了自动构造函数创建了两个空列表。最后一列使用了自动构造函数创建了一个空数组。 这里我们可以看到:第一行和第二行使用的是自动构造函数遍历字符串;第三行和第四行使用的是构造函数遍历字符串;第七格和第八格使用的是自动构造函数遍历字符串。 那么接下来我们来了解一下为什么会出现上面的问题?原来是因为在 java中使用构造函数遍历字符串,可以一次性遍历多个字符串。而采用自动构造函数每次遍历的时候只能遍历空数组,所以就会出现上述的问题。 而自动构造函数的返回类型是 null,也就是说如果我们返回的是 null类型的值,那么这个空列表就不会被创建。上面我们已经介绍完了如何遍历字符串: 通过上面的分析我们知道,如果采用自动构造函数遍历字符串的话,每次遍历空数组都会创建一个空列表。这样在遍历完之后还需要再创建一个空列表,这样就造成了内存的浪费。所以我们想要提高遍历效率的话,尽量采用构造函数进行遍历操作。

  • 2、使用自动构造函数

    自动构造函数是一种特殊的方法,它是自动把一个对象转换成一个新的对象,当你在一个对象中声明一个自动构造函数时,自动构造函数会创建这个对象的子对象。自动构造函数使用相同的方法进行遍历操作,下面就来介绍一下如何使用自动构造函数遍历字符串: 我们来看一下下面这个示例代码: 上面这个代码实现了遍历字符串: 上面这个代码也是遍历字符串,但是它使用的是自动构造函数,它把字符串转换成了一个新的对象。注意:上面这个代码也是不可以调用 set ()方法进行遍历操作的。 下面再来看一下如何使用自动构造函数进行遍历字符串: 上面这个代码使用了自动构造函数,它创建了一个新的对象,并且对对象进行了初始化,可以使用 start ()方法来启动对象。但是由于 start ()方法是静态方法,所以在执行的时候会把程序运行到 start ()方法上,这样就会影响程序的执行速度。

  • 3、使用 findall ()方法

    findall ()方法可以用来遍历一个字符串,在遍历过程中,该方法会不断的遍历字符串的末尾。如果要在多个字符串中进行遍历,该方法会返回多个字符串。这里需要注意一下, findall ()方法不会遍历最后一个字符串,因为该方法不会遍历最后一个字符串的末尾,也不会遍历第一个字符串的末尾。 在使用 findall ()方法进行遍历时,需要注意以下两点: ①、当遍历结束后,可以对 findall ()方法返回的第一个字符串进行删除操作。但是由于 findall ()方法返回的第一个字符串不是最后一个字符串的末尾,所以如果想要删除最后一个字符串的末尾,需要重新定义一个新的 findall ()方法。 在上面我们了解了 set ()方法和 findall ()方法进行遍历操作时所使用的不同操作。在 java中还可以使用其他一些遍历的方法: *遍历链表中各个元素 上面我们已经介绍了三种遍历数据结构: set ()、 findall ()和构造函数。下面我们介绍一下自动构造函数。

  • 4、使用自动构造函数和 findall ()方法的优缺点对比

    自动构造函数:优点是,我们只需要定义一次自动构造函数,就可以创建任意多个对象。缺点是,自动构造函数的效率比较低,并且我们需要创建对象的时候,就需要调用自动构造函数,不方便。 findall ()方法:优点是,当我们给对象赋值时,默认值是一个整数。缺点是, findall ()方法的效率比较低,如果要返回的对象不为零则会导致程序崩溃。 自动构造函数和 findall ()方法各有优缺点。我们应该根据实际情况来选择使用哪种方法来进行遍历操作。 set ()方法可以遍历字符串; set ()方法需要在构造函数中定义对象才可以进行遍历操作;

  • 常用的java遍历字符串代码 :

  • 1. 使用for循环遍历字符串:
    ```
    String str = "hello world";
    for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i);
    System.out.println(c);
    }
    ```
    2. 使用增强for循环遍历字符串:
    ```
    String str = "hello world";
    for (char c : str.toCharArray()) {
    System.out.println(c);
    }
    ```
    3. 使用while循环遍历字符串:
    ```
    String str = "hello world";
    int i = 0;
    while (i < str.length()) {
    char c = str.charAt(i);
    System.out.println(c);
    i++;
    }
    ```
    4. 使用Iterator遍历字符串:
    ```
    String str = "hello world";
    Iterator<Character> iterator = str.chars().mapToObj(c -> (char) c).iterator();
    while (iterator.hasNext()) {
    char c = iterator.next();
    System.out.println(c);
    }
    ```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/12113.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络IO(non-blocking io)基础

BIO&#xff08;blocking io&#xff09; 传统的网络io模式&#xff0c;面向流&#xff0c;一个线程对接一个会话&#xff0c;因此高并发时会因线程阻塞而性能低效 Java代码&#xff1a; public class BIO implements Connector {private Integer port 8080;Overridepublic v…

SAP Business Technology Platform (BTP)的架构理解

查资料看到的&#xff0c;转一下&#xff0c;附上链接&#xff1a; SAP Business Technology Platform (BTP)的架构理解 长期以来&#xff0c;我在与客户和伙伴的沟通交流中发现大家依然对SAP业务技术平台 – SAP Business Technology Platform (以下简称BTP)纯有各种疑惑&…

Web 攻防之业务安全:密码找回流程绕过测试.(利用链接跳到后面去)

Web 攻防之业务安全&#xff1a;密码找回流程绕过测试 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台&#xff08;操作系统、数据库&#xff0c;中间件等&#xff09;、业务系统自身&#xff08;软件或设备&#xff09;、业务所…

13.vue-cli

单页面应用程序&#xff1a;所有的功能只在index.html中完成 vue-cli是vue版的webpack 目录 1 安装vue-cli 2 创建项目 3 使用预设 4 删除预设 5 开启项目 6 项目文件内容 6.1 node_moduls 中是项目依赖的库 6.2 public 6.2.1 favicon.ico 是浏览器页签内部…

Android屏幕适配dp、px两套解决办法

最新最全文章(2018-08-25)&#xff1a;Android dp方式的屏幕适配-原理(后期补充完整讲解)_手机dp输出是横屏还是竖屏_android阿杜的博客-CSDN博客 “又是屏幕适配&#xff0c;这类文章网上不是很多了吗&#xff1f;” 我也很遗憾&#xff0c;确实又是老问题。但本文重点对网上…

MYSQL学习 - DDL数据库操作

前言 从今天开始, 健哥就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 ------------------------------前戏已做完&#xff0c;精彩即开始---…

基于springboot和ajax的简单项目 06 日志界面的delete功能(根据选择的checkbox)

01.这次后台开始&#xff1b; 顺序依次是dao->xml->service->serviceimpl->controller->html 02.dao接口 public int doDeleteObjects(Param("ids") Integer... ids);03.xml文件 <update id"doDeleteObjects" >delete from sys_lo…

用友U8 cloud,信创云ERP的数智先锋

编辑&#xff1a;阿冒设计&#xff1a;沐由从来未曾有过一个春天&#xff0c;能够像当下这般被如此由衷地期待。经历了漫长的1000多个日日夜夜之后&#xff0c;我们的工作与生活终于回到正轨。自2023年以来&#xff0c;中国市场迎来“开门红”&#xff0c;消费市场加速回暖&…

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题

颜色平衡树问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序问题描述 格式输入 输入的第一行包含一个整数 n &#xff0c;表示树的结点数。 接下来 n 行&#xff0c;每行包含两个整数 Ci , Fi&#xff0c;用一个空格分隔&#xff0c;表示第 i 个结点 …

新能源汽车高压配电管理(PDU/BDU)

一、概念与组成 PDU(Power Distribution Unit)&#xff0c;即高压配电单元&#xff0c;功能是负责新能源车高压系统中的电源分配与管理&#xff0c;为整车提供充放电控制、高压部件上电控制、电路过载短路保护、高压采样、低压控制等功能&#xff0c;保护和监控高压系统的运行…

智慧井盖-物联网智能井盖系统-管网数字化监测,守护城市生命线

平升电子智慧井盖-物联网智能井盖系统-管网数字化监测,守护城市生命线实现对井下设备和井盖状态的监测及预警&#xff0c;是各类智慧管网管理系统中不可或缺的重要设备&#xff0c;解决了井下监测环境潮湿易水淹、电力供应困难、通讯不畅等难题&#xff0c; 适合安装于城市主干…

【MySQL--05】表的约束

文章目录 1.表的约束1.1空属性1.2默认值default vs null1.3列描述1.4 zerofill1.5主键primary key1.6 自增长auto_increment1.7唯一键 unique如何设计主键&#xff1f;1.8 外键 foreign key 1.表的约束 真正的约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xf…

基于springboot和ajax的简单项目 02.一直会出现的页面的上一页,下一页,分页与总页数 (下)

在各种功能中会一直出现页面分页的问题。 对此&#xff0c;可以使用pojo对象&#xff0c;来一直管理页面分页的功能。 01.创建相关的pojo对象。 由于属性是来辅助sql语句的&#xff0c;这个pojo对象。 Setter Getter ToString NoArgsConstructorpublic class PageObject<T&…

day11_面向对象

今日内容 零、 复习昨日 一、作业 二、局部变量&成员变量 三、this关键字 四、构造方法 五、重载 零、 复习昨日 晨考 public class Phone {// 成员属性/成员变量// 数据类型 变量名;double price;String brand;// 成员方法public void call(String num) {System.out.print…

流程引擎基础知识

流程引擎基础知识 流程部署流程取消部署流程发起流程取回流程作废流程委托流程流转常用流程表介绍备注 流程部署 1.后台直接导入bpmn /**流程部署源代码*/public void deploy() {ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService re…

UML与代码的对应关系

五种关系的耦合强弱比较&#xff1a;依赖<关联<聚合<组合<继承 依赖 虚线箭头 可描述为&#xff1a;Uses a 依赖是类的五种关系中耦合最小的一种关系。 因为在生成代码的时候&#xff0c;这两个关系类都不会增加属性。 注意1&#xff1a; Water类的生命期&…

1676_MIT 6.828 xv6中的CPU alarm_资料翻译整理

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 我觉得看了几个MIT的课程之后让我觉得我的大学四年有点浪费时光&#xff0c;看起来MIT的课程的确是很有饱满度。 这里&#xff0c;再整理一份课程中的作业要求。 …

JavaWeb03 Cookie和Session

一个网站怎么证明你来过&#xff1f; 1.首次访问时服务器给客户端一个cookie&#xff0c;下次客户端再次访问会自动携带cookie&#xff0c;注意cookie可以是多个 2.首次访问时服务器登记了客户端一系列信息&#xff0c;下次客户端再进行访问时服务器自动匹配此客户端是否访问…

【架构设计】如何设计一个几十万在线用户弹幕系统

文章目录 一、前言二、项目介绍客户端轮询WebSocket主动推送 三、弹幕初始架构四、弹幕架构演进五、弹幕存储六、弹幕查询七、总结 一、前言 现在无论是直播还是电视剧&#xff0c;我们都可以看到上面慢慢的弹幕&#xff0c;满足十几万用户在线的弹幕系统&#xff0c;我们该如…

vue3插槽的使用

插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的标签。 1.插槽基本使用 子组件SlotComponent.vue <template><div cla…