「java比较字符串内容」java字符串内容比较
今天给各位分享java比较字符串内容的知识,其中也会对java字符串内容比较进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java如何比较字符串
"=="和equals方法究竟有什么区别?(这是我的个人总结,很详细)
答:==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
例:
public class compared {
public static void main(String[] args) {
String a = new String("info");
String b = new String("info");
//a和b是两个不同的变量,而info是这两个变量所只对象内存中所存放的值
String c = "info"; //这里的info是变量c内存中存储的值
String d = "info";
int e = 1;
int f = 1;
System.out.println(a.equals(b)); //true 比较的是a和b两个对象中的内容是否一样
System.out.println(a == b); //false
System.out.println("-----------------");
System.out.println(c.equals(d)); //true
System.out.println(c == d); //true
System.out.println("-----------------");
System.out.println(e == f); //true
System.out.println("-----------------");
T t1 = new T(3,"aaa");
T t2 = new T(3,"bbb");
T t3 = new T(3,"aaa");
System.out.println(t1.equals(t2)); //false
System.out.println(t1.equals(t3)); //false
//为什么都是false,因为我们没有自定义equals方法,所以默认使用了Object的equals方法,而Object方法内部是使用==来比较的,因此此时你比较的永远都是两个变量是否指向同一对象,而这时都为新对象,所以为false。
}
}
疑问:String str = "...";啥意思?
java中的字符串比较方法
java中的字符串比较方法:
1)string1.equals(string2)
2) str1==str2 。
java中字符串的比较是==比较引用,equals 比较值的做法。但是不同的声明方法字符串的比较结果也是不同的。
例如: String str1=new String("a");
String str2=new String("a");
str1==str2 输出false
str1.equals(str2) 输出true
而如果这样声明
String str1="a";
String str2="a";
str1==str2 输出true
str1.equals(str2) 输出true
这是因为 equals 方法本来也是比较引用的字符串类在实现的时候重写了该方法。
第一种声明方法等于是声明了两个对象,用’==‘比较是时候比较的是引用输出的是false 由于他们的值相同用equals的时候就比较的是值了,输出true。
第二种情况不是因为比较有与第一种有差异,而是因为声明有差异,第二种声明方法在声明的时候有堆或堆栈 共用的现象,也就是说 在声明的时候如果如果声明为类属性他会检查在堆栈中有没有与现在声明的是相同结构的字符串。如果有就直接将地址指向已有内存地址。声明在方法内部的局部变量原理一样只不过他是堆栈共享。
java中两个字符串如何比较大小
有三种方法实现
第一种直接用字符串类的compareTo方法:
String t1="20131011";
String t2="20131030";
int result = t1.compareTo(t2);
第二种是把这个日期字符串转换成long:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date d1 = sdf.parse(t1);
Date d2 = sdf.parse(t2);
long result = d1.getTime()-d2.getTime();
第三种是把日期字符串转换成整形int:
int int1 = Integer.parseInt(t1);
int int2 = Integer.parseInt(t2);
int result = int1-int2;
注:result大于0,则t1t2;
result等于0,则t1=t2;
result小于0,则t1t2;
字符串比较java限制
比较两个字符串变量内容是否相同。
因为字符串在程序设计中是不可变的,但同时又会频繁地使用,所以java虚拟机为了提高效率并节约内存,对具有相同字符串序列的符串直接使用同一个实例。字符串比较,如果使用“==”则是比较两个变量是否指向同一个对象,但是不会告诉你内容是否相同。而equals方法可以比较两个字符串变量内容是否相同。
在java中如何对比输入的字符串
java中字符串的比较用的是equals方法。
代码修改如下:
import java.io.*;
class GameHelper {
public String getUserInput(String prompt) {
String inputLine = null;
System.out.print(prompt + " ");
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
inputLine = is.readLine();
if (inputLine.length() == 0)
return null;
} catch (Exception e) {
System.out.println("IOException: " + e);
}
return inputLine;
}
}
public class Demo {
public static void main (String[] arges) {
GameHelper helper = new GameHelper();
String input = helper.getUserInput("entrer a command");
if ( input.equals("-yes"))
System.out.println("yes");
else System.out.println("no");
}
}
只需将input == "-yes"改为input.equals("-yes")就行了,字符串型的比较不是用==,是用equals,int型和float型等的比较才能使用==来比较。
java比较字符串内容的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java字符串内容比较、java比较字符串内容的信息别忘了在本站进行查找喔。