equals 和 == 区别
1.equals 在 Object类比较的是地址值,但是大部分方法重写了 equals,重写后比较的是值是否相同
2."==" 比较的是地址值是否相同相同
public class JavaBean {
public String name;
public JavaBean(){}
public JavaBean(String name) {
this.name = name;
}
// Alt+InS idea 中快速生成代码快捷键
}
public void test1(){
JavaBean javaBean =new JavaBean();
JavaBean javaBean1 = javaBean;
JavaBean javaBean2 = new JavaBean("123");
JavaBean javaBean3 = new JavaBean("123");
System.out.println(javaBean.equals(javaBean1)); // true
System.out.println(javaBean2.equals(javaBean3)); // false,如果重写了 equals 方法,为 true
System.out.println(javaBean2==javaBean3); // false
System.out.println(javaBean2.name.equals(javaBean3)); // false
}
public void test2(){
String a = new String("123");
String b = new String("123");
System.out.println(a.equals(b)); // true
System.out.println(a==b); // false
String aa = "abc";
String bb = "abc";
System.out.println(aa.equals(bb)); // true
System.out.println(aa==bb); // true
}
try–catch–finally
1.不管程序是否出错,finally 都会执行,出错会跳转到 catch 中执行
2.当 return 在 try/catch 语句中时,返回的结果为 try/catch 中的结果,finally 中不参考
3.当 return 在 try–catch–finally 后时,返回的结果参考 finally
public int b(){
int i=0;
try {
i++;
System.out.println("1 i="+i);
System.out.println(1/0);
// return i;
}catch (Exception e){
i++;
System.out.println("2 i="+i);
throw new RuntimeException(e);
}finally {
i++;
System.out.println("3 i="+i);
}
System.out.println(i);
return i;
}
控制台:
1 i=1
2 i=2
3 i=3
Exception in thread "main" java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
没有这个错误
int b = Test.b();
System.out.println("4 i="+b);
public int b(){
int i=0;
try {
i++;
System.out.println("1 i="+i);
// System.out.println(1/0);
// return i;
}catch (Exception e){
i++;
System.out.println("2 i="+i);
throw new RuntimeException(e);
}finally {
i++;
System.out.println("3 i="+i);
}
System.out.println(i);
return i;
}
控制台
1 i=1
3 i=2
2
4 i=2
return 放到 try 里
public int b(){
int i=0;
try {
i++;
System.out.println("1 i="+i);
System.out.println(1/0);
return i;
}catch (Exception e){
i++;
System.out.println("2 i="+i);
throw new RuntimeException(e);
}finally {
i++;
System.out.println("3 i="+i);
}
// System.out.println(i);
// return i;
}
控制台
1 i=1
2 i=2
3 i=3
Exception in thread "main" java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
没有这个错误
int b = Test.b();
System.out.println("4 i="+b);
public int b(){
int i=0;
try {
i++;
System.out.println("1 i="+i);
// System.out.println(1/0);
return i;
}catch (Exception e){
i++;
System.out.println("2 i="+i);
throw new RuntimeException(e);
}finally {
i++;
System.out.println("3 i="+i);
}
// System.out.println(i);
// return i;
}
控制台
1 i=1
3 i=2
4 i=1
参考 https://www.cnblogs.com/oldthree3/p/9270541.html