字符串String

news2024/11/23 12:31:43

目录

String

字符串比较

charAt  取数组中的值

案例

substring

案例:手机号加密​

StringBuilder

StringBuilder提高效率原理图

 StringJoiner

字符串拼接底层方法


  • String

    • 创造方法
      • 直接赋值
      • 通过new关键字 / 构造方法
    • 字符串比较

      • ==
      • equals :要求比较的字符串完全一样
      • equalslgnoreCase :忽略大小写的比较
    • charAt  取数组中的值

    • 案例

    • 输入金额:15684 => 零佰零拾壹万伍仟陆佰捌拾肆元

      package com.day1;
      import java.util.Scanner;
      
      public class Money {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              int mo;
              String money = "";
      
              //输入数字
              while (true){
                  System.out.print("输入金额:");
                  mo = sc.nextInt();
                  if (mo >= 0 && mo <=9999999){
                      break;
                  }
                  else {
                      System.out.println("金额无效");
                  }
              }
      
              //转换成大写
              while (true){
                  int ge = mo % 10;   //个位
                  String CapitalNumber = getCapitalNumber(ge);
                  money = CapitalNumber + money;
                  mo = (mo - ge)/10;
                  if (mo==0){
                      break;
                  }
              }
      
              //前面补零
              int count = 7 - money.length();
              for (int i = 0; i < count; i++){
                  money = getCapitalNumber(0) + money;
              }
      
              //补齐单位
              String[] arr = {"佰","拾","万","仟","佰","拾","元"};
              for(int i=0; i<money.length();i++){
                  char c = money.charAt(i);
                  System.out.print(c);
                  System.out.print(arr[i]);
              }
          }
      
          public static String getCapitalNumber(int number){
              String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
              return arr[number];
          }
      }
      

  • substring

    • String substring(int begin,int end)
      • 包左不包右
    • String substring(int end)
      • 截取到末尾
    • 案例:手机号加密

      package com.day1;
      import java.util.Scanner;
      public class phone {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              System.out.print("请输入手机号:");
              String number = sc.next();
              String numberleft = number.substring(0,4);
              String numberright = number.substring(7);
              number = numberleft + "****" + numberright;
              System.out.println(number);
          }
      }

  • replace 
    • 案例:敏感词屏蔽
      package com.day1;
      import java.util.Scanner;
      public class Noword {
      
          public static void main(String[] args) {
              //敏感词库
              String[] arr = {"垃圾","TMD","sb"};
              Scanner sc = new Scanner(System.in);
              String talk = sc.next();
      
              for (int i = 0; i < arr.length; i++){
                  talk = talk.replace(arr[i],"***");
              }
              System.out.println(talk);
          }
      }
      

       

       

  • StringBuilder

    • StringBuider可以看成是一个容器,创建只够里面的内容是可变的
    • 抬高字符串的操作效率
    • 构造方法
      • 无参构造
      • 有参构造
    • 常用方法
      • 添加元素
        • sb.append(添加内容);
        • 添加任意类型内容
      • 反转容器的内容
        • sb.reverse();
      • 返回长度(字符出现个数)
        • sb.length()
      • 转String类型
        • sb.toString();
          package com.day1.day2;
          
          public class SB {
              public static void main(String[] args) {
                  StringBuilder sb = new StringBuilder();
          
                  //添加元素
                  sb.append(2.3).append(5).append("你好呀");
                  System.out.println(sb);
                  //反转元素
                  sb.reverse();
                  System.out.println(sb);
                  //获取长度
                  System.out.println(sb.length());
                  //转换String
                  String s = sb.toString();
                  System.out.println(s);
              }
          }
          

    • 打印StringBuilder 打印的是属性值 不是地址值
    • 案例:回文数(更加简单)
      package com.day1.day2;
      
      import java.util.Scanner;
      
      public class duichen {
          public static void main(String[] args) {
      
              Scanner sc = new Scanner(System.in);
              System.out.print("输入数字:");
              String s = sc.next();
              String ss = new StringBuilder().append(s).reverse().toString();
              if(s.equals(ss)){
                  System.out.println("yes");
              }else{
                  System.out.println("no");
              }
          }
      }
      

       

  • StringBuilder提高效率原理图

    • 原理图
  • StringBuilder源码分析

     默认长度为16(容量16)    长度3
    • 长度超过16 会扩容 (原来的容量*2 + 2 )
    • 长度超过32 以实际的长度为准
  • 查看容量和长度的方法


  •  StringJoiner

    • 提高字符串的操作效率,代码编写简洁
    • 构造方法
      • StringJoiner sj = new StringJoiner("**");
      • StringJoiner sj = new StringJoiner("**","[","]");
    • 常用方法
      • 添加内容 add
        • sj.add("23")
      • 返回长度 length
      • 返回字符串 toString
  • 字符串拼接底层方法

    • 静态拼接 String s = "a" + "b" + "c"
    • 动态拼接
    • 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
    • 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-pycharm滚轮调大小

PyCharm使用技巧&#xff1a;滚轮调整代码大小提高工作效率 介绍 PyCharm是目前最受欢迎的Python开发IDE之一。然而&#xff0c;即使在使用PyCharm多年的开发者中&#xff0c;很多人都不知道如何使用滚轮来调整代码显示的大小。这在工作中可能会导致眼睛疲劳&#xff0c;降低…

Mysql案例

Mysql案例 1.分组查询排名优先的数据1.1 分组获取最新一条记录1.2 分组获取最新的两条数据 1.分组查询排名优先的数据 -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS user; CREATE TABLE user (id int(…

力扣82删除排序链表中的重复元素 II:思路分析+代码实现+方法总结(三指针法快慢指针法【双指针】递归法)

文章目录 第一部分&#xff1a;题目描述第二部分&#xff1a;代码实现2.1 三指针法2.2 快慢指针法&#xff08;双指针&#xff09;2.3 递归 第一部分&#xff1a;题目描述 &#x1f3e0; 链接&#xff1a;82. 删除排序链表中的重复元素 II - 力扣&#xff08;LeetCode&#xf…

简单快速的在openEuler22.03上部署openGauss2.10

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装openEuler1.创建虚拟机2.安装openEuler系统 二、安装openGauss1.设置openGauss2.创建数据库用户并设置权限3.设置防火墙4.远程连接openGauss 总结 前言…

PyQt5桌面应用开发(15):界面动画

本文目录 PyQt5桌面应用系列界面动画PyQt5的动画框架QPropertyAnimationQAnimationGrouppyqtProperty与插值 一个例子代码代码解析 结论 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&#…

【手机建站】安卓Termux+cpolar内网穿透,搭建外网可以访问的网站

文章目录 概述1.搭建apache2.安装cpolar内网穿透3.公网访问配置4.固定公网地址5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的Linux 环境&#xff0c;能够实现Linux下的许多基本操作&#xff0c;不需要root权限Termux就…

电脑格式化后数据恢复软件EasyRecovery16

EasyRecovery是一款由Kroll Ontrack公司开发的专业数据恢复软件&#xff0c;旨在帮助用户从各种数据丢失情况下恢复文件。无论是因为误删除、格式化、分区丢失、系统崩溃还是其他原因导致的数据丢失&#xff0c;EasyRecovery都具有强大的恢复功能。 EasyRecovery提供了多种恢复…

什么是 Git 的 cherry-pick?

官方解析 Git 的 cherry-pick 是一种将指定的提交&#xff08;commit&#xff09;应用到当前分支的操作。它可以帮助我们将某个分支上的某次提交复制到另一个分支上&#xff0c;而无需将整个分支合并过来。 通常&#xff0c;我们在使用 Git 进行版本控制时&#xff0c;会在不…

JAVA-Activiti 7与达梦、人大金仓兼容-修改源码包(1)

目录 第一步,下载源码包 第二步,修改源码内容 1.1进行部分源码包修改 1.1.1 在org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl&#xff0c;增加成员变量。 1.1.2 修改org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl 类的getDefaultDatabase…

UML类图画法及其关系

UML类图画法及其关系 本文主要是介绍 UML类图画法及其关系&#xff0c;方便今后温习&#xff01;&#xff01;&#xff01; 一、类之间的关系汇总 泛化&#xff08;Generalization&#xff09;实现&#xff08;Realization&#xff09;关联&#xff08;Association&#xff…

基于springboot+jsp的校园音乐网站系统

该系统能完成的主要功能分为管理员和用户两个用户角色。主要功能包括主页、个人中心、用户管理、校园歌手管理、明星歌手管理、歌曲类别管理、校园歌曲管理、歌曲MV管理、歌手歌曲管理、系统管理等。而用户登入系统也可以对自己的信息以及修改个人资料进行查看等功能。该系统在…

YOLO-NAS C++部署 2023.5.17

这不最近新出了网络&#xff0c;YOLO-NAS&#xff0c;听过性能和速度都不错&#xff0c;而且int8量化后效果也不错。 一、吐槽 但是我打开该项目阅读readme.txt时候&#xff0c;发现这些示例网站一个都打不开&#xff01; 而且readme.txt很不详细&#xff0c;你想训练自己的模…

设计模式之【访问者模式】,动态双分派的魅力

文章目录 一、什么是访问者模式1、访问者模式的应用场景2、访问者模式的五大角色3、访问者模式的优缺点 二、实例1、访问者模式的通用写法2、宠物喂食实例3、KPI考核案例小总结 三、分派1、什么是分派2、静态分派3、动态分派4、双分派5、访问者模式中的伪动态双分派 四、访问者…

mkv转mp4格式怎么转,5种便捷工具盘点

mkv转mp4格式怎么转&#xff1f;因为当我们下载视频时&#xff0c;通常无法选择格式&#xff0c;这可能会导致下载的视频无法打开。如果下载的是MKV格式&#xff0c;它可以容纳多个音频、视频和字幕流。然而&#xff0c;并非所有播放器都支持MKV格式的视频文件。尽管MKV是常见的…

2D车道线检测算法总结

关于2D车道线检测算法的总结主要分为两类&#xff1a;一类基于语义分割来做&#xff0c;一类基于anchor和关键点来做。还有基于曲线方程来做的&#xff0c;但是落地的话还是上面两种为主。 一、基于语义分割的车道线检测算法 1.LaneNet 论文创新点&#xff1a; 1.将车道线检…

【软考数据库】第十五章 知识产权和标准化

目录 15.1 知识产权概述 15.2 保护期限 15.3 知识产权人的确定 15.4 侵权判断 15.5 标准划分 前言&#xff1a; 笔记来自《文老师软考数据库》教材精讲&#xff0c;精讲视频在b站&#xff0c;某宝都可以找到&#xff0c;个人感觉通俗易懂。 15.1 知识产权概述 知识产权是…

RN_iOS项目部署流程实例

文章目录 1、环境配置1.1 安装node1.2 安装Watchman1.3 安装npm1.4 安装cocoapods 2、百家云demo下载3、运行百家云demo3.1 顺利的话3.2 踩过的坑&#xff08;按这个目录流程走&#xff09;3.2.1 npm install -g react-native-cli3.2.2 安装&#xff1a;npm install3.2.3 npm降…

新一代智能柔性换层跨巷道多车调度的HEGERLS托盘四向穿梭车物流解决方案

随着电子商务和智能制造技术的快速发展&#xff0c;对自动化仓储、密集仓储、自动搬运系统、自动识别、无线通信等多系统集成的需求也在不断增加&#xff0c;物流设备系统的密集化、自动化、智能化等技术也在不断完善。密集存储技术的优势是空间可用性高、运行模式高效、工作人…

Docker-Compose 入门到实战详尽笔记

本文首发自「慕课网」&#xff08;www.imooc.com&#xff09;&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"或慕课网公众号&#xff01; 作者&#xff1a;暮闲 | 慕课网讲师 使用过 Docker 的小伙伴们都知道&#xff0…

职场小白如何在工作中快速的升职加薪

缘起 近来连续两个季度很轻松的获得优秀&#xff0c;在这轻松的背后&#xff0c;一定有些原因支撑这领导给了这个评价。坦白说&#xff0c;最近两个季度&#xff0c;无一天加班&#xff0c;因为我们团队不提倡加班&#xff1b;我这边离领导较远&#xff0c;属于两个城市异地办…