java中String类学习 api所在软件包(java.lang.String)
一、java中equals和CompareTo的区别
1、== :基本数据类型都用这个比较,java中包含8种基本数据类型,分别是 boolean、byte、char、short、int、float、double、long
是变量值得比较,返回true和false
注意:String不是基本数据类型,它是个类
而对于下面的情况:
==操作符并不涉及对象内容的比较。若要对对象内容进行比较,则用equals. 如果 在本例中,a.equals(b)则返回是一个true值。总而言之,==是对对象地址的比较,而equals是对对象内容的比较。对于基本数据类型,一般用==,而对于字符串的比较,一般用equals
2、对于CompareTo().在api中,java.lang包下面的基本数据类型的封装类都提供了该方法,如Integer、Float、Byte、Short、Character等等 可以比较两个字符串并且得到顺序.
在包装类类型中,CompareTo是比较两个Character对象
在Booleanl中,是用boolean的实例与其他实例进行比较
在String中,则是按照字典顺序进行比较,返回的值是一个int类型
运行程序的结果是
false
true
s1 is equals s2
true
这里要说明一下,s1对象赋值给s1对象之后,s1和s2的引用其实是指向了内存中的同一个位置,所以在进行比较结果就是true
3、equals() 用于引用数据类型(除了上面的8个,都是引用数据类型,包括封装类,Object子类等), 比较是否指向相同的对象
例如 String str = "abc";
等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data);
就是str 指向了 new String(data) 这个对象. 如果再有其他变量也指向这个对象,他们比较的结果就返回true;
由于此方法在Object里, 所以它有很多重写, 具体要看说明;
另外``` equalsIgnoreCase()可以忽略大小写;
多看看底层源码的实现。有助于代码的提升