news 2026/5/10 15:58:10

Java学习日记——DAY9

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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更优;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 3:36:44

R与Python变量传递机制全解密(从传值到共享内存的终极指南)

第一章:R与Python变量传递机制全解密在数据分析和科学计算领域,R与Python是两大主流语言,它们在变量传递机制上存在显著差异。理解这些差异有助于避免副作用、优化内存使用并提升代码可预测性。变量作用域与绑定模型 R采用“传值复制”&#…

作者头像 李华
网站建设 2026/5/5 22:57:37

5MW永磁同步风机-1200V直流混合储能并网MATLAB仿真 MATLAB2016b运行。 ...

5MW永磁同步风机-1200V直流混合储能并网MATLAB仿真 MATLAB2016b运行。 主体模型: 风机传动模块、PMSG模块、蓄电池模块、超级电容模块、无穷大电源。 蓄电池控制、风机控制、逆变器控制。 附详细建模文件。最近在折腾一个挺有意思的混合储能风电并网系统仿真&#x…

作者头像 李华
网站建设 2026/5/2 15:02:50

软技能在测试中的重要性

超越技术,软技能点亮测试之路 在数字化浪潮席卷全球的今天,软件测试作为确保产品质量的关键环节,早已不再局限于纯技术层面。随着敏捷开发、DevOps和人工智能测试工具的普及,测试从业者若仅依赖硬技能(如自动化脚本编…

作者头像 李华
网站建设 2026/5/5 10:15:00

COMSOL模拟沸腾水中气泡运动及蒸汽冷凝:探究两相流流体传热过程

COMSOL案例模拟沸腾水中气泡运动两相流流体传热蒸汽冷凝。沸腾水中的气泡运动是两相流研究中极具挑战性的场景。在电水壶底部突然冒出的气泡,不仅涉及气液界面的剧烈变形,还伴随着相变传热和蒸汽冷凝现象。今天我们用COMSOL做个"热水壶模拟器"…

作者头像 李华
网站建设 2026/5/4 16:34:40

13、Visual Basic编程入门:从基础到实践

Visual Basic编程入门:从基础到实践 1. 颜色设置与控件事件 1.1 颜色设置 在编程中,颜色的设置往往是通过特定的编码来实现的。在相关的编程环境里,颜色的强度可以用十六进制数字来表示。其中,RR 十六进制数字表示红色的强度,范围从 00h 到 FFh(即 0 到 255);GG 表示…

作者头像 李华