-
java mysql判断字符串相等_java如何判断字符串是否相等?
2021-02-03 19:00:37java如何判断字符串是否相等?下面本篇文章就来给大家介绍一下使用java判断字符串是否相等的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1、java中字符串的比较:==我们经常习惯性的写...java如何判断字符串是否相等?下面本篇文章就来给大家介绍一下使用java判断字符串是否相等的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
1、java中字符串的比较:==
我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题
example1:String a="abc";String b="abc"
那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存 一份,所以a和b指向的是同一个对象;【推荐学习:java课程】
example2:String a=new String("abc"); String b=new String("abc");
那么a==b将返回false,此时a和b指向不同的对象。
2、用equals方法比较的是字符串的内容是否相同
example:String a=new String("abc");
String b=new String("abc");
a.equals(b);
将返回true。
说明:字符串的判断有2种:
1、判断地址是否相等,用:==
2、判断值是否相等,用:equals方法
-
(Java)如何判断字符串是否相等以及比较字符串的大小
2018-09-27 13:23:04在Java中,可以使用“==”来进行判断字符串是否相等。 示例: String s1="Hello"; String s2="Hello"; //输出返回值 System.out.println(s1==s2); 这时,我们如果运行一下,会发现会输出...在Java中,经常需要比较两个字符串,这里总结一下。
1.判断字符串是否相等
在Java中,可以使用“==”来进行判断字符串是否相等。
示例:
String s1="Hello"; String s2="Hello"; //输出返回值 System.out.println(s1==s2);
这时,我们如果运行一下,会发现会输出“true”。
换一种赋值方式再试试。
String s1="Hello"; String s2=s1; //输出返回值 System.out.println(s1==s2);
这是,运行一下程序,输出的值为“true”。
但是我们知道,字符串的初始化有两种方式:直接等号赋值与用new初始化,直接等号赋值放入内存池,其它变量也可以引用;new初始化分配内存空间,不可引用;
因此,我们用new初始化的方式试一试。
String s1=new String("Hello"); String s2=new String("Hello"); //输出返回值 System.out.println(s1==s2);
这时,输出的结果会变成false。
为什么会有这样的结果呢?这和内存中的常量池有关。
常量池属于方法区的一部分,当运行到s1创建对象时,如果常量池中没有,就在常量池中创建一个对象”Hello”,第二次创建的时候,就直接使用,所以两次创建的对象其实是同一个对象,它们的地址值相等。而对于两个基本数据类型,“==”比较的是两个对象的值是否相等;而对于引用类型,“==”比较的是两个对象的地址是否相等。也就是说,对于引用类型,当两个对象的地址相等,即指向同一个地址时,才会相等。
因此前两次的结果都是false。
再回到第三次的比较的赋值语句,
String s1=new String("Hello"); String s2=new String("Hello");
上文中提到,new初始化分配内存空间,不可引用;也就是说,上面的“System s1=new String("Hello")”,相当于创建了两次对象,一次是在常量池中创建了对象”Hello”,一次是在堆内存中创建了对象s1。下一个语句也是同理。因此s1、s2的地址不一样,因此这输出false。所以使用“==”判断的时候需要注意的地方比较多。
那么想要毫无顾虑地判断引用类型是否相等该怎么办呢?这时候equals()方法就派上用场了。
为什么这么说呢?
这和equals()方法的重写有关。在equals()方法存在于Object类中,因为Object类是所有类的直接或间接父类,也就是说所有的类中的equals()方法都继承自Object类,而通过源码我们发现,Object类中equals()方法底层依赖的是==号,那么,在所有没有重写equals()方法的类中,调用equals()方法其实和使用==号的效果一样,也是比较的地址值,然而,Java提供的所有类中,绝大多数类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值,即比较两个对象的内容 。
因此,想要比较两个对象的值是否相等,可以通过equals()方法来完成。
示例:
string s1="Hello"; string s2="Hello"; //输出返回值 System.out.println(s1.equals(s2)); string s1="Hello"; string s2=s1; //输出返回值 System.out.println(s1.equals(s2)); string s1="Hello"; string s2="He"; //输出返回值 System.out.println(s1.equals(s2));
这时,因为前两个比较语句,s1和s2相等,因此会输出两个true,最后一个比较语句由于s1和s2不相等,因此会输出一个false。
2.比较字符串的大小
在Java中,我们用compareTo()方法来比较字符串的大小。该方法属于java.lang.String包下,是Java提供的一个字符串比较的方法。
CompareTo()返回值: int
它是先比较对应字符的大小(ASCII码顺序),返回值类型分别有三种,小于0,等于0,大于0, 1. 如果字符串相等返回值0; 2. 如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值前字符串的值小于后字符串,正值前字符串大于后字符串); 3. 如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。
语法示例:
String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdf"; String s4 = "1bcdf"; String s5 = "c"; System.out.println( s1.compareTo(s2) ); // -1 (前面相等,此时比较字符串的长度,s1长度小1,因此输出-1) System.out.println( s1.compareTo(s3) ); // -2(前面相等,此时比较字符串的长度,s1长度小2,因此输出-2) System.out.println( s1.compareTo(s4) ); // 48 (第一个字符不相等,此时比较第一个字符的ASCII码,"a"的ASCII码是97,"1"的的ASCII码是49,所以返回48) System.out.println( s1.compareTo(s5) ); // -2 (第一个字符不相等,此时比较第一个字符的ASCII码,"a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
以上就是Java中如何比较字符大小以及判断字符串是否相等的方法,如果大家发现了文章里的错误或者有更好的方法,欢迎留言评论,大家一起学习呀。
-
iOS: 如何判断字符串是否相等?
2016-02-15 22:20:25在 iOS 开发中, 有时需要判断两个字符串是否相等。 对于初学者来说, 由于概念不清楚,经常出现一些诡异的错误。 这里给出代码示例: NSString *strA = [NSString stringWithFormat:@"a"];...在 iOS 开发中, 有时需要判断两个字符串是否相等。 对于初学者来说, 由于概念不清楚,经常出现一些诡异的错误。这里给出代码示例:NSString *strA = [NSString stringWithFormat:@"a"];
NSString *strB = [NSString stringWithFormat:@"b"];
if( strA == strB)
NSLog(@"A is equal to B");
else
NSLog(@"A is not equal to B");
运行这段code, 在console 上的输出是: A is not equal to B
代码做些改动, 将 strA 与strB 设为相等。
NSString *strA = [NSString stringWithFormat:@"a"];
NSString *strB = [NSString stringWithFormat:@"a"];
if( strA == strB)
NSLog(@"A is equal to B");
else
NSLog(@"A is not equal to B");
运行这段code ,你会发现, 在console上的输出仍然是 A is not equal to B 。
这时候,你开始产生怀疑, 这是为什么呢 ?
问题出在 字符串对比的语句上。
if ( strA == strB) // 这个strA, strB 是指针, 虽然字符串的内容是相同的, 但指向字符串的 指针肯定是不同的, 也不能相同啊。 (为了更好地理解字符串,需要弄清楚 指针的概念。 内存的分配。 )
//if( strA == strB)
if ([strA isEqualToString:strB])
iOS SDK 本身 也提供了 字符串对比的方法: isEqualToString:
用这个字符串方法时, 要注意的事项: if 的后面必须 是一对括号。既然 isEqualToString: 是一个method, method 的使用 都是通过 中括号 来完成的。
特别注意的是: 在 iOS 中,既有 (... ), 也有 [ ... ] , 二者是有差别的。 在使用时,要特别注意。
-
java c 判断字符串相等_java判断字符串相等,如何判断两个字符串是否一样?
2021-03-04 06:59:09java如何判断字符串是否相等呢?有什么方法?话不多说,请一起通过下面的文章内容来了解一下吧,希望可以对你有所帮助。总的来说,可以分成两种,一种是判断地址是否相等-==,第二种是判断值是否相等-equals。首先,...java如何判断字符串是否相等呢?有什么方法?话不多说,请一起通过下面的文章内容来了解一下吧,希望可以对你有所帮助。
总的来说,可以分成两种,一种是判断地址是否相等-==,第二种是判断值是否相等-equals。
首先,Object类作为所有类的超类。
Object类的equals方法是直接比较地址。
源码:public boolean equals(Object obj)
{
return this == obj;
}
String类的equals方法源码:
public boolean equals(Object anObject)
{
if (this == anObject)
{ //比较地址,如果地址相等,直接返回true
return true;
}
if (anObject instanceof String)
{ //如果地址不相等,那就比较类型,如果类型不相等,直接返回false
String anotherString = (String) anObject; //由于是String类的比较,所以要把对象强转为String类
int n = value.length; //记录当前对象的字符长度
if (n == anotherString.value.length)
{ //判断当前对象的字符串长度和传入的字符串长度是否一样,不一样,直接返回false,如果一样,接着往下比较
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0)
{ //将2个字符数组的循环对比
if (v1[i] != v2[i]) //将字符数组的字符进行对比
return false; //如果出现一个字符不同,马上返回false
i++
}
return true;
}
}
return false;
}
String类的equals比较内容相同思路。
判断地址是不是相等的,相等,返回true;比较类型是不是一样的,不一样,返回false;把传入
的对象强转为String,长度比较,长度不相等,返回false,长度相等,循环比较字符数组的元素
在有一元素比较内容不相同,立即返回false;两个字符数组循环比较所有元素,没有内容不相同的元素,返回true;
测试代码:public class TestString
{
public static void main(String[] args)
{
String str = "abc";
String str2 = new String("abc");
System.out.println("两个对象的内存地址是否相等:" + (str == str2)); //false
/**比较对应位置上的字符是否相等,如果所有的对象位置上的字符均相等,true,否则返回false*/
System.out.println("两个对象的内容是否相等:" + (str.equals(str2)));
//以下结果为 false
/**因为Person对象 instanceof String 的结果为false ,直接返回false*/
System.out.println("String对象与Person对象的内容是否相等:" + (str.equals(new Person())));
}
}
class Person
{}
以上内容仅供参考。
java判断字符串相等的内容就给你分享到这里了,更多java入门知识,请继续关注奇Q工具网来了解吧。
推荐阅读:
-
如何多次判断字符串是否相等?
2020-11-18 23:25:00。ryrtyrtyryyrtyrtyrtyrtytr2424234234234234324234</p> -
python中如何判断两个字符串是否相等_python怎样判断两个字符串是否相同
2021-02-09 19:54:55原标题:python怎样判断两个字符串是否相同 python中,判断两个字符串是否相等或一样,可以使用==或者is来判断;判断不一样可以使用 is not。示例 使用注意事项1.有时候两个字符串打印出来看着一样,但是判断却是... -
JAVA如何判断两个字符串是否相等
2019-08-30 15:05:50JAVA如何判断两个字符串是否相等 ==比较引用,equals 比较值 1、java中字符串的比较:== 我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题 example1: String a="abc";String b="abc" ... -
java if语句里面的变量赋值_java中如何使用if语句判断字符串是否相等
2021-02-27 21:19:57首先分析使用 ==(注意:Java中 = 是赋值运算符,== 是比较是否相等) 和 equals()方法 来比较两个字符串相等的区别:==比较的是两个字符串的地址是否为相等(同一个地址),equals()方法比较的是两个字符串对象的内容... -
如何判断两个字符串是否相等
2020-07-16 17:02:141、java中字符串的比较是==比较引用,equals 比较值 so我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题 example1: String a="abc";String b="abc", 那么a==b将返回true。因为在java中字符... -
【转载】JAVA如何判断两个字符串是否相等
2021-03-05 21:19:32阅读请前往原地址:JAVA如何判断两个字符串是否相等 ==比较引用,equals 比较值 java中字符串的比较:== 我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题 example1: String a="abc";String b... -
在java代码中如何判断两个字符串是否相等
2020-11-12 15:49:32=”来判断两个字符串bai是否相等。因为String是引用类型,而du不是基本数据类zhi型。 故它们的比较是使用地址和值 来比较,因为它们是不同的对象,有不同的地址。故str1str2永远是false,而str1!=str2永远都是true。... -
JAVA如何判断两个字符串是否相等 == VS equals
2019-05-26 22:37:191、java中字符串的比较:== 我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题 example1: String a="abc";...因为在java中字符串的值是不可改变的,相同的字符串在内存中只... -
MATLAB如何判断字符串相等-strcmp函数
2019-04-25 20:28:55strcmp 比较字符串 语法: tf = strcmp(s1,s2) 说明: tf= strcmp(s1,s2), 比较 s1 和 s2,如果二者相同,则返回 1 (true),否则返回 0 (false)。如果文本的大小和内容相同,则...实例1:比较两个字符串是否相等 ... -
C语言判断两个lpcwstr字符串是否相等的方法
2014-04-15 14:45:48C语言判断两个lpcwstr字符串是否相等的方法1、使用strcmp判断两个lpcwstr字符串是否相等,如果等于0就相等strcmp((_bstr_t)s1,(_bstr_t)s2);2、C++ 如何比较两个char*是否相等int lstrcmp( LPCTSTR lpString1,... -
PHP 判断两个字符串是否相等
2019-12-20 08:21:25这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、... -
C++中如何判断两个字符串数组是否相等
2021-01-19 12:35:33C++中如何判断两个字符串数组是否相等 使用函数strcmp(s1,s2) 当s<s2 返回负值 当s=s2 返回0 当s>s2返回正值 #include <iostream> #include <string.h> using namespace std; int main() { ... -
如何判断两个带通配符的字符串是否相等
2012-07-29 11:52:32通配符包括:*(表示0-N个字符),?(表示一个字符) 比如:*abcd == ?abcd* -
2014-03-31工作日志:如何判断两个字符串是否相等且不区分大小写?
2014-03-31 21:03:00#include #include int main() { char *a="ADF",*b="adf";...strcmpi用于不区分大小写的字符串的比较,若比较两个字符串是否相等,且不区分大小写,可以考虑用它。若a指向”adf“,b指向”bdf“,则stricmp返