字符串String

目录

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"
    • 动态拼接
    • 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
    • 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

 

 

 

 

 

 

 

 

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

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

相关文章

小白安装 stabel diffusion 篇

windows 系统安装 stabel diffusion 软件的方法其实很简单&#xff0c;只有 4 步&#xff08;安装过程遇到的报错问题&#xff0c;本文有详细的解决方案&#xff0c;都是我踩过的坑&#xff0c;给大家探路了&#xff09;&#xff1a; 1、安装 python&#xff08;建议安装 3.10…

Spark 2:Spark Core RDD算子

RDD定义 RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是Spark中最基本的数据抽象&#xff0c;代表一个不可变、可分区、里面的元素可并行计算的集合。 Resilient&#xff1a;RDD中的数据可以存储在内存中或者磁盘中。 Distribut…

玩客云刷NAS

测试路由器支持IPV6 参考 这里 我用的是TPlink WDR7660 支持IPV6 主要设置桥模式 玩客云刷写固件 参考 这里 还有这里 玩客云固定IP 参考这里 sudo armbian-config 选择Network 选择有线网络->ip 选择static 然后根据自己情况进行设置 点击OK即可 更新国内源 参考这里 证书…

Flowable 生成的表都是干嘛的?(一)

一.简介 Flowable 默认一共生成了 79 张数据表&#xff0c;了解这些数据表&#xff0c;有助于我们更好的理解 Flowable 中的各种 API。 接下来我们就对这 79 张表进行一个简单的分类整理。 ACT_APP_*&#xff08;5&#xff09;ACT_CMMN_*&#xff08;12&#xff09;ACT_CO_*…

rtl仿真器-epicsim安装和测试

前言 epicsim 是芯华章的仿真器&#xff0c;基于iverilog 据说速度快两倍。 源码 github https://github.com/x-epic/EpicSim gittee https://gitee.com/x-epic/ 公司网站 https://www.x-epic.com/index.html#/en/developer 维护中了 安装 依赖 有些 apt-get install 就可…

大量名片图片转excel表格文件怎么转?有什么好办法?

随着市场经济的发展和社交交往的频繁&#xff0c;名片作为有效沟通方式&#xff0c;优雅和高效地传递个人或公司信息的同时&#xff0c;时常成为人们忙碌生活的问题之一&#xff1a;对于一个拿到的名片&#xff0c;我们需要将它收藏或转录至手机、电脑等媒介记录&#xff0c;但…

Kali-linux使用假冒令牌

使用假冒令牌可以假冒一个网络中的另一个用户进行各种操作&#xff0c;如提升用户权限、创建用户和组等。令牌包括登录会话的安全信息&#xff0c;如用户身份识别、用户组和用户权限。当一个用户登录Windows系统时&#xff0c;它被给定一个访问令牌作为它认证会话的一部分。例如…

谈谈包装类与泛型

目录 包装类 基本数据类型与对应的包装类 装箱和拆箱 装箱 拆箱 泛型 什么是泛型 泛型的语法与使用 泛型的编译 擦除机制 泛型的上界 泛型方法 提到泛型的话&#xff0c;我们就先提一下包装类吧&#xff01; 包装类 在Java中&#xff0c;由于基本类型不是继承自Ob…

Linux内核(十五)sysrq 详解 II —— 代码框架详解

文章目录 sysrq模块初始化流程图sysrq模块代码详解sysrq产生kernel crash事件流程sysrq 整体框架图sysrq 框架中添加自定义实例 Linux 版本&#xff1a;Linux version 3.18.24 sysrq模块初始化流程图 sysrq模块源码路径&#xff1a;linux-3.18.24.x/drivers/tty/sysrq.c 编译…

C++控制台打飞机小游戏

我终于决定还是把这个放出来。 视频在这&#xff1a;https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停&#xff0c;建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss&#xff08;上面视频2分47秒&#xff09;。 挺好…

Oracle数据库中了locked1勒索病毒攻击后怎么办,什么是locked1勒索病毒

Oracle数据库是一种被集团企业广泛使用的关系型数据库管理系统&#xff0c;但是随着科学技术的不断发展&#xff0c;在现代互联网环境中数据库安全性成为了一个非常重要的问题。而其中主要的威胁就是勒索病毒攻击。一旦数据库被勒索病毒攻击入侵&#xff0c;许多重要的数据就会…

消息中间件概念

什么是消息队列 消息队列是消息中间件的一种实现方式。 什么是消息中间件&#xff1f; 将消息中间件需要理解一下什么是消息和中间件&#xff1f; 消息 消息是指软件对象之间进行交互作用和通讯利用的一种方式。 中间件 百度百科的介绍&#xff1a; ​ 中间件&#xff08;Mid…

gma 1.1.6 | 2.0.0a1 (2023.05.14) 更新日志

从现在开始&#xff0c;gma 开始同步更新 gma 2 的前期预览版&#xff0c;并与 gma 1 的正式版同步发布。 gma 1.1.6 更新日志 新增 1、添加 3组 新的指北针样式。 修复 1、【map】高分辨栅格数据集内存溢出问题。   添加高分辨率栅格数据集且进行强制数据缩放时 偶现内存…

node笔记_koa框架的路由

文章目录 ⭐前言⭐koa 原生路由写法⭐引入 koa-router&#x1f496; 安装koa-router&#x1f496; 动态读取路径文件作为路由 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文介绍koa框架的路由。 往期文章 node_windows环境变量配置 node_npm发布包 linux_配置no…

Vue 注册组件介绍

Vue组件的基本概念 Vue组件是一种可复用的Vue实例&#xff0c;用于封装可重用的HTML元素、JavaScript代码和CSS样式。它可以让开发者更好地组织和复用代码&#xff0c;使Web应用程序更加可维护和可扩展 Vue组件通常由三部分组成&#xff1a;模板&#xff08;template&#xf…

近期关于Transformer结构有潜力的改进方法总结

目录 0 引言1 Gated Linear Unit (GLU)1.1 思路 2 Gated Attention Unit (GAU)2.1 思路2.2 实验结论2.3 混合注意力 3 FlashAttention3.1 标准Attention的实现3.2 FlashAttention的实现针对目标1针对目标2 4 总结5 参考资料 0 引言 标准Transformer在最新的实际大模型中并没有…

代码随想录算法训练营day44 | 完全背包,518. 零钱兑换 II,377. 组合总和 Ⅳ

代码随想录算法训练营day44 | 完全背包&#xff0c;518. 零钱兑换 II&#xff0c;377. 组合总和 Ⅳ 完全背包完全背包问题概述例题遍历顺序分析 518. 零钱兑换 II解法一&#xff1a;动态规划 377. 组合总和 Ⅳ解法一&#xff1a;动态规划 总结 完全背包 教程视频&#xff1a;h…

Nginx + fastCGI 实现动态网页部署

简介 本文章主要介绍下&#xff0c;如何通过Nginx fastCGI来部署动态网页。 CGI介绍 在介绍fastCGI之前先介绍下CGI是什么。CGI : Common Gateway Interface&#xff0c;公共网关接口。在物理层面上是一段程序&#xff0c;运行在服务器上&#xff0c;提供同客户端HTML页面的…

了解这3大特性,再也不担心传输线问题了!

电阻是一个实实在在的物理元器件&#xff0c;通过欧姆定律我们可以知道&#xff0c;电压、电流和电阻三者之间的关系&#xff0c;UI*R。 我们通过一个具体的电路来分析这三者之间的具体关系&#xff0c;请看下面的一张最简单的电路图。这个电路图只有一个电源一个电阻和一些导…

MySQL---多表联合查询(下)(内连接查询、外连接查询、子查询(ALL/ANY/SOME/IN/EXISTS关键字)、自关联查询)

1. 内连接查询 数据准备&#xff1a; use mydb3;-- 创建部门表 create table if not exists dept3(deptno varchar(20) primary key , -- 部门号name varchar(20) -- 部门名字 );-- 创建员工表 create table if not exists emp3(eid varchar(20) primary key , -- 员工编号e…