当前位置: 首页 > news >正文

java 第10天 String创建以及各类常用方法

一.String创建的两种形式

1.通过new的当时

String str=new String();

2.不new的方式 

String s1="";

二.new 和不new的方式的区别是什么

不new创建的字符串首先是拿着值去常量池中查找,是否有该内容,有就用常量池该字符串的地址,没有的话在常量池中创建并使用

new的方式创建的字符串首先在堆中创建并赋予字符串值,然后到常量池中查找,如果有就不做任何处理,如果没有就在常量池中开辟该字符串

三.String和Stirng Buffer、String Builder的区别

底层他们都是利用char[]数组开辟空间

关于字符串追加问题

String 需要追加元素 肯定五步走
1 开辟新的数组空间
2 老元素复制到新的空间中
3 改变数组对象存储的地址
4 回收老数组空间
5 给最后的空间赋值【追加】

StringBuffer/StringBuilder 底层开辟的空间个数等于字符串的长度+16缓冲区

StringBuffer/StringBuilder 追加元素 直接先存储到缓冲区中 追加连接效率高

四.StringBuffer和StringBuilder之间的区别

StringBuffer 同一时间允许一个线程进行访问 效率较低 但是不会产生并发问题

StringBuilder 同一时间允许多个线程进行访问 效率较高 但是可能产生并发问题

五.String中常用的20个方法

跟长度相关 1个

int类型的 

 length() :

返回字符串的长度[字符的个数]  和密码校验有关

跟数组相关 3个

byte[]返回类型 

1. getBytes() :

byte[] getBytes() : 使用自己电脑的默认字符集【编码】将此 String 编码为 byte 序列。
ascii 一个字母 - 一个字节 / 一个汉字 - 两个字节
unicode 一个字母 - 两个字节 / 一个汉字 - 两个字节 【 char

 char[]类型的

2.toCharArray()

char[] toCharArray() : 打碎字符串 放入一个 char[]
char[] 的大小 == 字符串的长度

String[]类型的

3.split(String x):  

String[] split(String x) : 按照指定的内容劈开字符串
打碎 String[] split("")
"hello".split("") => [][]["h"] ["e"] ["l"] ["l"] ["o"]
如果要劈开的内容 x 在最开始出现一次 最前面多留一块空间 空间的内容是 "" 【空串】
如果要劈开的内容 x 在最后始出现一次 最后不会多留空间
如果要劈开的内容 x 在中间连续出现两次 中间多留一块空间 空间的内容是 "" 【空串】

注意:

利用split也能打碎字符串 为String 双引号类型””,而toCharArray 是单引号的char类型 

和判断相关5个

1. boolean equals(String)  

判断调用者和参数是否内容一样[精准匹配]

应用场景:密码精准匹配

2 boolean equalsIgnoreCase(String)

忽略大小写的比较

3 boolean contains(String s);

调用者字符串中是否包含s

参数字符串s在调用者中连续存在 并且参数字符串的长度要小于等于调用者字符串的长度

4 startsWith(String):

是否以指定内容开头

5 endsWith(String);

是否指定内容结尾

与改变内容相关【接收!】4个

1 toUpperCase();

将所有内容 字母变成大写

2 toLowerCase();

将所有内容 字母变成小写

3 String replace(String x,String y);  

将所有的x 替换成y

4 String replaceAll(String regx,String y);

第一个可以传入正则表达式 --范围

[]---》表示某一个位置的范围

[a-z] 小写字母

[A-Z]

[a-zA-Z] 所有字母

[\u4e00-\u9fa5] 所有中文范围

S1=s1.replaceAll(“[a-zA-Z]”,”*”);//表示 是字母就替换成*

 和下标有关的3个

1 charAt();

定位到每一个字符 charAt(int Index);返回的char类型 范围【0,str.length()-1】

2 indexOf(String str)

 判断参数内容第一次出现的内容 没找到返回-1

3 lastIndexOf(String);

返回参数内容所在的位置【最后一次】

2和3 来判断 当前内容只出现一次

Boolean matches(String regx); 这个很牛的

正则表达式

正则表达式
    "[A-Z]" 大写
    "[a-z]" 小写
    "[0-9]" 数字 "\\d"
    "[\u4e00-\u9fa5]" 中文

    [a-z]{1}  => [a-z] 校验一位
    [a-z]{3}  => [a-z] 校验长度是3 + 每一个字符必须是a-z
    [a-z]{3,5}  => [a-z] 校验长度[3-5] + 每一个字符必须是a-z
    [a-z]{3,}  => [a-z] 校验长度>=3 + 每一个字符必须是a-z

http://www.lryc.cn/news/463699.html

相关文章:

  • VS 解决方案里面.vs文件夹
  • 初试PostgreSQL数据库
  • springboot3导出数据库数据到excel
  • 十四、行为型(观察者模式)
  • 爬取简书1
  • 基于STM32单片机设计的矿山环境作业安全监测系统
  • 大数据linux操作系统
  • MySQL 【日期】函数大全(七)
  • IP报文格式、IPv6概述
  • 学习记录:js算法(六十七):任务调度器
  • 5分钟8图:Cursor如何让编程效率提升5倍?
  • 车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
  • PACT 在微服务架构中的用途
  • LeetCode 3200.三角形的最大高度:枚举
  • ssm基于java的招聘系统设计与开发+vue
  • 【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!
  • 三次握手与四次挥手
  • awk命令学习记录
  • 科大讯飞嵌入式面试题及参考答案
  • C Lua5.4.6 SDK开发库
  • 无线网卡知识的学习-- wireless基础知识(cfg80211)
  • Next.js 学习 - 路由系统(Routing)
  • Unity XR PICO 手势交互 Demo APK
  • EM算法学习
  • 019_基于python+django食品销售数据分析系统2024_4032ydxt
  • C语言笔记(数据的存储篇)
  • wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理的解决方法
  • CSS 居中那些事
  • Java项目-基于springboot框架的智能热度分析和自媒体推送平台项目实战(附源码+文档)
  • 跨平台进程池背后的思想