本文目录一览:
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中字符串怎么比较3.0和3相等
java判断字符串是否相等的方法:
1、java中字符串的比较:==
我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题
example1:String a="abc";
String b="abc"
那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存
一份,所以a和b指向的是同一个对象;
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);
(1)对于==,如果作用于基本数据类型的变量(byte,short,char,int,long,float,double,boolean ),则直接比较其存储的"值"是否相等;如果作用于引用类型的变量(String),则比较的是所指向的对象的地址(即是否指向同一个对象)。
(2)equals方法是基类Object中的方法,因此对于所有的继承于Object的类都会有该方法。在Object类中,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。
(3)对于equals方法注意:equals方法不能作用于基本数据类型的变量。如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;而String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。其他的一些类诸如Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等
java中两个字符串如何比较大小?
int1 int2 long t1="= result 20131011"Integer;SimpleDateFormat("
有三种方法实现
第一种直接用字符串类的compareTo方法; t1; int yyyyMMdd" result小于0; ); nbsp.parseInt(t2);int int1-int2;Datenbsp; sdf;d1 SimpleDateFormat nbsp.getTime();int result sdf;注;Integer:result等于0,则t1=t2.compareTo(t2);t2; ;Date = d2 =nbsp: t2=" d1.getTime()-d2;=
第二种是把这个日期字符串转换成long;= nbsp.parse(t2); = nbsp;String t2:nbsp.parseInt(t1); result String int new ,则t1 sdf =nbsp,则t1
第三种是把日期字符串转换成整形int:result大于0.parse(t1);20131030" =nbsp
一种思路:用 SimpleDateFormat 来处理,可以转成long形式的,那是1970年1月1日起到现在的毫秒数。可以直接比大小了。另外一种思路:因为你这里是用的补全格式(7月写成了07),那么可以直接字面转了比较 public static void main(String[] _s) { String str1 = "2010-07-16 12:00:00"; long longstr1 = Long.valueOf(str1.replaceAll("[-\\s:]","")); System.out.println(longstr1); }这个结果是20100716120000,就这个意思,直接字面转成long形式后比。