深入理解String:用法、比较与Java实现细节

创始人
2024-12-14 18:57:03
0 次浏览
0 评论

string是什么?

String可以认为是C++中的一种新类型,即String类型。
用法与标准数据类型(int、float、char等)相同,因此s1和s2是两个声明的字符串变量,可以进行比较。
例如,inta1=5和inta2=5声明两个整型变量。
它们引用同一个地址吗?第二个问题也可以用类似的方式来考虑。
如果a2=5,那么a1=5?显然不一样。
它们只是两个彼此无关的变量。
最后一个问题,s2是一个字符串变量,当然可以再次复制。
简而言之,String是字符串类型,其用法与标准数据类型(int、float、char等)类似。
提出其格式是为了方便处理字符串数据。
也可以像s1+s2一样直接使用将两个字符串连接在一起,比C中的strcat更容易使用,也更明确,所以提出了这种类型。
但请注意,这不是标准数据类型。
其实就是一个类。
它在STL中得到了广泛的应用。
如果要使用它,必须包含头文件字符串,即#include

java怎么判断字符串中包含另一个字符串

在Java中,您可以使用String类的contain方法轻松判断一个字符串是否包含另一个字符串。
该方法定义如下:publicbooleancontains(Strings)。
接收一个字符串参数,返回一个布尔值,指示当前字符串是否包含该参数指定的字符串。
例如,我们有两个字符串变量s1和s2,赋值如下:s1="takecatb"s2="te"我们可以通过调用包含s1的方法来检查s1是否包含s2,如下:语句:s1.contains(s2)。
如果s1包含s2,则该方法返回true,否则返回false。
请注意,当使用contains方法时,此方法将检查整个字符串,因此如果s2是s1的一部分,无论其在s1中的位置如何,此方法都将返回true。
此外,如果s2是空字符串,则contains方法也会返回true,因为任何非空字符串都包含空字符串。
在实际编程中,可以使用contains方法来简化查找字符串的逻辑,避免使用循环和条件语句来单独比较每个字符。
这种方法不仅更加简洁,而且更加高效。
总之,通过学习和掌握如何使用String类的contain方法,可以更方便地进行字符串操作和搜索,提高代码的可读性和效率。

"1"=="1"?true还是false

尽管上面说了这么多,但我还是没有说到重点。
其实,这需要在很低的层次上讨论两件事。
1.==判断的其实是内存中约定的引用地址,与原贴者提到的同一个对象。
2.两个“1”是同一个对象吗?答案是否定的。
3.发帖者最想明白的是为什么“1”==“1”为真。
这是第一个相当发达的地方。
这是因为只要出现一个“1”,JVM就给出一个内存地址,而当出现第二个“1”时,它不会给出新的地址,而是在字符串缓冲池中寻找具有相同值的引用。
如果可能的话,将其直接交付给该人。
很奇怪,但就是这样,这里的前提是两个“1”被认为是原始类型而不是对象。
让我举个例子。
字符串1=“1”;字符串2=“1”;那么s1==s2为真。
这是因为这里s1和s2都是原始类型,类似于int和float(除非它们是新的,否则String有点特殊)。
与Integer的int等价物不同,它的基类型和对象类都是String。
我们再举一个例子。
Strings1=”1”;Strings2=newString(”1”);在本例中,s1==s2,因为s1是原始类型,而s2具有不同的地址引用。
.我简直不敢相信。
尝试一下。
4.==和.equals有什么区别?这是第二低的级别。
在Java中,每个类的超类都是Object。
Object有一个Equals方法,里面的Equals是这样的。
publicbooleanequals(Objectobj){return(this==obj);}换句话说,Object中的相等就是比较引用地址的==操作。
然后当你使用s1.equals(s2);Strings1=newString("1");为什么像Strings2=newString("1");这样的两个String对象仍然为true?这是因为大多数与Integer、String、Float等基本类型对应的类都重写了equals函数来比较它们的值的大小而不是引用的大小。
equals就是对应的值并且它的所有值都是“1”。
也就是说,如果它们的值相等,则s1.equals(s2)为true。
5.所以在很多情况下我们重写equals方法并使用我们自己的方法来检查两个对象是否相等。
补充解答:1.什么时候应该在常量池中使用“1”?当然,程序编译时有Strings1=“1”,后来又使用了同样的Strings2=“1”。

关键是如果不使用new,之前池中的常量将会被重用,除非是一个新的对象。
2、什么时候直接创建“1”对象?答案是您短期内不需要它。
你知道为什么会有整数和浮点数吗?面向对象编程有什么好处?Integer允许通过自动装箱在int基类型上轻松使用Integer类中的函数方法。
Strings1="1";中的相同s1可以自动包含在Strings1=newString("1");中的s1中,之后您可以自动使用String类的函数,如s1。
也就是说,除非你有特殊的爱好(比如完全OOP格式),否则你根本不需要newString,因为JVM的自动装箱和拆箱功能就足够了。

string是什么?

String可以认为是C++中的一种新类型,即字符串类型,它的用法与标准数据类型(int、float、char等)相同,因此s1和s2就是两个声明的字符串变量。
例如,inta1=5和inta2=5声明两个整数变量吗?它们显然不一样,它们只是具有相同的值。
第二个问题也可以类似地考虑。
如果a2=5,这显然不相等。
这些彼此无关。
最后一个问题,s2是一个字符串变量,当然你可以再次复制它。
总结一下,string就是字符串类型,它的用法和标准数据类型(int、float、char等)一样,也可以直接使用,就像s1一样。
+s2建议使用这种类型,因为连接两个字符串比C的strcat更容易使用且更生动。
但是,请注意,这不是标准数据类型。
STL中提供了详细的用法。
如果使用它,则必须包含头文件字符串(#include>

VB里,已知s1和s2字符串,请统计s2字符串在s1里出现的次数。分别用Mid函数和Instr函数

DimnumAsLongDimpAsLongs1="abcaca"s2="a"DoWhileTruep=InStr(1,s1,s2)Ifp=0ThenExitDoElsenum=num+1s1=Mid(s1,p+1)EndIfLoopMsgBox"出现了"&num&"次"

java..(s1.equals(s2))...(v1.equals(v2))//false,为什么是false??下面三个问题不懂啊

s1和s2是字符串变量,可以直接使用==进行比较。
v1和v2是两个对象,首先使用==比较两个对象引用(相等方法的地址)。
如果没有重写对象的equals方法,则将调用对象的equals方法和equals方法;对象使用==运算符来比较两个对象。
文章标签:
String contains
热门文章
1
SQL多表连接查询全解析:JOIN语句应... sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...

2
Java中字符串类型详解:String与... 变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...

3
JavaSE与JavaEE:从基础到企业... javase 和javaee的区别?JavaSE和JavaEE...

4
Java程序员面试必知:核心技术问答与技... java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...

5
Java.exe与Javaw.exe:区... 程序中java和javaw有什么区别java和javaw的区别:两者都是Java...

6
深入解析:Java中的javax包及其与... JAVA导入时,什么是javax?awt是java1.0,swing是java2...

7
Java字符串处理与键盘输入、文件读取技... 编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个strAdd函...

8
大专生转行自学Java,迷茫时如何找到方... 我是大专生因没有好好学所以现在后悔了我想从事软件编程我正在自学java不知道怎么...

9
Java中Scanner类导入位置及使用... 在java中这句语言“importjava.util.Scanner;”是什么意...

10
Java数组倒序输出:排序后逆序存储方法... Java数组倒序输出?1.反转数组的方法有很多种,比如先排序,然后倒序存储pub...