标签:其他 cycle tab 截取 and 本质 根据 ring order
int i=1; System.out.println(i++);//输出:1 即i++表示先获取变量值,再做加法,即本行代码获取结果为1,i的最终结果为2 System.out.println(++i);//输出:3 即++i表示先做加法,再获取变量值,即本行代码获取结果为3,2+1=3 System.out.println(i);//输出:3 i值为3 System.out.println("-------------"); i=1;//重置 System.out.println(++i);//输出:2 i先做加法,1+1=2 System.out.println(i++);//输出:2 先获取值再加,即i=2 System.out.println(i);//输出:2
@Test public void cycleTest(){ for (int i = 0; i < 5; i++) { System.out.print(i); } System.out.println("\n-------"); for (int i = 0; i < 5; ++i) { System.out.print(i); } //结果一样,原因是因为无论i++,++i,只不过取值结果先后不一样,但是i本身加法后结果值一样 } 01234 ------- 01234
public static void equals(){ String s1=new String("123"); String s2=new String("123"); System.out.println(s1==s2);//false System.out.println(s1.equals(s2));//true System.out.println("s1: "+s1.hashCode()+" ,s2: "+s2.hashCode());//s1: 48690 ,s2: 48690 Integer it1=new Integer(1); Integer it2=new Integer(1); System.out.println(it1==it2);//false System.out.println(it1.equals(it2));//true System.out.println("it1: "+it1.hashCode()+" ,it2: "+it2.hashCode());//it1: 1 ,it2: 1 Long l1=new Long(1); Long l2=new Long(1); System.out.println( l1==l2);//false System.out.println(l1.equals(l2));//true System.out.println("l1: "+l1.hashCode()+" ,l2: "+l2.hashCode());//l1: 1 ,l2: 1 HandlerTest ht1=new HandlerTest(1); HandlerTest ht2=new HandlerTest(1); System.out.println( ht1==ht2);//false System.out.println(ht1.equals(ht2));//false System.out.println("ht1: "+ht1.hashCode()+" ,ht2: "+ht2.hashCode());//ht1: 2131463427 ,ht2: 1331101982 // 包装类和String都是根据值生成hashCode,通过equals可以比较。 }
在包装类和String虽然值相同,但对象不同,所以针对对象比较不能使用==,可以通过equals方法进行对比。
class HandlerTest{ int i; String uniqueRule; public HandlerTest(int i){ this.i=i; } public HandlerTest(String uniqueRule){ this.uniqueRule=uniqueRule; } //覆写equals方法,指定uniqueRule的值作为比较对象,当uniqueRule值相等的对象,equals比较相等 @Override public boolean equals(Object obj) { return obj instanceof HandlerTest &&uniqueRule!=null&& uniqueRule.equals(((HandlerTest)obj).uniqueRule); } }
运行:
@Test public void equalsOverride(){ HandlerTest ht1=new HandlerTest("hello"); HandlerTest ht2=new HandlerTest("hello"); System.out.println( ht1==ht2);//false System.out.println(ht1.equals(ht2));//true } 结果: false true
标签:其他 cycle tab 截取 and 本质 根据 ring order
原文地址:https://www.cnblogs.com/likejiu/p/9867036.html