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

Java学习日记——DAY9

今天学习了Java中的String类,学习内容如下:

1.String类创建对象的两种方法:

(1)静态创建:String s1 = "abc";

(2)动态创建:String s2 = new String("abc");

区别在于静态创建时只会在方法区的常量池中创建一个对象并由引用直接指向该对象,动态创建则是创建两个对象,一个在堆中,一个在常量池中,引用指向堆的对象,堆的对象指向常量池的对象。注:String创建后即不可修改,String也不可被继承;

2.常见初始化方法:

(1)new String();

(2)new String(char[]);

(3)new String(char[],起始下标位置,长度);

(4)new String(byte[]);

(5)new String(byte[],起始下标位置,长度);

3.字符串连接操作符:

(1)可用+连接字符串:String s1 = "abc"+"def" //s1指向abcdef

String s2 = 10+"def"+20 //s2指向的是10def20

String s3 = 10+20+"def" //s3指向的是30def

即数字与字符串相加会变为字符串,String s1 = "abc"+"def"的过程是先在常量池中开辟abc的空间,再开辟def的空间,再开辟abcdef的空间,String不能被修改是指的是在初始化时常量池中的对象的值。

(2)String s1 = "abc"

String s2 = "def"

String s3 = s1+s2;

String s4 = "abcdeg"

String s5 = "abc"+"def"

这里面如果用==判断的话,s4与s5是相等的,而s3与s4不相等,原因如下:s3是对象相连也就是先开辟出一个新的空间再给初始化为abcdef,而s5则是先在常量池中查找有没有abcdef的常量对象,如果有则直接指向该对象;

4.常用方法:

length():返回有效长度;

equals():判断是否相等;

equalsIgnoreCase():判断是否相等并且忽略大小写;

indexOf/lastIndexOf(char):查找元素第一次/最后一次出现的下标;

indexOf/lastIndexOf(String):查找字符串首次/最后一次出现的下标;

indexOf/lastIndexOf(int):查找对应asc码元素出现第一次/最后一次的下标;

indexOf/lastIndexOf(char int/String int/int int):从指定位置开始查找对应元素第一次/最后一次出现的位置;

charAt(下标):用来返回字符串下标位置的单个字符;

toLowerCase/toUpperCase:转化为全大写/全小写;

subString(int):从指定位置截取字符串,直到结尾;

subString(int,int):从指定位置截取字符串,到指定位置结束,不会将结尾的位置包含进去;

trim():去除字符串前后的空格;

concat(String):与+作用一样,用于连接字符串,但是只能传入字符串类型,且传入的字符串对象不能为null;

getBytes():获得对应的byte数组;

toCharArray():获得对应的char数组;

contains(String):判断是否含有字符串元素,返回boolean类型的值;

startsWith(String):字符串是否以给定值开始;

endsWith(String):字符串是否以给定值结束;

startsWith(String,int):判断字符串在指定位置,是否以指定值开始;

replace(old char,new char):将字符串中所有指定的旧值改为新值;

replace(old charsequence,new charSequence):将所有指定字符序列改为新的字符序列;

replaceAll(String,String):安正则表达式选取被替换的元素,替换为后面的元素;

split(String):按照正则表达式将字符串分为字符串数组;

matches(String):判断字符串是否满足正则表达式,返回布尔类型的值;

Pattern.matches(Sting,String):判断后面的字符串满不满足前面的正则表达式;

contentEquals(charSequence/StringBuffer):可以直接比较内容是否相等;

5.正则表达式:

6.StringBuffer

可以高效的操作字符串,由StringBuffer创建的字符串是可以被修改的,而且在实现操作时没有多余的内存开销

常见方法:

append(String/charSequence):类似于String的+可以添加字符串;

capacity():返回StringBuffer的容量;

length():返回有效值长度;

setCharAt(下标,char):更改指定位置的字符;

reverse():反转字符串;

delete(起始位置,结束位置):删除起始下标至结束下标前一个的字符串;

toString():转为字符串类型;

replace(起始位置,结束位置,要替换为的字符串):将起始下标至结束下标前一个的字符串替换为指定字符串;

7.StringBuilder

提供了和StringBuffer相同的API,区别在于StringBuffer中的方法有synchronized修饰是线程安全的而StringBuilder没有。优点是:如果单线程操作的话Stringbuilder效率高于StringBuffer。

8.String,StringBuffer,StringBuilder区别:

9.String与StringBuffer:常量与变量的区别,String是由final修饰的不能产生子类,String使用final修饰的byte数组来存储值,一旦被创建则不能被改变。如果经常对数据进行修改,如添加,删除,分割等使用StringBuffer更优;

http://www.cnnetsun.cn/news/69114.html

相关文章:

  • 测试数据自动生成方法:策略、实施与最佳实践
  • 【医疗数据安全防线】:如何用PHP构建自动备份体系
  • 【R-Python模型融合实战】:揭秘跨平台建模结果验证的5大核心步骤
  • 从田间到R控制台,方差分析如何改变传统农业决策?
  • 基于comsol的多层冻土地基冻涨模型研究:低温热流固三场耦合效应的固体力学模拟
  • 2025年最新阿勒泰地区道路矢量数据
  • 设计模式[10]——外观模式一分钟彻底说清楚
  • Temu 分销重塑跨境生态:轻资产时代的新增长法则
  • Hello World的深度演进:一个Ascend C标量算子的性能剖析之旅
  • [Python桌面开发] 本地多服务启动神器:Python + Tkinter 构建“进程批量启动与监控工具”(跨平台 GUI + 源码开放)
  • 量子算法的实现路径解析(工业级应用稀缺技术曝光)
  • 揭秘Python最被低估的8个标准库,第6个能省下你一半代码量
  • GraphQL + PHP错误处理全解析,构建高可用API的必备技能
  • 当AI接管代码:哈佛调查显示53%年轻开发者每天用AI,却59%担心被取代,这届程序员太难了!
  • 16、编程中的颜色与图形绘制及HTML基础入门
  • PHP 8.6的JIT缓存机制揭秘:5大策略提升应用执行效率300%
  • 基于微信小程序的动漫社区交流小程序的设计与实现(源码+lw+部署文档+讲解等)
  • 响应格式化踩坑实录:Symfony 8开发者必须避开的5个陷阱
  • PHP 8.6性能监控面板实战(专家级配置全公开)
  • 性能监控在DevOps中的角色
  • RN Hooks 设计规范与反模式清单
  • 《Advanced Science》最新研究:多自由度折纸模块构建可编程机械超材料网络
  • 用梯形图+SCL玩转FactoryIO码垛控制
  • 7、Nagios 安装与功能拓展全解析
  • 读懂 NVIDIA Jetson OP-TEE 官方源码:从目录结构到 JetPack / Yocto 构建与运行的完整指南
  • LobeChat能否实现邀请码注册机制?控制用户增长节奏
  • Angular AOT编译失败?这份官方文档解读帮你10分钟定位问题
  • PHP环境下医疗数据备份怎么做?5种高可用方案对比分析
  • 【Python库选型避坑手册】:5年踩坑经验总结出的7条黄金法则
  • PHP 8.6 JIT编译器重大升级(指令优化黑科技曝光)