-
2021-05-30 21:40:58
一:大小比较:使用 String.compareTo 方法
compareTo() 的返回值是int, 它是先比较对应字符的大小(ASCII码顺序)
1、如果字符串相等返回值0
2、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)
(负值前字符串的值小于后字符串,正值前字符串大于后字符串)
3、如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,
直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.例: String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdfg"; String s4 = "1bcdfg"; String s5 = "cdfg"; System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1) System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3) System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48) System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
二:字符串是否相等比较
只能使用equals()方法,不能使用“==”。
更多相关内容 -
两个字符串比较
2018-03-02 14:36:00两个字符串比较大小: 一、可以用compareTo()方法,另外还有compareToIgnoreCase(String) 忽略大小写及 compareTo(object string)这些 方法返回值是int,以compareTo()方法为例: 1 .如果字符串相等返回值为0...两个字符串比较大小:
一、可以用compareTo()方法,另外还有compareToIgnoreCase(String) 忽略大小写及 compareTo(object string)这些 方法返回值是int, 以compareTo()方法为例:
1 .如果字符串相等返回值为0,不等返回其他数值。
比较方法是先比较对应字符的大小(Ascall吗顺序),从第一个字母开始比较。
2.如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)
(负值前字符串的值小于后字符串,正值前字符串大于后字符串)
3.如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.
例如:
String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdfg"; String s4 = "1bcdfg"; String s5 = "cdfg"; System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1) System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3) System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48) System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
二、还可以用“==”和.equals()方法判断大小:
1.“==”是一个判断相等的运算符,如果两边是基本数据类型,它判断的是值;如果两边是复合型数据类型(类类型),它判断的是地址;地址相同,内容一定相同,地址不同,内容不一定相同。
2..equals() 方法只能判断复合型数据类型,由于继承Object类,默认判断的是两边在内存的地址,判断结果和“==”一样,但在一些其他的类库中equals()被重写,例如String,Integer,Data等类中有其自身的实现,比较内容就不是地址了。
例如:
String str1 = new String("hello"); String str2 = "hello"; System.out.println("str1==str2: " + (str1==str2)); \\false System.out.println("str1.equals(str2): " + str1.equals(str2)); \\true
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
但equals() 在String中被重写过了,判断的是内容,不在是内存中的地址,所以是true。
但是String比较特殊,因为我们都知道jvm把内存分为3个区,分别是方法区,堆区和栈区。而在方法区中维护者一个String常量池,池中用来存放运行时产生的各种字符串,并且池中的内容不重复。而一般对象不在这个池中,对象放在堆里。这就需要分析String的创建方式:
1. 当使用任何方式来创建一个字符串对象str=“X”时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串str,否则,不在池中添加。
2.Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。
3 .使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。
4 使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。
例如:
String str2 = "hello"; String str3 = "hello"; System.out.println("str3==str2: " + (str3==str2)); \\true System.out.println("str3.equals(str2): " + str3.equals(str2)); \\true
true的原因是hello都是从常量池中取出来的,但你new出来的不管常量池中有没有都会新建一个,地址就不一样了。
-
c语言中如何判断两个字符串相等
2021-05-19 07:54:37该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。所以,要判断字符串相等,可以使用。扩展资料:关于上述strcmp()函数比较字符串的例子#...可以使用库函数strcmp判断,具体如下:
strcmp是C语言比较字符串的库函数,形式为int strcmp(char *a, char *b);
该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。
所以,要判断字符串相等,可以使用。
扩展资料:
关于上述strcmp()函数比较字符串的例子
#include
#include
int main(void)
{
char str_1[] = "abc";
char str_2[] = "abc";
char str_3[] = "ABC";
if (strcmp(str_1, str_2) == 0)
printf("str_1 is equal to str_2. \n");
else
printf("str_1 is not equal to str_2. \n");
if (strcmp(str_1, str_3) == 0)
printf("str_1 is equal to str_3.\n");
else
printf("str_1 is not equal to str_3.\n");
return 0;
}
-
shell比较两个字符串是否相等
2021-02-04 20:21:20比较两个字符串是否相等的办法是:if [ "$test"x = "test"x ]; then这里的关键有几点:1 使用单个等号2 注意到等号两边各有一个空格:这是unix shell的要求3 注意到"$test"x最后的x,这是特意安排的,因为当$test为...比较两个字符串是否相等的办法是:
if [ "$test"x = "test"x ]; then
这里的关键有几点:
1 使用单个等号
2 注意到等号两边各有一个空格:这是unix shell的要求
3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected
二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.
整数比较
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
小数据比较可使用AWK
字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.
-
python怎样判断两个字符串是否相同
2021-02-09 19:54:55原标题:python怎样判断两个字符串是否相同 python中,判断两个字符串是否相等或一样,可以使用==或者is来判断;判断不一样可以使用 is not。示例 使用注意事项1.有时候两个字符串打印出来看着一样,但是判断却是... -
输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符(详细)
2019-07-25 11:07:47输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符 比如输入“They are students." 删除之后的第一个字符串变成"The r stdnts." 思路是利用每个字符都有其对应的ASCII码值,将需要删除的字符的ascii为... -
如何比较两个字符串的大小
2020-06-11 22:18:45在Java中可以使用compareTo()方法来对两个字符串比较大小。 String类关于compareTo()方法的解释如下: If they have different characters at one or more index positions, let k be the smallest such index; then... -
js中怎么判断两个字符串相等的实例
2019-05-19 17:12:06转载:https://www.jb51.net/article/154827.htm -
JAVA比较两个字符串日期或者Date日期的大小
2019-07-12 15:03:02JAVA比较两个字符串日期或者Date日期的大小 compareTo关键字的使用 compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。 该方法用于两个相同数据类型的比较,两个不同类型... -
C++将两个字符串合并在一起
2019-05-08 17:03:24C++将两个字符串合并在一起 ubuntu输入命令: g++ bbb.cpp -o bbb 运行结果: 代码如下: #include <iostream> using namespace std; char swap(const char *pch = "one world,one dream",const char *... -
c语言比较两个字符串的大小用strcmp方法
2019-04-11 21:54:27//strcmp (参数1类型为:char *,参数2类型为:char *),用于比较参数1,参数2两个字符串的值大小,返回一个int类型的数。如果第一个参数大于第二个参数返回1,相等返回0,小于返回-1,头文件为#include<string.... -
js中判断两个字符串是否相等
2019-03-12 22:26:01js中判断两个字符串是否相等 java中使用equals方法判断两个字符串是否相等,在js中用equals方法会报错:equals不是方法, 在js中使用== 号和===号来判断两个字符串是否一致 ... -
js 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符串
2017-08-18 09:34:23将字符串1中出现的字母删掉,用splite,【split("指定字符串"),用来切割字符串中指定的字符串的,返回的是字符串的数组】 // 3.把返回的数组变成字符串,用join【join用来对数组进行拼接】 var a = ... -
编一个程序,将两个字符串比较。
2020-03-25 10:39:44/*编一个程序,将两个字符串s1和s2比较,若s1 > s2,输出一个正数;若s1 = s2, 输出0;若s1 < s2, 输出一个负数。不要用strcmp函数。两个字符串用gets函数输入。输出的正数或负数的绝对值应是相比较的两 个... -
python怎样判断两个字符串是否相同?
2021-01-28 22:27:30python中,判断两个字符串是否相等或一样,可以使用==或者is来判断;判断不一样可以使用 is not。示例 使用注意事项1.有时候两个字符串打印出来看着一样,但是判断却是False?如果两个字符串末尾有其他符号,比如... -
C++比较两个字符串是否相等
2020-07-14 12:02:14今天在刷Leetcode的时候,遇到比较两个string是否相等的问题,在这里总结一下在C++里如果比较两个字符串是否相等(包含C风格字符串和string对象)。 一、C风格字符串 C风格字符串的比较使用的是strcmp()函数,原型... -
C语言:比较两个字符串是否相等
2018-09-24 13:02:231) 使用strcmp进行比较 下面通过一个例子进行演示: #include <stdio.h> #include <string.h> int main(void) { char* str1 = "abc"; char* str2 = "abc"; ... -
JS 比较两个字符串的相似度
2019-09-05 17:14:37function similar(s, t, f) { if (!s || !t) { return 0 } var l = s.length > t.length ? s.length : t.length var n = s.length var m = t.length var d = [] f = f || 3... -
比较两个字符串值是否相等的两种方法(含源码解析)
2019-09-12 15:21:08String的compareTo源码解析:比较是基于字符串中各个字符的Unicode值,先是获取两个字符串的长度(String内部维护着char类型的value[]作为字符串的容器),取两者长度的最小值作为循环遍历的终点,不断地比较两个... -
【Java】如何比较两个字符串
2019-09-11 08:08:34我们比较两个字符串时,通常会惯性的写成 Str1==Str2,这种写法,并不能比较两个字符串的值,它比较的是两个字符串的地址。 String name1 = "aaa" ; String name2 = "aaa" ; if(name1 == name2){ return true; }e... -
Java中比较两个字符串
2019-05-06 17:04:56方法:通过字符串函数ocmpareTo(String),compareTolgnoreCase(String)及compareTo(object string)来比较两个字符串,并返回字符串中的第一个字母ASC11的差值 public class StringCompareEmp { public static void ... -
两个字符串中含有几个相同字符的几种解法
2019-03-17 21:29:33最近为了暑期实习面试开始复习数据结构与算法,作为一个大三的软件工程的学生,在大三下学期才开始接触算法练习平台,真够不好意思的。 进入正题,题目如下: You’re given strings J representing the types of ... -
C语言:strcmp比较两个字符串是否相等
2018-10-29 12:58:54#include<... //比较两个字符串是否相等,(或者说前字符串比后字符串不同的地方大几) int My_strcmp( const char *str1,const char *str2) { int tmp=0; while((tmp=*str1-*st... -
将两个字符串合并成一个字符串(存在范围可自行调整)
2020-11-09 19:25:52#include<stdio.h> int main() ... //输入两个字符串 scanf("%s",&a); printf(“请输入第二个字符串:”); scanf("%s",&b); i=0; while(a[i]!=’\0’) //计算第一个字符串多少位 { i++; } j -
Java中如何比较两个字符串类型日期的大小
2020-07-22 19:26:34如何在后台判断两个字符串类型日期的大小 前段时间本人遇到了一个和活动时间有关的需求,需要判断该时间处于哪个时间段内。因为平时判断时间都是在数据库里进行的,对于代码判断日期不太熟悉,所以查看了一些资料,... -
比较两个字符串的大小
2020-05-02 13:31:56设计函数,比较两个字符串的大小。每个字符串长度不超过50。 输入要求 从键盘分别读入两个字符串,每个字符串以换行符结束。 输出要求 比较两个串的大小,输出相应的结果。 输入样例 Hello hi 输出样例 Hello < ... -
比较两个时间字符串的大小
2019-02-28 17:35:19有两个日期字符串,“2019-01-21”和“2019-02-12”,现在需要比较这两个字符串的大小。 比较简单的方法是可以使用String类中的compareTo()方法比较,例如: public class Test { public static void main... -
C++ 比较两个字符串或string是否相等[ strcmp() 和 compare() ]
2019-09-21 09:34:54注:转载请标明原文出处链接:... 1 如果要比较的对象是 char 字符串,则利用函数 strcmp(const char s1,const char s2) strcmp(const char s1,const char s2) 当 str1 < str2 时,返回为负数... -
C语言 —— 获取字符串中两个字符之间的的数据
2019-04-10 23:25:22问题描述:获取字符串中两个字符之间的数据。最近写SMTP代理,需要获取发送方与接收方的邮件名称。 字符串为 “MAIL FROM:<test1@163.com>\r\n” , 获取字符':'冒号和字符'\r'之间的值 <test1@163.com>... -
C语言中字符串比较
2020-11-02 13:18:19在单片机串口实现字符串命令解析这...=、==”,那么要比较两个字符串是否相等是不是直接用“==”比较就行了。下面就来看看这种方法行不行? 先看一个例子 void main( void ) { char s1[] = "abc"; char s2[] ...