news 2026/10/24 11:56:18

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/10/24 21:02:18

测试数据自动生成方法:策略、实施与最佳实践

测试数据自动生成是指利用算法、工具或脚本,自动创建符合特定测试需求的模拟数据的过程。在持续集成/持续部署(CI/CD)和敏捷开发模式普及的背景下,自动化测试数据的生成能够有效应对数据依赖性、数据隐私合规性及多环境数据一致性…

作者头像 李华
网站建设 2026/10/25 9:19:10

【医疗数据安全防线】:如何用PHP构建自动备份体系

第一章:医疗数据安全与PHP备份体系概述在医疗信息化快速发展的背景下,患者健康记录、诊断数据和身份信息的数字化存储成为常态。这些数据具有高度敏感性,一旦泄露或丢失,可能对个人隐私和社会信任造成不可逆的损害。因此&#xff…

作者头像 李华
网站建设 2026/10/25 9:25:33

【R-Python模型融合实战】:揭秘跨平台建模结果验证的5大核心步骤

第一章:R-Python模型融合结果验证概述在跨语言建模日益普及的背景下,R 与 Python 的模型融合已成为数据科学工作流中的关键环节。二者分别在统计分析与机器学习工程化方面具备独特优势,通过整合 R 的高级统计包(如 lme4、survival…

作者头像 李华
网站建设 2026/10/24 6:05:58

从田间到R控制台,方差分析如何改变传统农业决策?

第一章:从田间到R控制台——方差分析在农业决策中的角色在现代农业研究中,科学决策依赖于对实验数据的严谨分析。当农学家需要比较不同施肥方案、作物品种或灌溉策略对产量的影响时,方差分析(ANOVA)成为核心统计工具。…

作者头像 李华
网站建设 2026/10/24 17:32:12

2025年最新阿勒泰地区道路矢量数据

2025年阿勒泰地区道路shp数据(含处理代码),数据坐标系wgs84坐标系, 数据shp格式,.cpg,.dbf,.prj,.shp,.shx,并通过python代码进行裁剪。 一、总体规模与网络格…

作者头像 李华