java比较
A. 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。
第二种情况不是因为比较有与第一种有差异,而是因为声明有差异,第二种声明方法在声明的时候有堆或堆栈 共用的现象,也就是说 在声明的时候如果如果声明为类属性他会检查在堆栈中有没有与现在声明的是相同结构的字符串。如果有就直接将地址指向已有内存地址。声明在方法内部的局部变量原理一样只不过他是堆栈共享。
B. java怎么比较两个对象是否相等
一、java中的基本数据类型(int、double、short、long、byte、float、boolean、char)判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false。
二、但是java中的引用类型的对象比较变态,假设有两个引用对象obj1,obj2,
obj1==obj2 判断是obj1,obj2这两个引用变量是否相等,即它们所指向的对象是否为同一个对象。言外之意就是要求两个变量所指内存地址相等的时候,才能返回true,每个对象都有自己的一块内存,因此必须指向同一个对象才返回ture。
三、如果想要自定义两个对象(不是一个对象,即这两个对象分别有自己的一块内存)是否相等的规则,那么必须在对象的类定义中重写equals()方法,如果不重写equals()方法的话,默认的比较方式是比较两个对象是否为同一个对象。
在Java API中,有些类重写了equals()方法,它们的比较规则是:当且仅当该equals方法参数不是 null,两个变量的类型、内容都相同,则比较结果为true。这些类包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等,太多太多了,但是常见的就这些了,具体可以查看API中类的equals()方法,就知道了。
C. JAVA怎么比较两个数的大小
1、由于设置delimiter为,所以输入的时候每个后面都有一个,即单输入4,5是不行的,需要输入4,5,才会有结果。
2、可以直接使用三目运算符,如c=a>b?a:b;
D. java如何比较字符内容是否相同
/*
最笨的方法,依次遍历比较
*/
importjava.util.Scanner;
publicclassstrcompare{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
Stringa=null;
Stringb=null;
while(true){
System.out.println("pleaseinputtwoString:");
a=sc.next();
b=sc.next();
if(cmp(a,b)){
System.out.println("same");
}else{
System.out.println("Nosame");
}
}
}
publicstaticbooleancmp(Stringa,Stringb){
booleanflag=false;
if(a.length()!=b.length()){
flag=false;
}else{
char[]strA=a.toCharArray();
char[]strB=b.toCharArray();
intlenB=strB.length;
for(inti=0;i<strA.length;i++){
for(intj=0;j<strB.length;j++){
if(strA[i]==strB[j])
{
strB[j]='';
lenB--;
break;
}
}
}
if(lenB==0)
flag=true;
else
flag=false;
}
returnflag;
}
}
E. java字母怎么比较大小
使用 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)
F. java 比较中文是否相同
java判断是否为中文,其实比较中文的unicode编码,在中文的范围内的就是中文,示例如下:
(Stringstr){
booleantemp=false;
Patternp=Pattern.compile("[u4e00-u9fa5]");//判断该字符串是否在中文范围内
Matcherm=p.matcher(str);
if(m.find()){
temp=true;//若为true,则是中文
}
returntemp;
}
G. java 关于数字的==比较
JVM(java虚拟机)会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时,在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128,所以地址不一样。
H. JAVA如何进行字符串比较
1、首先,随便创建一个有main方法的类。
I. JAVA比较数值的大小
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
intnum;
intmax=0;
intmin=0;
while(true){
System.out.println("请输入一个整数“输入0时结束”:");
num=input.nextInt();
if(num==0){
break;
}
if(num>max){
max=num;
}
if(num<min){
min=num;
}
}
System.out.print("最大值为:"+max+"最小值为:"+min);
}