String类学习

本文深入解析Java中字符串的创建、比较、常量池机制及不可变性。探讨了直接赋值与构造方法实例化的区别,以及如何正确使用equals()方法进行字符串比较。分析了字符串常量池的工作原理和intern()方法的作用。

一.创建字符串
·String str=“java”;

如下图:修改str2的不会影响str1的值,只会重新创建一个新的对象让str2指向新的对象
在这里插入图片描述
·String str=new String(“java”);//和方式一比较,虽然都是“java”这个字符串,但地址不同,此方法是重新创建了一个新的对象,拥有新的地址。
在这里插入图片描述
·char[] array=new char[]{‘j’,‘a’,‘v’,‘a’};
String str=new String(array);

二.字符串比较相等
字符串比较相等是比较内容是否相等,用的不是“==”,等号在String字符串比较的是字符串地址是否相同,用的是equals()方法。

String str1="java";
String str2="java";
String str3=new String("java");
System.out.println(str1==str2);//结果是true,
//因为他们指的是同一字符串,所以地址相同
System.out.println(str1==str3);//结果是false
//他们字符串内容虽然相同,但不属于同一对象,所以地址不相同;

System.out.println(str1.equals(str3));//true

**使用equals()方法需要注意!

String str1=new String("hello");
//用str1与"hello"这个字符比较内容是否相同
//方式一
System.out.println(str1.equals("hello"));
//方式二
System.out.println("hello".equals(str1));

第二种方式更加确切,原因是,如果str1是null,那么方式一会出现空字符串异常(java.lang.NullPointerException 异常),因为空的字符串没有equals()方法

三.字符串常量池
在这里插入图片描述
1.str1,str2,str3指向同一个对象的原因是,String类使用了共享模式设计,str1通过直接赋值的模式进行了实例化对象操作,该实例化对象(字符串内容)将会被保存在字符串常量池中,如果后续操作还是采用直接赋值实例化对象,如果字符串内容在常量池中有相同内容,那么直接引用,如果没有,那么开辟新的空间将新的字符串对象保存在常量池中,供下一次使用

2.intern(),已经知道直接赋值,如果字符串内容相同,不会开辟新的空间来存储相同内容字符串,如果采用String构造方法创建一个字符串,不管内容是否相同都会开辟新的空间。此时可以使用intern()方法,作用就是让采用String构造方法创建一个内容在常量池当中存在的字符串加到字符串常量池当中,请看下图来理解。
在这里插入图片描述
**面试题:**请解释String类中两种对象实例化的区别?
1. 直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。
2. 构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用

四.字符串的不可变性
1.

String str="hello";
str=str+"world";
str=str+"!";
System.out.println(str);
//结果是:helloworld!

看似字符串内容改变,但只是表象,实际并没有改变!
在这里插入图片描述
2.可以使用以下方法改变内容

String str="hello";
str="H"+str.subString(1);//截取从下标为一开始的所有字符;
//str内容为Hello

String 类中有很多方法:可以使用jdk-Api文档来查找

潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
C++的string是C++标准库中提供的一个用于处理字符串的。它提供了一系列成员函数和操作符重载,使得字符串的操作更加方便和高效。 string的特点包括: 1. 动态内存管理:string会自动管理字符串的内存,无需手动分配和释放内存。 2. 可变性:string对象可以随时修改其内容,包括插入、删除、替换等操作。 3. 字符串操作:string提供了丰富的字符串操作函数,如查找、比较、连接、截取等。 以下是一些常用的string成员函数和操作符重载: 1. 构造函数:可以使用不同的方式创建string对象,如默认构造函数、拷贝构造函数、从C风格字符串构造等。 2. 赋值操作:可以使用赋值运算符=将一个string对象赋值给另一个对象。 3. 连接操作:可以使用+运算符将两个string对象连接起来。 4. 访问字符:可以使用下标运算符[]或at()函数来访问字符串中的单个字符。 5. 获取长度:可以使用length()或size()函数获取字符串的长度。 6. 查找子串:可以使用find()函数在字符串中查找指定的子串。 7. 插入和删除:可以使用insert()函数在指定位置插入字符或子串,使用erase()函数删除指定位置的字符或子串。 8. 截取子串:可以使用substr()函数截取指定位置和长度的子串。 9. 比较字符串:可以使用比较运算符==、!=、<、>等来比较两个字符串的大小。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值