java中== 与equals的区别
public class test1
{
public static void main(String[] args){
//== 与equals的区别
//1.null的比较:只能用==
System.out.println("1.null的比较:只能用==");
Object o1=null,o2=null;
System.out.println(null==null&&o1==null&&o1==o2);//true
//System.out.println(o1.equals(o2)) //抛出异常
//2.基本类型的比较:只能用==
System.out.println("\n\n2.基本类型的比较:只能用==");
double i=2.4,j=2.4;
System.out.println(i==j);//true
//3.引用的比较:当子类重写过equals之后, ==与equals的比较效果并不同,e.g String
//==相当于最原始的equals
/*根类Object有如下代码
* public boolean equals(Object obj) {
* return (this == obj);
* }
* */
System.out.println("\n\n3.引用的比较:" +
"当子类重写过equals之后, ==与equals的比较效果并不同,e.g String");
String str1=new String("string"),str2=new String("string"),str3=str1;
System.out.println(str3==str1&&str3.equals(str1));//指向同一对象,true
System.out.println(str1==str2);//并不指向同一个对象,false
System.out.println(str1.equals(str2));//由于equals被重写了,
//只比较 他们的值,所以本例返回true
//4.注意的地方,new String() 与重载符号=的区别
System.out.println("\n\n4.注意的地方,new String() 与重载符号=的区别");
System.out.println("string"=="string");//返回true,说明指向的是同一个对象
System.out.println(new String("string")=="string");//返回false
}
}
相关文档:
java写文件乱码
StringBuffer sb = new StringBuffer();
sb.append("<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"b5d6e6\"");
sb.append("<tr>");
sb.append("<td bgcolor=\"#FFFFFE\" height=\"42\" colspan=\""+ (jsd ......
设计模式
一个程序员对设计模式的理解:
“不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂&rdq ......
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaBasic {
public static void main(String[] args){
StringBuffer sd = new StringBuffer();
String hhhString="adlkll";
&nbs ......
1.
public class EasyError1 {
class Student {
private String name;
public String getName() {
......